在Web service中沒有一種治理session的標(biāo)準(zhǔn)方法,只有兩種公認(rèn)的技術(shù),一種是依靠HTTP和HTTP cookies,另一種,或許也是最重要的一種方法,就是用SOAP headers。Axis能幫助開發(fā)人員實(shí)現(xiàn)這兩種技術(shù)。 在Axis中缺省使用的是HTTP managed sessions。在一個(gè)服務(wù)器中這么做是十分輕易的,因?yàn)榇蠖鄶?shù)對(duì)Axis Web service的治理是通過org.apache.axis.MessageContext的一個(gè)實(shí)例來(lái)完成的。在一個(gè)Axis Web service中你可以通過調(diào)用MessageContext類中的靜態(tài)方法來(lái)得到MessageContext的一個(gè)實(shí)例:
public class SessionService { public String echo(String in) { MessageContext mc =MessageContext.getCurrentContext(); MessageContext中有一個(gè)名為setMaintainSession的方法,調(diào)用它便可激活session。但在編寫(Axis 1.1 RC2)時(shí),session對(duì)象只有在被訪問時(shí)才能激活,如下列代碼所示:
public class SessionService { public String echo(String in) { MessageContext mc = MessageContext. getCurrentContext(); Session session = mc.getSession(); String name = (String)session.get("name"); return in; } } 這樣會(huì)導(dǎo)致Axis架構(gòu)生成一個(gè)set-cookie header:Set-Cookie: