spring+webservice使用cxf框架搭建服务端和客户端

6 篇文章 0 订阅

WebService三要素:

WebService的三要素是:
    SOAP (Simple Object Access Protocol):简易对象访问协议,soap用来描述传递信息的格式。
    WSDL (WebServices Description Language):Web服务描述语言,用来描述如何访问具体的接口。
    UDDI (Universal Description Discovery and Integration):通用描述、发现及整合,用来管理、分发、查询webService。

XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。

一 搭建服务端
首先在pom中加入cxf的依赖

<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-frontend-jaxws</artifactId>
    <version>3.1.8</version>
</dependency>
<dependency>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-rt-transports-http</artifactId>
    <version>3.1.8</version>
</dependency>

然后编写需要暴露在外的程序接口:
接口需要@webservice注解:

package com.customer.web.ws;

import java.util.List;

import javax.jws.WebService;

import com.customer.entity.Shops;
import com.customer.entity.Users;



@WebService
public interface IShopWS {

    /**
     * 查询未关联定区的店铺
     * @return
     */
    public List<Shops> queryAllShopsByNotAssociate();

    /**
     * 查询指定定区关联的店铺
     * @param decidedzoneId
     * @return
     */
    public List<Shops> queryAllShopsByAssociate(int decidedzoneId);

    /**
     * 修改指定定区关联的店铺
     * @param decidedzoneId
     * @param shopIds
     */
    public void updateShopsDecidedzoneId(int decidedzoneId, List<Integer> shopIds);

    /**
     * 根据电话号码查询指定用户
     * @param phone
     * @return
     */
    public Users queryByPhone(String phone);

}

编写实现类

@Service("shopWS")
public class ShopWSImpl implements IShopWS{

    @Autowired
    private ShopsMapper shopMapper;

    @Autowired
    private UsersMapper userMapper;

    @Override
    public List<Shops> queryAllShopsByNotAssociate() {
        ShopsExample se = new ShopsExample();
        Criteria c1 = se.createCriteria().andShopRemarkIsNull();
        Criteria c2 = se.createCriteria().andShopAddressEqualTo("");
        se.or(c1);
        se.or(c2);
        return shopMapper.selectByExample(se);
    }

    @Override
    public List<Shops> queryAllShopsByAssociate(int decidedzoneId) {
        ShopsExample se = new ShopsExample();
        se.createCriteria().andShopRemarkEqualTo(decidedzoneId + "");
        return shopMapper.selectByExample(se);
    }

    @Override
    public void updateShopsDecidedzoneId(int decidedzoneId, List<Integer> shopIds) {
        List<Shops> slist = queryAllShopsByAssociate(decidedzoneId);
        for (Shops shop : slist) {
            shop.setShopRemark(null);
            shopMapper.updateByPrimaryKey(shop);
        }

        if(shopIds != null) {
            for (int i = 0; i < shopIds.size(); i++) {
                Shops s = new Shops();
                s.setShopId(shopIds.get(i));
                s.setShopRemark(decidedzoneId + "");
                shopMapper.updateByPrimaryKeySelective(s);
            }
        }
    }

    @Override
    public Users queryByPhone(String phone) {
        UsersExample ue = new UsersExample();
        ue.createCriteria().andUsersTelephoneEqualTo(phone);
        List<Users> list = userMapper.selectByExample(ue);
        return list != null && list.size() > 0 ? list.get(0) : null;
    }

}

配置文件spring-cxf(需要添加到spring管理)

<?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">

    <!-- 例子 -->
    <bean id="shopWs" class="com.lbx.customer.web.ws.ShopWSImpl">
    </bean>
    //address访问服务端的地址
    <jaxws:server id="shopWebservice" address="/shops">
        <jaxws:serviceBean><ref bean="shopWs" /></jaxws:serviceBean>
    </jaxws:server>
</beans>

web.xml需要加入以下配置:



cxf
org.apache.cxf.transport.servlet.CXFServlet


cxf

/service/*

现在服务端编写完成:
访问的方式:http://ip地址/service/shops?wsdl

二,编写客户端
通过cmd中输入:wsimport -s . http://ip地址/service/shops?wsdl可以获得服务端所暴露的接口,将所需要的接口放入客户端中就可以调用了。
1.同样需要cxf的pom依赖
2.编写spring-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:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:soap="http://cxf.apache.org/bindings/soap"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd 
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd 
    http://cxf.apache.org/bindings/soap 
    http://cxf.apache.org/schemas/configuration/soap.xsd
    http://cxf.apache.org/jaxws 
    http://cxf.apache.org/schemas/jaxws.xsd">

    <!-- 例子 -->
    <jaxws:client id="customerWebService"
        serviceClass="com.lbx.dms.webservice.IShopWS"
        address="http://ip地址/service/shops">
    </jaxws:client>
</beans>

一个完整的webservice就搭建完成了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值