网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.尝鲜:最新版Eclipse3.1及插件介.
.Jive笔记--DatabasePackage下面的.
.5. Configuring Applications.
.Castor JDO: 一个欺诈的广告.
.spring + hibernate 数据话持久层.
.JScript 字母顺序的关键字列表.
.在J2ME手机编程中使用字体和颜色.
.java.util包学习笔记一.
.JAVA 深度控制 WORD.
.getUTCFullYear 方法.
.Java的故事.
.使用Resin3.0配置运行Java Servl.
.对等计算实践之:构建 P2P 应用程.
.责任链模式(Chain of Responsib.
.从JAR文件中读取文件.
.刚运行了 Azureus ,给我的感觉是.
.你如何使用JavaBean操作数据库?.
.利用Java编写HTML文件分析程序.
.用Eclipse3.0+jboss4Lomboz 3开发.
.Java 国际化和本地化 Toolkit 2..

在Web Services中管理Sessions

发表日期:2008-1-5



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


上一篇:Spring MVC框架的高级配置 人气:875
下一篇:MD5的Java Bean实现 人气:1289
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐