Web Service学习-CXF开发Web Service实例demo(一)
Web Service是什么?
Web Service不是框架。更甚至不是一种技术。
而是一种跨平台,跨语言的规范
Web Service解决什么问题:
为了解决不同平台,不同语言所编写的应用之间怎样调用问题。比如。有一个C语言写的程序。它想去调用java语言写的某个方法。
集中解决:1,远程调用 2。跨平台调用 3,跨语言调用
实际应用:
1。同一个公司的新,旧系统的整合。Linux上的java应用,去调用windows平台的C应用
2,不同公司的业务整合。业务整合就带来不同公司的系统整合。不同公司的系统可能存在平台不同,语言不同的问题
3,内容聚合。一个应用,比方须要提供,天气预报,股票行情,黄金行情等。
CXF与Web Service的关系
CXF是apache旗下的开源框架,由Celtix+ XFire这两门经典的框架合成。是一套很流行的web service框架。
CXF方式实现Web Service服务demo
1,配置环境变量
在CLASSPATH中加入E:\apache-cxf-2.6.2\lib
新建CXF_HOMEE:\apache-cxf-2.6.2
在PATH中加入 %CXF_HOME%\bin
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
2。使用CXF开发Web Service开发server端
整个项目的文件夹结构(普通java项目):
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
接口:
package com.tgb.service; import javax.jws.WebService; @WebService
public interface HelloWorld{ public String sayHi(String name); }
实现类:
package com.tgb.service.impl; import java.util.Date; import javax.jws.WebService; import com.tgb.service.HelloWorld; @WebService(endpointInterface="com.tgb.service.HelloWorld",serviceName="HelloWorldImpl")
public class HelloWorldImpl implements HelloWorld{ public String sayHi(String name) { return name+"您好! 如今时间为:"+new Date();
} }
測试client:
package com.tgb.client; import javax.xml.ws.Endpoint; import com.tgb.service.HelloWorld;
import com.tgb.service.impl.HelloWorldImpl; public class ServerMain { public static void main(String[] args){ HelloWorld hw=new HelloWorldImpl();
//调用endpoint的publish方法,来公布web service
Endpoint.publish("http://192.168.24.215/hjy",hw);
System.out.println("Web Service暴露成功");
}
}
启动程序:
查看wsdl
3,使用CXF开发WebServiceclient
运行例如以下命令(找到webService的client的工作空间运行)
刷新client项目,可看到例如以下生成的代码:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
编写client调用代码:
package hjy; import com.tgb.service.HelloWorld;
import com.tgb.service.impl.HelloWorldImpl; public class ClientMain { public static void main(String[] args){
HelloWorldImpl factory=new HelloWorldImpl();
//此处返回的仅仅是远程Web Service的代理
HelloWorld hw=factory.getHelloWorldImplPort();
System.out.println(hw.sayHi("hejingyuan"));
}
}
运行结果:
hejingyuan您好!如今时间为:TueJul 28 14:09:07 CST 2015
总结:
使用CXF开发Web Service共同拥有例如以下几个步骤:
1,server端
(1)开发一个Web Service业务接口。
该接口要用@WebService修饰
(2)开发一个Web Service业务实现类。该实现类也须要用@WebService修饰
(3)公布Web Service
2,client
(1)调用CXF提供的wsdl2java工具,依据WSDL文档生成对应的java代码。
WSDL-Web Service Definition Language
不论什么语言实现了Web Service,都须要提供,并暴露WSDL文档
(2)找到wsdl2java所生成类中,一个继承了Service的类
该类的实例可当成工厂来使用
(3)调用Service子类的实例的getXxxPort方法。返回远程Web Service的代理
Web Service学习-CXF开发Web Service实例demo(一)的更多相关文章
- Web Service学习-CXF开发Web Service的权限控制(二)
Web Service怎样进行权限控制? 解决思路:server端要求input消息总是携带实username.password信息,假设没实username和password信息.直接拒绝调用 解决 ...
- 使用CXF开发Web Service服务
1.使用CXF开发Web Service服务端 1.1 开发一个Web Service业务接口,该接口要用@WebService修饰 (1)创建一个Java项目MyServer (2)在MyServe ...
- Web Service学习之一:Web Service原理
一.定义 Web Service 不是框架也不是技术 而是解决远程调用.跨平台调用.跨语言调用问题的一种规范. 二.应用1.同一个公司新.旧系统的整合:比如CRM系统与OA.客服系统相互调用2.不同公 ...
- Web安全学习笔记之DES算法实例详解
转自http://www.hankcs.com/security/des-algorithm-illustrated.html 译自J. Orlin Grabbe的名作<DES Algorith ...
- CTFHub Web题学习笔记(Web前置技能+信息泄露题解writeup)
今天CTFHub正式上线了,https://www.ctfhub.com/#/index,之前有看到这个平台,不过没在上面做题,技能树还是很新颖的,不足的是有的方向的题目还没有题目,CTF比赛时间显示 ...
- Apache CXF实现Web Service(5)—— GZIP使用
Apache CXF实现Web Service(5)-- GZIP使用 参考来源: CXF WebService整合Spring Apache CXF实现Web Service(1)--不借助重量级W ...
- Web Service--第一次接触web service
Web Service 首发于开源中国 1. 背景 中国移动短信网关需求,要能够发送短信.开发材料只有一个短信发送配置:包括ID,password,code,url.一个jar包还有一个老旧的html ...
- 使用CXF开发简单的Web Service-HelloWorld(二)
上篇博文我们介绍了Web Service的基本概念,了解它的基本概念之后,我们这篇博文介绍一个开源的WebService框架-Apache CXF,并实现一个HelloWorld实例. 一.开始之前 ...
- CXF开发WebService
CXF开发Web Service 参考链接 使用 spring 框架来集成 Web Services 开发 浏览器调用接口 大概这样, 没成功 加@WebMethod(action="get ...
随机推荐
- Android ADB 常用命令
Android ADB 常用命令 泛原罪 2016.09.21 00:02* 字数 605 阅读 2912评论 0喜欢 1 [TOC] adb logcat 查看日志 详细内容可参见 ADB Usag ...
- nyoj--523--亡命逃窜(BFS水题)
亡命逃窜 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧.不过英雄不是这么好当的.这个可怜的娃被魔 ...
- The Triangle--nyoj 18
The Triangle 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure ...
- Quartz实例:quartz定时任务代码示例
转自:http://www.blogchong.com/post/96.html quartz定时任务调度框架,使用实例. Job类://即实际调度任务实现 . package net.csdn.ed ...
- php 日期格式化
date('Y-m-d H:i:s',time()); 2014-09-01 05:06:01 date(' y-n-j G:i:s',time()); 14-9-1 5:06:01 mktime(h ...
- LINUX/UNIX找回删除的文件
当Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹.管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志.有时可以通过lsof来恢复这些 ...
- 44.Qt通过子类化qstyle实现自定义外观
main.cpp #include <QtGui> #include "brozedialog.h" #include "bronzestyle.h" ...
- LeetCode Weekly Contest 27
1. 557. Reverse Words in a String III 分割字符串,翻转. class Solution { public: string reverseWords(string ...
- Map初始化
转载至:http://blog.csdn.net/dujianxiong/article/details/54849079 第一种方法:static块初始化 public class Demo{ pr ...
- 问题集锦 ~ CSS
#button标签点击后出现点边框 input {outline: none;} button::-moz-focus-inner {border: none;}