WebService三要素:
WebService的三要素是:
SOAP (Simple Object Access Protocol):简易对象访问协议,soap用来描述传递信息的格式。
WSDL (WebServices Description Language):Web服务描述语言,用来描述如何访问具体的接口。
UDDI (Universal Description Discovery and Integration):通用描述、发现及整合,用来管理、分发、查询webService。
- 1
- 2
- 3
- 4
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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
然后编写需要暴露在外的程序接口:
接口需要@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);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
编写实现类
@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;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
配置文件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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
一个完整的webservice就搭建完成了。
本文暂时没有评论,来添加一个吧(●'◡'●)