声明:此博客为本人的学习笔记,内容有待整理。偶然看到的网友不要以此作为开发依据,技术大牛直接绕过!
=========================================
开发WebService服务端
CXF内置了一个Jetty Web服务器
每个WebService组件需要2个部分:接口和实现类
1)开发一个WebService业务接口
接口需要用@WebService修饰
2)开发一个WebService实现类
实现类也要用@WebService修饰,必须添加参数
比如@WebService(endPointInterface="com.spc.cxf.ws.HelloWord",)
3)发布接口,供远程客户端调用
创建类,在main方法中调用Endpoint.publish()方法
例如:
Endpoint.publish(address);
添加jar包:
geronimo-servlet
jetty-http
commons-log
cxf-core
wsdl4j
sxmlschema-core
==========================================
开发WebService客户端
1)使用CXF提供的wsdl2java工具,从wsdl生成客户端的Java代码
2)在客户端代码中,找到一个继承了Service的类。
该类的实例可以当成工厂来使用
3)调用Service子类实例的getXxxPort()方法,返回远程WebService的代理。
===========================================
===========================================
形参、返回值
1、当形参、返回值的类型是String、基本数据类型时,CXF肯定可以轻松的处理。
2、当形参、返回值的类型是JavaBean形式的复合类,List集合,数组等形式,CXF能处理。
3、对于Map、非JavaBean式的复合类,CXF处理不了。
==============================================
XML里的两个属性
targetNamespace—相当于java语言的package
xmlns—相当于Java语言的import
==============================================
WSDL文档
1、Web Service接口
2、Web Service实现
<wsdl:definitions name="" targerNamespace="">
<wsdl:types>
</wsdl:types>
<wsdl:message name="">
</wsdl:message>
<wsdl:portType name=""></wsdl:portType>
</wsd:definitionsl>
1)types元素内容就是Schema文档
2)2N个message元素
3)portType,接口中定义的方法(个数)
==============================================
WebService的三个技术基础
1、WSDL
Web Service Definition Language
2、SOAP
3、UDDI
一次Web Service的调用,不是方法的调用,而是发送SOAP消息(即是XML文档片段)
对于sayHello操作来说,
传入的消息,是sayHello元素
<sayHello>
<arg0>字符串</arg0>
</sayHello>
传出的消息,是sayHelloResponse元素
<sayHelloResponse>
<return>字符串</return>
</sayHelloResponse>