暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

基础教程:Apache CXF with Tomcat

Orison的孤独奋斗 2017-02-04
654

接上篇。

这个例子开始加入tomcat,但是未加入Spring。所以这个项目是个Web项目,不是普通Java项目。

首先还是pom,pom的依赖比上篇项目少了两个带jetty的就可以了。

bean类和服务类代码都一样。

但是要重写一个Bus加载。在上一篇有提到一个错误是

Cannot find any HttpDestinationFactory from the Bus.

就是这个bus。

具体代码如下:

public class CXFNonSpringServletImpl extends CXFNonSpringServlet{
private static final long serialVersionUID = 1L;
@Override
public void loadBus(ServletConfig servletConfig) {
    super.loadBus(servletConfig);
    Bus bus = getBus();
    BusFactory.setDefaultBus(bus);
    OrderProcessImpl orderProcessImpl = new OrderProcessImpl();
    Endpoint.publish("/OrderProcess", orderProcessImpl);
}
}

可以看出,除了设置bus以外,也就做了跟上篇例子里Server主类一样的事情。

然后是web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>test1TomcatServerNoSpring</display-name>
<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>demo.order.CXFNonSpringServletImpl</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>

可以看到,将CXF的Servlet设置为了刚刚重写的Servlet类。并且将CXF的url映射匹配定为/service/*。

部署启动。其中,我将该项目的url改成nospring。所以,当我们访问:

http://localhost:8080/nospring/services/

会出现以下页面:

这就是CXF下所有的WS列表。我们点击其中的WSDL网址,就会出现和上篇截图WSDL差不多的内容。

客户端代码和之前一样。唯一不一样的是wsdl地址变化了。在本例子中,变成了:

http://localhost:8080/nospring/services/OrderProcess?wsdl


文章转载自Orison的孤独奋斗,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论