CXF WebService
来源:互联网 发布:js单选框点击事件 编辑:程序博客网 时间:2024/05/02 01:15
有两种方式用 CXF 写 WebService
1、JAVA FIRST
即先写java类,然后通过javax.ws包的注解将java类发布为WebService
2、WSDL FIRST
先写WSDL文件描述,然后用CXF的wsdl2java工具生成WebService的java类,最后加入业务逻辑
javax.xml.ws 包
javax.xml.ws包在JAVA 6中被正式引入到J2SE版本中,在JAVA5的时候,还是作为J2EE中的内容。
javax.xml.ws被包含在CXF的geronimo-jaxws_2.1_spec-1.0.jar包中
1、该包中的 javax.xml.ws.BindingType 注解可以用来配置WSDL文件中 <wsdl:binding>部分的<soap:binding>,BindingType 可选值有以下几种:SOAPBinding.SOAP11HTTP_BINDING, SOAPBinding.SOAP12HTTP_BINDING, HTTPBinding.HTTP_BINDING
当 BindingType 的值为 SOAPBinding.SOAP12HTTP_BINDING 时,生成的WSDL中<wsdl:binding>的内容如下:<wsdl:binding ... ><soap12:binding ...>
BindingType 用来修饰 WebService接口的实现类
2、javax.jws包
javax.jws包要注意以下注解
1、WebMethod 用来注解WebService接口要向外公开的方法。
只有被标注为 WebMethod 的方法,才会公开给外部访问。
2、WebParam 用来注解上述所讲的方法的参数,该注解的 name 属性对应于WSDL中相应方法的参数的name属性
WebParam.Mode 属性用来指定?
3、WebResult 用来注解上述所描述的方法的返回值,该注解的 name 属性对应于WSDL中相应方法返回值的name属性
4、WebService 用来对类和接口进行注解。当接口和其实现类被WebService注解之后才能成为一个WebService。
endpointInterface 属性,一般都作用于接口的实现类上,且其值就是该实现类的接口的全路径。
name 属性用来指定 WebService的name,
对应于<wsdl:definitions>的name属性
serviceName 属性用来做指定公开的WebService的服务名,对应于WSDL中 <wsdl:service> 的name
portName 属性用来指定WSDL中生成出来的
<wsdl:port>的name属性
wsdlLocation 属性用来指定WebService类所匹配的WSDL文件的路径,如果不指定这个,那么通过WebserviceName?wsdl生成出来的wsdl是CXF自己产生的,如果指定了,那么通过WebserviceName?wsdl生成的wsdl就是wsdlLocation 所指向的文件的内容
以上属性全作用于类和接口上
targetNamespace 用来指定WebService的WSDL的 targetNamespace 属性,该属性可以用于接口和类上,也可以作用于endpoint 上
JAXB :javax.xml.bind 包
javax.xml.bind包用来提供将java bean和xml之间进行转换的支持。
通过 JAXB 中的 Marshaller 和 Unmarshaller 可以将xml和java bean 进行转换
- Web 服务端点
javax.xml.ws.Endpoint
使用在此类中定义的静态方法创建端点。一个端点总是绑定到一个 Binding
和一个实现者,这两项都是在创建端点时设置的。
端点要么处于已发布状态,要么处于未发布状态。可以使用 publish
方法开始发布端点,此时端点开始接受传入请求。相反,可以使用 stop
方法停止接受传入请求并取消端点。一旦停止,就不能再次发布该端点。
可以在端点上设置 Executor
以便更好地控制用来指派传入请求的线程。例如,通过创建ThreadPoolExecutor
并向端点注册可以启用带有特定参数的线程池。
处理程序链可以使用所含的 Binding
来设置。
端点可以使一个元数据文档(如 WSDL 和 XMLSchema 文档)列表与之绑定。发布时,JAX-WS 实现将根据实现者上存在的注释,尽可能多地重用这些元数据,而不是生成新的元数据。
例:
Endpoint.publish(address, new UniverseBusImpl());
- 建立webservice步骤
1. 新建一个JAVA project.
2. 新建一个Hello.java,代码如下:
package study.jdk6ws;import javax.jws.WebMethod;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;@WebService(targetNamespace ="http://jdk6ws.study/client")@SOAPBinding(style = SOAPBinding.Style.RPC)public class Hello { @WebMethod public String sayHello(String name) { return "OK, " + name; }}
3. 新建一个发布这个服务的启动程序(StartService.java),代码如下:
package study.jdk6ws;import javax.xml.ws.Endpoint;public class StartService { public static void main(String[] args) { Endpoint.publish("http://localhost:8080/HelloService", new Hello()); System.out.println("Success"); }}
4. 运行这个应用程序: StartService
5. 打开浏览器,输入: http://localhost:8080/HelloService?wsdl
可以看到相应的wsdl描述:
另若有接口及其实现类:
第二步中:
接口中
import javax.jws.WebService;@WebServicepublic interface UniverseBusInterface { public Message busSynExecuteMessage(Message message) throws Exception; public boolean autoBusRegister(AliveBus ab); public void busAsynExecuteMessage(Message message); public void busAsynExecuteResult(Message message); public String checkBus();}
实现类中
import javax.jws.WebMethod;public class UniverseBusImpl implements UniverseBusInterface {@WebMethod public void busAsynExecuteMessage(final Message message) {。。。。。。}。。。。。。}
发布程序中
import javax.xml.ws.Endpoint;public class BusLaucher {private static void startServer(String address) { Endpoint.publish(address, new UniverseBusImpl()); }。。。。。。}
转载地址:http://blog.csdn.net/doriswang1986/article/details/5841339
- WebService-CXF
- CXF webservice
- CXF WebService
- WebService CXF
- CXF WebService
- CXF WebService
- CXF webservice
- webservice cxf
- cxf webservice
- cxf webservice
- webservice CXF
- webservice cxf
- CXF WebService
- Webservice-CXF
- Cxf webservice
- WebService cxf
- cxf Webservice
- webservice cxf
- 黑马程序员_io流1
- libvirt 详解(1)
- 解决ubuntu one for windows 无法同步问题- file sync starting
- spfa算法 归纳
- 服务器端WSAAsyncSelect模型编程
- CXF WebService
- winForm界面闪烁问题解决
- 点类派生出直线类(私有继承)
- EL表达式
- CPerson类——个人信息表
- c# 多线程 上
- 马尔科夫随机场和马尔科夫链
- 黑马程序员_io流2
- 3D名词说明