微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CXF基于webcontainer

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。暂时不清楚原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐