新建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将不能访问。