在Web Services中管理Sessions

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

在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文件看起来就像这样:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航