2014年11月28日 星期五

JAX-WS 的大小事

最近這一個星期到客戶那解Web Service的問題,在這邊記錄一下查到的相關資訊...
教學的話有空再來寫....
這邊提供幾個找到的資料注意事項


AXIS2
這次用裡面的wsdl2java 讀取wsdl的內容來產生相關所需要的檔案
注意事項:-g 這個參數很重要,有這個才有辦法根據WSDL產生完整的Class

Rampart
用來在SOAP message中加上Secrity 相關的內容

IBM Web Service系列文章
裡面的內容其實都說明的滿詳細的...有需要的朋友可以參考一下

keytool
主要是用來處理憑證或是金鑰的Java Tool,主要是將相關的內容存放到JKS的管理庫中...

其他部分
透過Rampart可以很方便的對出去的SOAP Message的Header來處理Secrity相關的問題...
不過對方回來的訊息如果是Error 相關的話,就不會在SOAP 的Header上加上Secrity相關的回應,結果得到的Exception都會說Header不完整或是沒有權限之類的回應....可透過fidder來取得request和response來確定得到的SOAPMessage來確認得到的封包是否正確

如果對方提供的不是https的話,可用eclipse提供的TCP moniter就夠用了....(很不巧的這次對方提供的是https= =)

還有,可將Rampart 的.mar改為zip檔後移除model.xml檔中的的部分,讓得到response時,就算沒有加上安全相關的header也能正常的收進來...
model.xml檔如果沒有修改,Rampart預設出去的request會加上security token…回來的response也會做相關的驗證…但如果對方回應的response,header沒加的話就會無法驗證…Message也會因為被rampart包起來說是驗證錯誤或沒權限無法解析…然後就不知道是否有正常回應…



3 則留言:

  1. 請問你係用咩方法係axis2 到加rampart 架?? 有無d web可參考架?
    我係WEB-INF/lib +哂rampart既lib, 同WEB-INF/modules + rahas.mar & rampart.mar 就咁restart server 都出error
    org.apache.axis2.deployment.DeploymentException: The rampart module is not valid or has not been deployed

    係eclipse 到create webservice, 揀個+左InflowSecurity 既service.xml, 又話我係invalid service xml.....

    頭都爆了>< 請指教一下!

    回覆刪除
    回覆
    1. 您好,您可以參考http://www.ibm.com/developerworks/cn/java/j-jws4/index.html
      這篇的設定方式試試看
      設定檔的部分我留在前公司了...我明天跟我同事要要看再放到github上

      刪除
  2. 謝謝你呀, 我再研究一下先 ^^

    回覆刪除