CXF基于webcontainer
发布时间:2020-12-17 00:12:07 所属栏目:安全 来源:网络整理
导读:CXF基于webcontainer发布服务,不使用spring 1.????????服务发布 a)????????使用Endpoint发布 package com.cxf.servlet; import javax.servlet.ServletConfig;import org.apache.cxf.BusFactory;importorg.apache.cxf.frontend.ServerFactoryBean;importorg.
CXF基于webcontainer发布服务,不使用spring 1.????????服务发布 a)????????使用Endpoint发布 package com.cxf.servlet; import javax.servlet.ServletConfig; import org.apache.cxf.BusFactory; importorg.apache.cxf.frontend.ServerFactoryBean; importorg.apache.cxf.transport.servlet.CXFNonSpringServlet; import com.cxf.server.IHelloWorld; importcom.cxf.server.impl.HelloWorldImpl; public classTestCXFNonSpringServlet extends CXFNonSpringServlet { private static finallong serialVersionUID = -1225145505821698828L; @Override protected voidloadBus(ServletConfig sc) { super.loadBus(sc); javax.xml.ws.Endpoint.publish("/helloworld",new HelloWorldImpl()); } } b)???????使用ServerFactoryBean发布 public class TestCXFNonSpringServletextends CXFNonSpringServlet { privatestatic final long serialVersionUID = -1225145505821698828L; @Override protectedvoid loadBus(ServletConfig sc) { super.loadBus(sc); IHelloWorldhello = new HelloWorldImpl(); ServerFactoryBeansfbean = new ServerFactoryBean(); sfbean.setServiceClass(HelloWorldImpl.class); sfbean.setServiceBean(hello); sfbean.setAddress("/helloworld"); sfbean.create(); } } ? ? 2.????????客户端调用 a)????????使用JaxWsDynamicClientFactory调用 JaxWsDynamicClientFactory dcf =JaxWsDynamicClientFactory.newInstance(); org.apache.cxf.endpoint.Clientclient =dcf.createClient("http://localhost:8888/WebService/cxf/helloworld?wsdl"); QNamename=new QName("http://impl.server.cxf.com/","sayHi"); Object[]objects=client.invoke(name,"TOM"); System.out.println(objects[0].toString()); ? b)???????使用JaxWsProxyFactoryBean调用 // 创建WebService客户端代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.getInInterceptors().add(new LoggingInInterceptor()); factory.getOutInterceptors().add(new LoggingOutInterceptor()); // 注册WebService接口 factory.setServiceClass(IHelloWorld.class); // 设置WebService地址 factory.setAddress("http://localhost:8888/WebService/cxf/helloworld"); IHelloWorld client = (IHelloWorld) factory.create(); System.out.println("Server said: " + client.sayHi("Tom")); ? 3.????????web.xml配置 <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>com.cxf.servlet.TestCXFNonSpringServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/cxf/*</url-pattern> </servlet-mapping> ? ? ? 使用JaxWsProxyFactoryBean调用ServerFactoryBean发布的服务时,参数传递到服务端为null,同样接收到服务器返回的参数也为null。暂时不清楚原因。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |