CXF部署到tomcat(不结合spring)

新建web工程引入cxf包,笔者使用的是cxf2.7.7版本,以下是必须jar架包

此处不带jetty和spring的依赖包。出现Cannot create a secure XMLInputFactory异常提示时通常是少了woodstox-core-asl-4.2.0.jar或stax2-api这两个包,少这两个包服务能够启动成功,但客户端连接web service时就出现错误提示了。加入后可能还需要重启下eclipse(反正我是重启后才解决的~_~)

1. cxf要部署到tomcat需要借助cxf的CXFNonSpringServlet类,继承该类代码示例如下:

public class CxfPublishServlet extends CXFNonSpringServlet
{
	private static final long serialVersionUID = 1L;
	
	@Override
	public void loadBus(ServletConfig sc)
	{
	    super.loadBus(sc);
	    Bus bus = getBus();
	    BusFactory.setDefaultBus(bus);
	    Endpoint.publish("/queryuser",new QueryUserImpl());//此时的服务地址已经变成http://你的应用地址/queryuser
	}
}

2.在web.xml中加入配置
 <servlet>
  <description>publsh web serivces</description>
  <display-name>CxfPublishServlet</display-name>
  <servlet-name>CxfPublishServlet</servlet-name>
  <servlet-class>net.itfad.beans.CxfPublishServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>CxfPublishServlet</servlet-name>
  <url-pattern>/*</url-pattern>
 </servlet-mapping>
启动tomcat一切就OK了。
注意load-on-startup
另外,servlet配置的路径比如改为/ws/*,此时loadBus中服务url不变,仍然是正确访问。而如果url改为/ws/queryuser将不能访问。


你可能感兴趣的:(spring,Web,service,CXF,Without,cxf发布到tomcat)