今天在对接的客户用到了webservice,最终采用wsimport生成本地代理方式以SDK的形式对接,但是想的完整的总结一下ws的几种调用方式。
发布服务的IP地址是:192.168.125.116
客户端访问ws服务的IP是:192.168.125.115
1.发布ws服务:
applicationContext.xml
http://cxf.apache.org/jaxws http://cxf.apache.org/jaxws http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
web.xml如下:
CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
1
CXFServlet
/WS/*
packagecn.xm.exam.service.webservice;importjava.util.Set;importjavax.jws.WebService;importcn.xm.exam.bean.system.User;
@WebServicepublic interfaceUserWebService {/*** 根据用户身份证号码查询用户信息及其角色信息及其权限信息
*
*@paramuseridcard
*@returnuser*/
public User getUserByUseridcard(String useridcard) throwsException;/*** 根据用户编号查询角色code的集合
*
*@paramuserid
*@return角色集合*/
public Set getRoleByUserid(String userid) throwsException;
}
packagecn.xm.exam.service.impl.webservice;importjava.util.Set;importjavax.annotation.Resource;importjavax.jws.WebService;importorg.springframework.stereotype.Service;importcn.xm.exam.bean.system.User;importcn.xm.exam.mapper.system.UserMapper;importcn.xm.exam.service.webservice.UserWebService;importcn.xm.exam.utils.ValidateCheck;
@Service
@WebService(targetNamespace= "http://webservice.service.exam.xm.cn")public class UserWebServiceImpl implementsUserWebService {
@ResourceprivateUserMapper userMapper;
@OverridepublicUser getUserByUseridcard(String useridcard) {if(ValidateCheck.isNull(useridcard)) {return null;
}
User user= null;try{
user=userMapper.getUserByUseridcard(useridcard);
}catch(Exception e) {
e.printStackTrace();
}returnuser;
}
@Overridepublic SetgetRoleByUserid(String userid) {if(ValidateCheck.isNull(userid)) {return null;
}
Set role = null;try{
role=userMapper.getRoleByUserid(userid);
}catch(Exception e) {
e.printStackTrace();
}returnrole;
}
}
启动之后查看ws服务:
查看wsdl:
2.访问ws的几种方式
1.wsimport生成本地代理的方式(简单--类似于SDK访问)
生成本地代码(如果需要下载源码,加上 -keep 参数即可)