webService总结(二)——使用CXF手动发布webService(不使用Spr
发布时间:2020-12-16 23:28:16 所属栏目:安全 来源:网络整理
导读:??上篇博客: webService 总结(一)——使用 CXF 发布 webService (不使用 Spring ) 介绍了不使用Spring自动发布webService,这篇博客介绍第二种方法——使用CXF手动发布webService(不使用Spring)。 CXF自动发布webService,我们使用的是Tomcat服务器。
??上篇博客:webService总结(一)——使用CXF发布webService(不使用Spring) 介绍了不使用Spring自动发布webService,这篇博客介绍第二种方法——使用CXF手动发布webService(不使用Spring)。 CXF自动发布webService,我们使用的是Tomcat服务器。而使用CXF手动发布webService我们不再使用Tomcat,取而代之的是内嵌的jetty服务器。其实,jetty跟Tomcat并没有本质的区别,只是表现的形式不同,使用方法不同。既然要使用jetty,那么CXF中跟jetty有关的jar就必须要引入。我们还以上篇博客的例子来介绍。 服务端: 目录结构: 这里所有关于jetty的jar包都在CXF的lib目录中。 IHelloWorldServer代码:
package com.test.server; import javax.jws.WebService; @WebService public interface IHelloWorldServer { public String sayHello(String username); } HelloWorldServerImp代码:
package com.test.server; import javax.jws.WebService; @WebService(endpointInterface="com.test.server.IHelloWorldServer",serviceName="HelloService") public class HelloWorldServerImp implements IHelloWorldServer { @Override public String sayHello(String username) { return username+" : HelloWorld"; } }与上篇博客不同的是,这里的两个类上面多了@WebService注解。 Test代码:
package com.test.server; import org.apache.cxf.endpoint.Server; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; public class Test { public static void main(String[] args) { HelloWorldServerImp implementor = new HelloWorldServerImp(); JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean(); svrFactory.setServiceClass(IHelloWorldServer.class); svrFactory.setAddress("http://localhost:9000/HelloService"); svrFactory.setServiceBean(implementor); Server server = svrFactory.create(); server.start(); } }这个类的功能就是发布WebService,run之后,输入网址:http://localhost:9000/HelloService?wsdl??? 查看发布好的wsdl。这样WebService发布成功。 注意:网址后面一定要加?wsdl,否则会报错。 客户端: HelloWorldClient代码
package com.test.client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; public class HelloWorldClient { public static void main(String[] args) { JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:9000/HelloService?wsdl"); Object[] objects; try { objects = client.invoke("sayHello","haitao"); //输出调用结果 System.out.println(objects[0].toString()); } catch (Exception e) { e.printStackTrace(); } } } run之后,结果如下: 实例介绍完毕,下篇博客介绍CXF 与 Spring的集成。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |