【问题标题】:Null session with url aliasing带有 url 别名的空会话
【发布时间】:2012-05-13 02:11:36
【问题描述】:

jboss 5.1 我有一个应用程序(战争)部署到代理服务器。
我在 jboss 部署目录中放置了一个注销 servlet,并将其映射到 server/default/deployers/jbossweb-deployer/web.xml 以便任何部署的应用程序都可以使用它。 我们希望用户能够使用基本 url 访问网站:

http://ourAwesomeSite/

vs 战争名称:

http://ourAwesomeSite/ourAwesomeApp.home.seam

为此,我将其添加到 deploy/ROOT.war/index.html:

<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/ourAwesomeApp"/>

但现在我的注销 servlet 不再正常工作。

在 doGet 方法中 session 总是为 null,所以我不能使 session 无效。用户注销,他们当前的会话不会失效,之后登录的任何人(除非浏览器关闭)都会获得前一个用户的会话。 LogoutServlet:

    public void doGet(HttpServletRequest request,  HttpServletResponse response) throws java.io.IOException, 
                ServletException {
            System.out.println("**********************  logout servlet");

            HttpSession session = request.getSession(false);
// session is always null
            if (!this.isSessionInvalid(request) && session != null) {
                System.out.println("invalidating user session ... maybe");
                session.invalidate();

            }
            System.out.println("redirecting to SSO logout");
            response.sendRedirect("https://ssologoutpage/logout.html");

        }

server/default/deployers/jbossweb-deployer/web.xml 入口和映射:

<servlet>
      <servlet-name>LogoutServlet</servlet-name>
      <servlet-class>com.whatev.log.security.session.management.LogoutServlet</servlet-class>
     </servlet>
    <servlet-mapping>
      <servlet-name>LogoutServlet</servlet-name>
    <url-pattern>/web/logout.html</url-pattern>
    <url-pattern>/logout.html</url-pattern>
    </servlet-mapping>

我不确定请求会话是如何设置为空的。有人有什么想法吗?

【问题讨论】:

    标签: java servlets jboss


    【解决方案1】:

    您应该查看设置虚拟主机而不是重定向到另一个 Web 应用程序页面。请查找 Setup Virtual Hosts

    【讨论】:

    • thanx Phani,我摆脱了 ROOT.war 并在我们应用的 jboss-web.xml 中设置了 &lt;context-root&gt;/&lt;/context-root&gt;。那行得通,但不知道为什么。还有一个问题,设置 context-root 会取消使用原始 url 的访问权限,因此用户可以通过 http://ourAwesomeSite/ 访问我们,但不能通过 http://ourAwesomeSite/ourAwesomeApp 访问我们有没有一种方法可以配置它,这样两者都可以工作?我在虚拟托管的 apache 服务器后面。
    • 好吧,我没有尝试过,但我确信默认情况下会允许我们这样做。
    猜你喜欢
    • 1970-01-01
    • 2016-05-01
    • 2011-10-10
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多