使用CXF(JaxWsServerFactoryBean、ServerFactoryBean)编码的方式发布WebService服务
2013-04-15 13:35
691 查看
前面已经使用JDK自带的类库发布了一个简单的WebService。现在使用框架CXF的编码方式来发布一个WebService
CXF:Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华。
一般我们都是基于接口编程的、所以先提供一个接口类IHelloService
具体的实现类HelloServiceImpl
发布服务的类ServiceCXF
运行ServiceCXF,我们的WebService就发布成功了。
CXF:Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华。
一般我们都是基于接口编程的、所以先提供一个接口类IHelloService
package com.service.cxf.code; import javax.jws.WebService; import javax.xml.ws.soap.SOAPBinding; import javax.xml.ws.BindingType; /** * @author jackphang * @date 2013-4-13 * @description */ @WebService /** * 将SOAP协议定义为1.2 Eclipse自带的WebService Brower只能解析soap1.1的协议 * 服务器端最好使用高版本的协议 */ @BindingType(value = SOAPBinding.SOAP12HTTP_BINDING) public interface IHelloService { public String sayHello(String str); }
具体的实现类HelloServiceImpl
package com.service.cxf.code; import java.text.SimpleDateFormat; import java.util.Date; /** * @author jackphang * @date 2013-4-13 * @description */ public class HelloServiceImpl implements IHelloService { private static final SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); @Override public String sayHello(String str) { System.out.println(sdf.format(new Date()) + "获得客户端数据:" + str); return "hello : " + str; } public static void staticMethod() { System.out.println("static方法不能在接口中定义,亦不能对外提供暴露"); } public final void finalMethod() { System.out.println("final方法不能在接口中定义,亦不能对外提供暴露"); } }
发布服务的类ServiceCXF
package com.service.cxf.code; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; /** * @author jackphang * @date 2013-4-13 * @description 编码的方式发布一个CXF 的WebService服务 * 使用JaxWsServerFactoryBean和ServerFactoryBean对外发布一个CXF服务, * 推荐使用JaxWsServerFactoryBean方式, 它生成的wsdl比父类ServerFactoryBean更规范 */ public class ServiceCXF { /** * @param args */ public static void main(String[] args) { // 由该类对外发布一个服务,推荐使用该类 JaxWsServerFactoryBean server = new JaxWsServerFactoryBean(); // 或者由父类 // ServerFactoryBean server = new ServerFactoryBean(); // 对外提供服务的地址 server.setAddress("http://localhost:1111/hello"); // 提供服务的类型,此类必须加上@WebService的注解,不然,该类的实例中所有的方法将不对外暴露,但也不报错 server.setServiceClass(IHelloService.class); // 提供服务的实例 server.setServiceBean(new HelloServiceImpl()); // 添加请求消息拦截器 server.getInInterceptors().add(new LoggingInInterceptor()); // 添加响应消息拦截器 server.getOutInterceptors().add(new LoggingOutInterceptor()); // 发布服务相当于JDK的 EndPoint.publish() server.create(); } }
运行ServiceCXF,我们的WebService就发布成功了。
相关文章推荐
- 一、使用cxf的JaxWsServerFactoryBean创建webservice的服务端和客户端
- CXF之使用jaxws API 发布服务与进行客户端调用
- WebService-01-使用JAX-WS发布WebService服务
- 客户端利用CXF中的JaxWsProxyFactoryBean 对webservice地址进行调用
- CXF JaxWsProxyFactoryBean调用SOAP服务出现异常信息
- CXF----webservice和Spring之JaxWsProxyFactoryBean调用
- 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService
- WebService学习之旅(一)使用JAX-WS发布WebService
- (图文教程)java 使用JAX-WS框架发布Webservice以及客户端调用
- CXF 发布Web Service - JaxWsWebServicePublisherBeanPostProcessor
- webservice快速入门-使用JAX-WS注解的方式快速搭建ws服务端和客户端(一)
- Webservice的cxf开发_使用spring发布服务+ajax调用服务
- 真正的轻量级WebService框架——使用JAX-WS(JWS)发布WebService
- 别人用jax-ws发布的webservice,我尝试了用axis调用webservice即wsdl可以。下面尝试另一种方式调用,用jax-ws方式去调用
- WebService学习之旅(一)使用JAX-WS发布WebService
- webservice接口常见问题1:客户端使用SOAP方式调用CXF服务时异常
- 使用CXF发布webservice服务及注意要点
- 使用cxf 发布 jax-rs 风格webservice 。并客户端测试。
- Spring+cxf发布webservice服务--注解方式
- 使用CXF开发JAX-WS类型的WebService