webservice 之 Java CXF实战效果 RS WS(二)
生活随笔
收集整理的這篇文章主要介紹了
webservice 之 Java CXF实战效果 RS WS(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
- 兩種實現第一種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);@Overridepublic Response findResponse() {LOGGER.info("findResponse...");return Response.ok().entity("").build();}@Overridepublic 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(); }@Overridepublic Response getMatrix(String year, String author, String country) {LOGGER.info("getMatrix...");return Response.ok().entity("year:"+year+",author:"+author+",country:"+country).build(); }@Overridepublic 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);@Autowiredprivate IdentitySynchronousService identitySynchronousService;@Overridepublic List<User> findAllUsers() {LOGGER.info(UserInfoSoapImpl.class.getName()+"findAllUsers");return identitySynchronousService.findUser();}@Overridepublic List<Unit> findAllUnits() {LOGGER.info(UserInfoSoapImpl.class.getName()+"findAllUnits");return identitySynchronousService.findUnits();}@Overridepublic 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>這里就不貼測試類了,網上有大把的。
轉載于:https://my.oschina.net/z201/blog/899268
總結
以上是生活随笔為你收集整理的webservice 之 Java CXF实战效果 RS WS(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学思维和逻辑能力
- 下一篇: maven 插件在线安装