国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在Web Services中管理Sessions

2019-11-18 11:35:24
字體:
來源:轉載
供稿:網友


  在Web service中通常采用兩種公認技術來治理session,一種是借助HTTP和HTTP cookies,另一種是用SOAP headers。Axis能幫你實現這兩種技術。

  在Web service中沒有一種治理session的標準方法,只有兩種公認的技術,一種是依靠HTTP和HTTP cookies,另一種,或許也是最重要的一種方法,就是用SOAP headers。Axis能幫助開發人員實現這兩種技術。
  在Axis中缺省使用的是HTTP managed sessions。在一個服務器中這么做是十分輕易的,因為大多數對Axis Web service的治理是通過org.apache.axis.MessageContext的一個實例來完成的。在一個Axis Web service中你可以通過調用MessageContext類中的靜態方法來得到MessageContext的一個實例:

public class SessionService
{
public String echo(String in)
{
MessageContext mc =MessageContext.getCurrentContext();
  MessageContext中有一個名為setMaintainSession的方法,調用它便可激活session。但在編寫(Axis 1.1 RC2)時,session對象只有在被訪問時才能激活,如下列代碼所示:

public class SessionService
{
public String echo(String in)
{
MessageContext mc = MessageContext.
getCurrentContext();
Session session = mc.getSession();
String name = (String)session.get("name");
return in;
}
}
  這樣會導致Axis架構生成一個set-cookie header:Set-Cookie:

JSESSIONID=49EBBB19A1B2F8D10EE075F6F14CB8C9;
Path=/axissessions
  客戶端需要在Cookie header中返回這個Cookie來保持該session。為了使axis運行狀態下的客戶端能夠實現這一點,就必須調用org.apache.axis.client.Service接口的setMaintainSession方法。該接口是由WSDL2java生成工具所生成的Locator類實現的。調用該方法之后,Axis架構會自動將該cookie返回到服務器中:

public static void main(String[] args)
{
UseSessionsServiceLocator locator = new UseSessionsServiceLocator();
locator.setMaintainSession(true);
  header看起來就像這樣:

Cookie: JSESSIONID=49EBBB19A1B2F8D10EE075F6F14CB8C9
  通過HTTP傳輸cookie是沒有問題的,但假如客戶端或服務器不通過HTTP,或使用的是通過多個Web services傳入調用的multihop service,那么這種方法就不那么有效了。一種更好的方法是用SOAP headers來加載session id。

  Axis架構支持多個Handlers。通過在一個Web service請求過程中調用調棧(call stack),Handlers能夠被放置到很多地方,它可以和傳輸過程結合起來,或者和一個Web service一起使用。Handlers可以被插入其中來處理Web service請求中的請求和/或響應語句。 photoshop教程 數據結構 五筆輸入法專題 QQ病毒專題 共享上網專題 Google工具和服務專題


  Axis帶有一個名為org.apache.axis.handlers.SimpleSessionHandler的handler,它用于提供基于session治理的SOAP header。要使用這個簡單的帶有Web service的session handler,你必須告知Axis架構將該handler添加到handler鏈中。你可以通過將該handler信息添加到server-config.wsdd來實現這一點;一個簡單的處理方法是定義一個包含額外配置Web service所需的WSDD文件,然后用Axis部署工具來部署這個配置文件。

  這個WSDD文件看起來就像這樣:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 美姑县| 鄱阳县| 电白县| 德昌县| 伊春市| 调兵山市| 板桥市| 威信县| 青铜峡市| 潜江市| 穆棱市| 江都市| 湖南省| 乐山市| 哈密市| 沂源县| 彩票| 衡山县| 清丰县| 赞皇县| 正安县| 乌兰浩特市| 邹城市| 徐水县| 隆尧县| 惠州市| 泸水县| 长丰县| 景洪市| 崇文区| 巨野县| 田阳县| 博白县| 清丰县| 寻乌县| 任丘市| 温宿县| 吉林省| 永济市| 嘉义县| 富民县|