CXF实现服务的发布
jopen
12年前
在之前也谢了几篇关于CXF进行服务的发布的文章,基于Spring以及基于jetty
本文同样实现基于Jetty内置服务器进行服务的发布,主要解决的问题就是发布出来的WSDL中方法参数名称不一致的问题
接口文件:
package demo.hw.server; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService public interface HelloWorld { @WebMethod @WebResult(name="callBack") String sayHi(@WebParam(name="username")String username); }
实现类:
package demo.hw.server; public class HelloWorldImpl implements HelloWorld { public String sayHi(String text) { System.out.println("sayHi called"); return "Hello " + text; } }
发布:(1)
package demo.hw.server; import javax.xml.ws.Endpoint; public class Server { public static void main(String args[]) throws Exception { Endpoint endpoint = Endpoint.publish( "http://localhost:8080/WSCXF/helloService", new HelloWorldImpl());// 这里是实现类 System.out.println("WS发布成功!"); } }
发布(2)
HelloWorldImpl helloworldimp = new HelloWorldImpl(); JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); factoryBean.setAddress("http://localhost:8080/WSCXF/helloService"); factoryBean.setServiceClass(HelloWorld.class);//接口类 factoryBean.setServiceBean(helloworldimp); factoryBean.create();
实现结果:
http://localhost:8080/WSCXF/helloService?wsdl
总结: 在之前探究了一段时间,实现了Spring无注解的发布服务,并实现了拦截器等功能,但是现在项目需求能够对服务进行控制,能够控制启动和停止,于是个人认为利用内置 Jetty服务器则可以实现对服务的控制,这样的话就需要进行注解编程,个人在探索中学习,如果童靴你又好的方法,希望能够分享一下。