WebService CXF整合Spring框架

WebService CXF整合Spring框架

1. 准备工作

使用Maven构建一个Web项目,并添加如下依赖:
cxf框架依赖:

<!-- apache cxf框架依赖 -->
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.1.9</version>
</dependency>

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http-jetty</artifactId>
    <version>3.1.9</version>
</dependency>

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>3.1.9</version>
</dependency>

Spring框架依赖:

<!-- spring-mvc webmvc依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.3.2.RELEASE</version>
</dependency>

<!-- spring-mvc JDBC依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.3.2.RELEASE</version>
</dependency>

其他依赖按照需要自行导入。

2. 配置web.xml

在web.xml中配置处理webservice请求的Servlet

<!-- WebService配置(CXF方式) -->
<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>
        org.apache.cxf.transport.servlet.CXFServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <!-- 以ws开头的请求路径将会交给cxf来处理 -->
    <url-pattern>/ws/*</url-pattern>
</servlet-mapping>

3. 编写WebService接口

OrderProcess.java:

@WebService
public interface OrderProcess {
    @WebMethod
    String processOrder(Order order);
}

4. 编写WebService接口实现类

OrderProcessImpl.java

public class OrderProcessImpl implements OrderProcess {


    @Override
    public String processOrder(Order order) {
        System.out.println(order);
        return "Hello From Server";
    }
}

5. 实体类

public class Order {
    private String customerID;
    private String itemID;
    private int qty;
    private double price;

    public String getCustomerID() {
        return customerID;
    }

    public void setCustomerID(String customerID) {
        this.customerID = customerID;
    }

    public String getItemID() {
        return itemID;
    }

    public void setItemID(String itemID) {
        this.itemID = itemID;
    }

    public int getQty() {
        return qty;
    }

    public void setQty(int qty) {
        this.qty = qty;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Order{" +
                "customerID='" + customerID + '\'' +
                ", itemID='" + itemID + '\'' +
                ", qty=" + qty +
                ", price=" + price +
                '}';
    }
}

6. 配置applicationContext-cxf.xml

在WEB-INF中创建applicationContext-cxf.xml并做出如下配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />

    <!-- endpoint元素:配置WebService终端
            id属性:该bean对象的id
            implementor属性:指定webservice的SEI
            address属性:该WebService服务的访问地址-->

    <jaxws:endpoint
            id="orderProcess"
            implementor="cn.jxzhang.test.model.OrderProcessImpl"
            address="/OrderProcess">

        <!-- 配置入拦截器 -->
        <jaxws:inInterceptors>
            <!-- 添加一个服务器日志入拦截器 -->
            <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
        </jaxws:inInterceptors>

        <!-- 配置出拦截器 -->
        <jaxws:outInterceptors>
            <!-- 添加一个服务器日志出拦截器 -->
            <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
        </jaxws:outInterceptors>
    </jaxws:endpoint>

</beans>

7. 发布项目

将项目发布到tomcat上,访问:
http://localhost:8080/ws
将会得到WebService服务列表,点击相应服务即可跳转到该服务的wsdl文档页面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值