icCube的两个实例:从多个选项卡登录IDE

时间:2016-08-24 17:00:07

标签: iccube

尝试从同一浏览器中的多个选项卡登录时,

icCube IDE会引发异常。你知道可能是什么原因吗?

清除Cookie会有所帮助,但这是一种非常不舒服的解决方法。

IDE显示一个带有AUTHENTICATIONERROR:

的弹出窗口
com.google.gwt.user.client.rpc.StatusCodeException: 500 The call failed on the server; see server log for details

服务器日志显示异常:

javax.servlet.ServletException: Content-Type was 'text/plain; charset=utf-8'. Expected 'text/x-gwt-rpc'.
    at com.google.gwt.user.server.rpc.RPCServletUtils.checkContentTypeIgnoreCase(RPCServletUtils.java:476)
    at com.google.gwt.user.server.rpc.RPCServletUtils.readContent(RPCServletUtils.java:207)
    at com.google.gwt.user.server.rpc.RPCServletUtils.readContentAsGwtRpc(RPCServletUtils.java:250)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.readContent(AbstractRemoteServiceServlet.java:182)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:239)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
    at crazydev.iccube.server.http.IcCubeServletHolder.handle(SourceFile:63)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at crazydev.iccube.server.authentication.IcCubeGwtAuthenticationServletFilter.doFilter(SourceFile:101)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:497)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)

1 个答案:

答案 0 :(得分:1)

如果您在同一个网址上共享多个icCube的等值(不同的端口是不够的),您将与JSESSION Cookie发生冲突。这两个URL很可能会发生冲突:

  myIcCube.myCompany.com:8282/icCube/icCube.html
  myIcCube.myCompany.com:8283/icCube/icCube.html

对于此设置,您需要取消注释icCube.xml文件的webApp部分,以使其在您的服务器中唯一。例如,对于8282服务器:

<webApp>
        <!--
            An example showing how to change the name of the JSESSIONID cookie; handy for example
            when having icCube part of a complex Web App (e.g., behind a proxy).
        -->
                <context-param>
                    <param-name>org.eclipse.jetty.servlet.SessionCookie</param-name>
                    <param-value>IC3_JSESSIONID_8282</param-value>
                </context-param>
                <context-param>
                    <param-name>org.eclipse.jetty.servlet.SessionIdPathParameterName</param-name>
                    <param-value>ic3_jsessionid_8282</param-value>
                </context-param>
    </webApp>

重新启动服务器后应该没问题(我们的测试服务器上也存在此问题)。

这也是改变icCube默认JSESSION的好方法,以防你在基于Java Servlet的Web服务器之后。