加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读