加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice 之 Java CXF实战效果 RS WS(二)

发布时间:2020-12-16 21:50:24 所属栏目:安全 来源:网络整理
导读:两种实现第一种RS 定义接口类 public interface ExampleRestfulI {/** * url:http://localhost:port/ssh-webservice/api/restful/v1/example/findResponse * @return */@Path("/findResponse")@GET public Response findResponse(); /** * @QueryParam 测试
  • 两种实现第一种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>

这里就不贴测试类了,网上有大把的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读