声明:文章是根据疯狂java视频学习;
一:web service 基本理论
解决不同平台,不同语言编写应用之间的相互调用;
解决远程的调用;
实际中的应用---》》》
公司的新旧系统的整合;不同公司之间的业务往来等等;
二:cxf框架
cxf 是由xfire(web service框架)和celtrix(esb框架-)组成
其中ESB 是---》》 SOA面向服务的架构---》》所有service服务(组件)---即插即用;
IBM 提倡的SOA架构 希望 --》以组装电脑的方式来开发软件;;
1:各种提供服务的组件,(web service;
2:企业服务总线(Enterprise Service Bus --------Esb)
三:准备 jdk--》1.7本人的
下载 apache-cxf-2.4.1 --》http://download.csdn.net/download/brianyeye/4375373
解压---》》
解压后的文件夹说明;---》Docs文件下是qpi文档;
配置本机的环境变量,只需要配置path即可;加入--》解压地址\apache-cxf-2.4.1\bin;
黑窗口运行--wsdl2java
说明配置成功--
四:建立服务端--》新建java项目
导入jar :apache-cxf-2.4.1\lib下
ws包下是接口与实现类;----》》
@WebService//java提供 javax.jws.WebService;
public interface HelloWord {
public String sayHi(String name);
}
//实现类
实现上面的接口同样@webservice ;endpointInterface=“指定实现接口的路径”
serviceName=“起个名字可以和类名相同”; 还有其他属性参照java-ee API 文档;
@WebService(endpointInterface="com.ws.HelloWord",
serviceName="HelloWordImpl")
public class HelloWordImpl implements HelloWord {
public String sayHi(String name) {
// TODO Auto-generated method stub
return name+"good"+"time--:"+new Date();
}
}
fb包下--》
public class ServiceTest {
//使用Endpoint的publish方法发布服务;
// Endpoint.publish("服务地址(就是Ip)","服务的提供者 就是webservice的对象");
public static void main(String[] args) {
HelloWord hw= new HelloWordImpl();
Endpoint.publish("http://本机ip/test",hw);//test是服务的名字随便起;
System.out.println("good nice");
}
}
运行---》 tomcat访问http://本机ip/test?wsdl
说明成功;
其中wsdl --》web webservice definition language webservice 的描述:描述这个服务有哪些方法可以被调用;任何语言实现web service 都需要提供并 暴露wdsl文档;
五:--建立客户端--cxfwsclient
src下无任何文件---》小黑窗进入工作空间cxfwsclient的src下运行
wsdl2java http://本机ip/test?wsdl 注意服务端必须在启动--》cxfwsclient的src会生成以下
public static void main(String[] args) {
//该类的实例当成工厂来使用;
HelloWordImpl factory = new HelloWordImpl();
//这个HelloWord 是客户端的 但是和服务端有相同的方法;
// 返回的只是远程的web service的代理
HelloWord hw = factory.getHelloWordImplPort();
String sayHi = hw.sayHi("孙悟空");
System.out.println(sayHi);
}
调用成功--》