中两不同的上下文中的servlet可以访问session吗?

03-12-20 agilejava
这是我在context test中的一个servlet中的代码,mvnfourm(一个开源论坛)是另一个context,它要把请求转发到mvnfourm中的mvnfourm/rss

ServletContext sc = this.config.getServletContext().getContext("/mvnforum");						
RequestDispatcher rd = sc.getRequestDispatcher("/mvnforum/rss");	
rd.forward(request,response);
<p>

在mvnfourm中要调用session.getAttribute();可这里总是是抛出异常,

java.lang.IllegalStateException: getAttribute: Session already invalidated 
<p>

这是为什么啊,请高手指点!谢谢

我的server是Tomcat5.0.15,昨天在Tomcat4.1.24上可以的!

wwlhp@jdon.com
2003-12-21 14:46
我觉着代码的第2行应改为:
RequestDispatcher rd = sc.getRequestDispatcher("/rss");
<p>

以“/”开始表示相对于mvnforum上下文路径。

agilejava
2003-12-21 15:03
to wwwlhp@jdon.com:

是我没说清楚:),它的路径是这样的

/mvnforum/mvnforum/rss,所以第二句是没有错的。

昨天在tomcat4.1.12中,session没有发生异常,但在tomcat5.0.16中,即使是两个很简单的servlet,例如名为one的servlet调用在另一个context中的名为two的servlet,只要two调用session中的方法,它就会抛出session is invalidated这个异常,如果不使用session程序就正常,没有错误,搞不懂为什么:(

agilejava
2003-12-22 11:25
没有人注意到这个问题吗?前天给Apache发了个报告,这是他们的回复,看了半天也没看懂什么意思,帮忙看看:)

This (unsurprisingly) works fine for me. I did test it with JSPs. Please do not

reopen the issue.

I will have a small update to the session handling with cross context, though.

Right now, the session in the subcontext won't expire, and is never new either

这是什么意思啊?不好意思,英文不是很好,所以请大家帮忙看看:)

jpenguin
2003-12-24 10:43
应该不可以吧.否则安全性岂不是违反了.一个WEBAPP可以读另一个WEBAPP的SESSION里的

密码?

参见:

http://www.caucho.com/support/resin-interest/0107/0025.html

猜你喜欢