最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jax-ws handler 的詳解及簡單實例

 更新時間:2017年09月18日 11:41:57   作者:chyroger  
這篇文章主要介紹了 jax-ws handler 的詳解及簡單實例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下

 jax-ws handler 的詳解及簡單實例

aop技術(shù)一般用于某個對象的函數(shù)調(diào)用的日志,認證等。

webservice是遠程的函數(shù)調(diào)用,也需要類似的aop方法,舉例jax-ws的webservice,handler就相當于aop。

舉一例jax-ws handler例子

先寫個webservice

import javax.jws.HandlerChain; 
import javax.jws.WebMethod; 
import javax.jws.WebService; 
 
 
@WebService 
@HandlerChain(file="handlers.xml") 
public class Hello { 
 
  @WebMethod() 
  public String sayHello(String name) { 
    return "Hello " + name + "."; 
  } 
} 

超級傻瓜的webservice,唯一特別的就是@HandlerChain標注,其中的handlers.xml是一個描述jax-ws 的handler鏈的xml文件,這個文件可以放在與此源文件同一目錄下。

來看一下handlers.xml的內(nèi)容

<?xml version="1.0" encoding="UTF-8"?> 
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"> 
  <handler-chain> 
    <handler> 
      <handler-name>ServiceSOAPHandler</handler-name> 
      <handler-class>com.ws.handler.HelloHandler</handler-class> 
    </handler> 
  </handler-chain> 
</handler-chains> 

其中定義了handler鏈,鏈里只有一個handler,也可以包括多個handler

再看看handler的具體實現(xiàn):

import java.util.Set; 
 
import javax.xml.namespace.QName; 
import javax.xml.ws.handler.MessageContext; 
import javax.xml.ws.handler.soap.SOAPHandler; 
import javax.xml.ws.handler.soap.SOAPMessageContext; 
 
public class HelloHandler implements SOAPHandler<SOAPMessageContext> { 
 
 
  @Override 
  public boolean handleMessage(SOAPMessageContext context) { 
    System.out.println(context.get(MessageContext.WSDL_SERVICE).toString()); 
    return true; 
  } 
 
  @Override 
  public boolean handleFault(SOAPMessageContext context) { 
    // TODO Auto-generated method stub 
    return true; 
  } 
 
  @Override 
  public void close(MessageContext context) { 
    // TODO Auto-generated method stub 
     
  } 
 
  @Override 
  public Set<QName> getHeaders() 
  { 
    // TODO Auto-generated method stub 
    return null; 
  } 
 
} 

一個handler必須實現(xiàn)SOAPHandler或LogicalHandler接口,至于他們兩者的區(qū)別,與Handler接口的關(guān)系,以及<>中的XXXContext的意義,請參考jaxws的spec,這里只是helloworld例子。

所有接口定義的方法實際上我就實現(xiàn)了一個,打印了被調(diào)用的webservice的名字,實際上可以在這里做很多事情,比如修改soap中的內(nèi)容,添加或刪除xml的標簽,添加刪除soap附件,獲取soap相關(guān)的字段,更形象的功能可以有加解密,日志等等。

最后還要做一些相關(guān)配置文件修改:

在web.xml中添加:

<listener> 
    <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> 
  </listener> 
  <servlet> 
     
    <servlet-name>wsservlet</servlet-name> 
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
  </servlet> 
  <servlet-mapping> 
    <servlet-name>wsservlet</servlet-name> 
    <url-pattern>/helloservice</url-pattern> 
  </servlet-mapping> 

實際上當有類標有@webservice的標注,容器會自動把他變成一個webservice,但是我試過這里必須要用上面這種方法,也就是利用jaxws的運行時以wsservlet來匹配請求,并且在之前就通過wsservletcontextlistener在初始上下文時就指定加載某個類作為webservice,這個listener會自動檢測webroot下(和web.xml同一目錄)的名為sun-jaxws.xml的文件,其中包含了webservice具體實現(xiàn)的表述。

在這里sun-jaxws.xml的內(nèi)容為:

<endpoints 
  xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime" 
  version="2.0"> 
 
  <endpoint 
    name="helloservice" 
    implementation="com.ws.service.Hello" 
    url-pattern="/helloservice" /> 
 
</endpoints> 

這其中指定的那個實現(xiàn)可以是一個有@Webservice的類,也可以是實現(xiàn)Provider接口的類,相關(guān)Provider可以查看官方spec,它是jax-rs的基礎(chǔ)。

 打包,部署,我是部署在glassfish里的,找個webservice的測試工具,eclipse jee套裝里有自帶的webservice客戶端測試的。

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 使用Spring?AOP實現(xiàn)用戶操作日志功能

    使用Spring?AOP實現(xiàn)用戶操作日志功能

    這篇文章主要介紹了使用Spring?AOP實現(xiàn)了用戶操作日志功能,功能實現(xiàn)需要一張記錄日志的log表,結(jié)合示例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Mybatis返回Map對象的實現(xiàn)

    Mybatis返回Map對象的實現(xiàn)

    本文介紹了Mybatis和MybatisPlus在查詢數(shù)據(jù)庫時返回Map對象的多種實現(xiàn)方式,這些方法有助于優(yōu)化DAO層代碼,使其更加清晰和高效,下面就來具體介紹一下,感興趣的可以了解一下
    2024-09-09
  • Java的接口調(diào)用時的權(quán)限驗證功能的實現(xiàn)

    Java的接口調(diào)用時的權(quán)限驗證功能的實現(xiàn)

    這篇文章主要介紹了Java的接口調(diào)用時的權(quán)限驗證功能的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Java異常處理實例教程

    Java異常處理實例教程

    這篇文章主要為大家分享一份非常詳細的Java異常處理實例教程,幫助大家更好的學習java異常處理,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 關(guān)于Java?中?Future?的?get?方法超時問題

    關(guān)于Java?中?Future?的?get?方法超時問題

    這篇文章主要介紹了Java?中?Future?的?get?方法超時,最常見的理解就是,“超時以后,當前線程繼續(xù)執(zhí)行,線程池里的對應(yīng)線程中斷”,真的是這樣嗎?本文給大家詳細介紹,需要的朋友參考下吧
    2022-06-06
  • 在Java中去除字符串末尾的換行符的常用方法小結(jié)

    在Java中去除字符串末尾的換行符的常用方法小結(jié)

    在日常開發(fā)中,字符串操作是非常常見的需求,其中去除字符串末尾的換行符(\n)是一個很有代表性的場景,本文將從 Java 的幾種常用方法著手,全面解析如何去除字符串末尾的換行符,并結(jié)合代碼示例和實際使用場景,幫助大家掌握這一技巧,需要的朋友可以參考下
    2024-12-12
  • 在Spring中基于Java類進行配置的完整步驟

    在Spring中基于Java類進行配置的完整步驟

    基于Java配置選項,可以編寫大多數(shù)的Spring不用配置XML,下面這篇文章主要給大家介紹了關(guān)于在Spring中基于Java類進行配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2018-05-05
  • 自定義Spring Security的身份驗證失敗處理方法

    自定義Spring Security的身份驗證失敗處理方法

    在本篇文章里小編給大家整理了一篇關(guān)于自定義Spring Security的身份驗證失敗的處理方法,有需要的朋友們學習下。
    2019-05-05
  • java實現(xiàn)電話本管理系統(tǒng)

    java實現(xiàn)電話本管理系統(tǒng)

    這篇文章主要為大家詳細介紹了JAVA實現(xiàn)電話本管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 項目依賴Springboot jar失敗解決方案

    項目依賴Springboot jar失敗解決方案

    這篇文章主要介紹了項目依賴Springboot jar失敗解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08

最新評論

萍乡市| 界首市| 綦江县| 敖汉旗| 长兴县| 当阳市| 中宁县| 新竹县| 威宁| 璧山县| 滨海县| 博兴县| 江阴市| 本溪市| 鹰潭市| 永宁县| 富锦市| 平山县| 合阳县| 施甸县| 南华县| 镇远县| 镶黄旗| 扬州市| 长宁县| 和田市| 南充市| 兰坪| 建德市| 沽源县| 舞钢市| 广昌县| 大邑县| 平遥县| 宁化县| 正镶白旗| 科技| 马鞍山市| 安西县| 邛崃市| 宜黄县|