1. 基于 JWS 的 Web Services 的發布 (直接利用 axis 包里面的 webapp)
a. 寫一個 Java 文件(Hello.java),含有需要暴露為 WS 的方法,改名為 .jws (Hello.jws)
b. 把該文件放到發布目錄 webapps/axis
c. WSDL http://localhost:8080/axis/Hello.jws?wsdl
d. 使用 WSDL2Java 把 WSDL 對應的 WS 轉換成直接可用的 Java 文件
2. 定制發布(Service 方式)
配置文件 <webapp>/WEB-INF/server-config.wsdd, 將所需要暴露的 WS 方法寫在里面。
該方法就像發布 Servlet,JWS 就像發布 JSP
JWS 方法使我們必須將已有類的源代碼發布出來,并且會將里面所有的 public 方法暴露出來
3. 處理復雜類型參數和返回值
Axis 要求復雜類型的對象編寫必須符合 JavaBean 的規范。
使用 JWS 處理復雜類型和過去沒有區別,系統會自動完成。
使用 Service 方式需要添加類型的映射配置 (typeMapping)
WSDL2Java生成的文件多了 getTypeDesc, getSerializer, getDeserializer 等
4. MessageContext
通過 Message Context 可以獲取 AxisEngine 實例的引用(getAxisEngine()),請求和回應的消息(getRequestMessage(), getResponseMessage()),驗證信息,以及 Servlet 規范中的實例引用等(我們可以獲取類 HTTPConstants 中所有以 MC_ 開頭的常量對應的信息,用 getProperty())
5. Web 服務會話管理
在 Web 服務中我們可以借助 HTTP 以及 HTTPCookie 來處理會話信息。
對于服務端來說,只需要通過 MessageContext 實例獲取 Session 對象即可進行會話級的數據保存或者讀取。
在代碼中需要設定 setMaintainSession(true)
6. 保護 Web 服務
a. 使用HTTPS傳輸方式 該方式需要在Web服務器上進行配置同時需要客戶端的支持。該措施有效的防止數據在網絡傳輸過程中被窺視。
b. 重命名Axis已有的一些名字,例如AdminService、AxisServlet,刪除Axis目錄下一些無用的程序,例如happyaxis.jsp以及一些無用的jar包等。
c. 通過設置axis.enableListQuery的值為false來停止AxisServlet列出所有服務的功能。
d. 禁止自動生成WSDL的功能
e. 使用過濾器來增加一些驗證功能,例如客戶端的地址等。
參考:
http://www-128.ibm.com/developerworks/cn/webservices/ws-deepaxis/
http://www-128.ibm.com/developerworks/cn/webservices/ws-startaxis/index.html
posted on 2006-10-26 14:01
steady 閱讀(2051)
評論(0) 編輯 收藏 所屬分類:
技術隨筆