在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: