两种实现第一种RS 定义接口类 public interface ExampleRestfulI {/** * url:http://localhost:port/ssh-webservice/api/restful/v1/example/findResponse * @return */@Path("/findResponse")@GET public Response findResponse(); /** * @Query
- 两种实现第一种RS
定义接口类
public interface ExampleRestfulI { /** * url:http://localhost:port/ssh-webservice/api/restful/v1/example/findResponse * @return */ @Path("/findResponse") @GET public Response findResponse(); /** * @QueryParam 测试 * url:http://localhost:port/ssh-webservice/api/restful/v1/example/page? from=1&to=10&order=abcd * @param from * @param to * @return */ @Path("/page") @GET public Response getFrom( @QueryParam("from")int from, @QueryParam("to")int to, @QueryParam("order")List<String> order); /** * @MatrixParam 测试 * url:http://localhost:port/ssh-webservice/api/restful/v1/example/matrix/2016;author=tom;country=china * @param year * @param author * @param country * @return */ @Path("/matrix/{year}") @GET public Response getMatrix(@PathParam("year")String year, @MatrixParam("author")String author, @MatrixParam("country")String country); /** * @HeaderParam 测试 * 获取http头信息 * url:http://localhost:port/ssh-webservice/api/restful/v1/example/getHeader * @param userAgent * @return */ @Path("/getHeader") @GET public Response getHeader(@HeaderParam("user-agent")String userAgent); }
实现类
@Component public class ExampleRestfulImpl implements ExampleRestfulI{ // 日志 private static final Logger LOGGER = LoggerFactory.getLogger(ExampleRestfulImpl.class); @Override public Response findResponse() { LOGGER.info("findResponse..."); return Response.ok().entity("").build(); } @Override public Response getFrom(int from, int to, List<String> order) { LOGGER.info("getFrom..."); return Response.ok().entity("from "+from+" to "+to+" order by "+order.toString()).build(); } @Override public Response getMatrix(String year, String author, String country) { LOGGER.info("getMatrix..."); return Response.ok().entity("year:"+year+",author:"+author+",country:"+country).build(); } @Override public Response getHeader(String userAgent) { LOGGER.info("getHeader..."); return Response.ok().entity(userAgent).build(); } }
实现效果如下
<?xml version="1.0" encoding="utf-8"?> <application xmlns="http://wadl.dev.java.net/2009/02" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <grammars/> <resources base="http://localhost/ssh-webservice/api/restful/v1/example"> <resource path="/"> <resource path="findResponse"> <method name="GET"> <response> <representation mediaType="*/*"/> </response> </method> </resource> <resource path="getHeader"> <method name="GET"> <request> <param name="user-agent" style="header" type="xs:string"/> </request> <response> <representation mediaType="*/*"/> </response> </method> </resource> <resource path="matrix/{year}"> <param name="year" style="template" type="xs:string"/> <param name="author" style="matrix" type="xs:string"/> <param name="country" style="matrix" type="xs:string"/> <method name="GET"> <request/> <response> <representation mediaType="*/*"/> </response> </method> </resource> <resource path="page"> <method name="GET"> <request> <param name="from" style="query" type="xs:int"/> <param name="to" style="query" type="xs:int"/> <param name="order" style="query" repeating="true" type="xs:string"/> </request> <response> <representation mediaType="*/*"/> </response> </method> </resource> </resource> </resources> </application>
测试一下:http://127.0.0.1/ssh-webservice/api/restful/v1/example/getHeader
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36
这里会返回你的客户端信息
第二种WS实现
@WebService(targetNamespace="http://soap.z201.cn") public interface UserInfoSoap { /** * 获取所有用户信息 * @param userid * @return */ @WebResult(name = "return") @Action(input = "urn:findAllUsers", output = "urn:findAllUsersResponse") @RequestWrapper(localName = "findAllUsers") @WebMethod(operationName="findAllUsers",action = "urn:findAllUsers") @ResponseWrapper(localName = "findAllUsersResponse") public List<User> findAllUsers(); /** * 获取单位信息 * @param userid * @return */ @WebResult(name = "return") @Action(input = "urn:findAllUnits", output = "urn:findAllUnitsResponse") @RequestWrapper(localName = "findAllUnits") @WebMethod(action = "urn:findAllUnits") @ResponseWrapper(localName = "findAllUnitsResponse") public List<Unit> findAllUnits(); /** * 验证用户登陆信息 * @param userid * @return */ @WebResult(name = "return") @Action(input = "urn:verifyTheUser", output = "urn:verifyTheUserResponse") @RequestWrapper(localName = "verifyTheUser") @WebMethod(action = "urn:verifyTheUser") @ResponseWrapper(localName = "verifyTheUserResponse") public boolean verifyTheUser(@WebParam(name="loginName")String loginName,@WebParam(name="password")String password); }
接口实现类
@Component public class UserInfoSoapImpl implements UserInfoSoap { // 日志 private static final Logger LOGGER = LoggerFactory.getLogger(UserInfoSoapImpl.class); @Autowired private IdentitySynchronousService identitySynchronousService; @Override public List<User> findAllUsers() { LOGGER.info(UserInfoSoapImpl.class.getName()+"findAllUsers"); return identitySynchronousService.findUser(); } @Override public List<Unit> findAllUnits() { LOGGER.info(UserInfoSoapImpl.class.getName()+"findAllUnits"); return identitySynchronousService.findUnits(); } @Override public boolean verifyTheUser(String loginName, String password) { LOGGER.info(UserInfoSoapImpl.class.getName()+"verifyTheUser"); return identitySynchronousService.verifyTheUser(loginName, password); } }
实现效果
<?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:tns="http://soap.z201.cn" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="UserInfoSoapService" targetNamespace="http://soap.z201.cn"> <wsdl:types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" targetNamespace="http://soap.z201.cn" version="1.0"> <xs:element name="Unit" type="tns:unit"/> <xs:element name="User" type="tns:user"/> <xs:element name="findAllUnits" type="tns:findAllUnits"/> <xs:element name="findAllUnitsResponse" type="tns:findAllUnitsResponse"/> <xs:element name="findAllUsers" type="tns:findAllUsers"/> <xs:element name="findAllUsersResponse" type="tns:findAllUsersResponse"/> <xs:element name="verifyTheUser" type="tns:verifyTheUser"/> <xs:element name="verifyTheUserResponse" type="tns:verifyTheUserResponse"/> <xs:complexType name="findAllUsers"> <xs:sequence/> </xs:complexType> <xs:complexType name="findAllUsersResponse"> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="tns:user"/> </xs:sequence> </xs:complexType> <xs:complexType name="user"> <xs:sequence> <xs:element minOccurs="0" name="id" type="xs:string"/> <xs:element minOccurs="0" name="userName" type="xs:string"/> <xs:element minOccurs="0" name="jobNumber" type="xs:string"/> <xs:element minOccurs="0" name="passWord" type="xs:string"/> <xs:element minOccurs="0" name="unitName" type="xs:string"/> <xs:element minOccurs="0" name="unitId" type="xs:string"/> <xs:element minOccurs="0" name="sex" type="xs:string"/> <xs:element minOccurs="0" name="state" type="xs:string"/> <xs:element minOccurs="0" name="isDelete" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="verifyTheUser"> <xs:sequence> <xs:element minOccurs="0" name="loginName" type="xs:string"/> <xs:element minOccurs="0" name="password" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="verifyTheUserResponse"> <xs:sequence> <xs:element name="return" type="xs:boolean"/> </xs:sequence> </xs:complexType> <xs:complexType name="findAllUnits"> <xs:sequence/> </xs:complexType> <xs:complexType name="findAllUnitsResponse"> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="return" type="tns:unit"/> </xs:sequence> </xs:complexType> <xs:complexType name="unit"> <xs:sequence> <xs:element minOccurs="0" name="unitName" type="xs:string"/> <xs:element minOccurs="0" name="unitId" type="xs:string"/> <xs:element minOccurs="0" name="address" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="verifyTheUserResponse"> <wsdl:part element="tns:verifyTheUserResponse" name="parameters"/> </wsdl:message> <wsdl:message name="findAllUnitsResponse"> <wsdl:part element="tns:findAllUnitsResponse" name="parameters"/> </wsdl:message> <wsdl:message name="findAllUsers"> <wsdl:part element="tns:findAllUsers" name="parameters"/> </wsdl:message> <wsdl:message name="verifyTheUser"> <wsdl:part element="tns:verifyTheUser" name="parameters"/> </wsdl:message> <wsdl:message name="findAllUsersResponse"> <wsdl:part element="tns:findAllUsersResponse" name="parameters"/> </wsdl:message> <wsdl:message name="findAllUnits"> <wsdl:part element="tns:findAllUnits" name="parameters"/> </wsdl:message> <wsdl:portType name="UserInfoSoap"> <wsdl:operation name="findAllUsers"> <wsdl:input message="tns:findAllUsers" name="findAllUsers" wsam:Action="urn:findAllUsers" wsaw:Action="urn:findAllUsers"/> <wsdl:output message="tns:findAllUsersResponse" name="findAllUsersResponse" wsam:Action="urn:findAllUsersResponse" wsaw:Action="urn:findAllUsersResponse"/> </wsdl:operation> <wsdl:operation name="verifyTheUser"> <wsdl:input message="tns:verifyTheUser" name="verifyTheUser" wsam:Action="urn:verifyTheUser" wsaw:Action="urn:verifyTheUser"/> <wsdl:output message="tns:verifyTheUserResponse" name="verifyTheUserResponse" wsam:Action="urn:verifyTheUserResponse" wsaw:Action="urn:verifyTheUserResponse"/> </wsdl:operation> <wsdl:operation name="findAllUnits"> <wsdl:input message="tns:findAllUnits" name="findAllUnits" wsam:Action="urn:findAllUnits" wsaw:Action="urn:findAllUnits"/> <wsdl:output message="tns:findAllUnitsResponse" name="findAllUnitsResponse" wsam:Action="urn:findAllUnitsResponse" wsaw:Action="urn:findAllUnitsResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="UserInfoSoapServiceSoapBinding" type="tns:UserInfoSoap"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="findAllUsers"> <soap:operation soapAction="urn:findAllUsers" style="document"/> <wsdl:input name="findAllUsers"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="findAllUsersResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="verifyTheUser"> <soap:operation soapAction="urn:verifyTheUser" style="document"/> <wsdl:input name="verifyTheUser"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="verifyTheUserResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="findAllUnits"> <soap:operation soapAction="urn:findAllUnits" style="document"/> <wsdl:input name="findAllUnits"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="findAllUnitsResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="UserInfoSoapService"> <wsdl:port binding="tns:UserInfoSoapServiceSoapBinding" name="UserInfoSoapPort"> <soap:address location="http://127.0.0.1/ssh-webservice/api/soap/v1"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
这里就不贴测试类了,网上有大把的。