2016-08-24 99 views
2

当尝试从同一浏览器中的多个选项卡登录时,icCube IDE会引发异常。你有什么想法是什么原因?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) 
+0

您使用两个不同的icCube实例吗? – ic3

+0

是的,两个icCube实例,但在两个不同的服务器上有两个许可 – koszti

回答

1

如果你在相同的URL分享icCube的多个isntances(不同的端口不够),你会与JSESSION饼干发生冲突。这个两个URL将最有可能发生冲突:

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

对于这种设置,您需要取消注释icCube.xml文件的Web应用程序的一部分,使他们在你的服务器是唯一的。例如,对于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> 

重新启动服务器后,它应该是罚款(我们也有我们的测试服务器在这个问题上)。

如果您位于基于Java Servlet的Web服务器之后,这也是更改icCube的默认JSESSION的好方法。

+0

我做了更改,重新启动了服务器,JSESSIONID {_xyz}现在是唯一的,但似乎不起作用。清除cookie仍然是使用多个选项卡的唯一选项。 – koszti

+0

你必须联系在iccube的支持,看起来像你的环境是某种特殊的...... – ic3

+0

是的,这将是我们的网络和中间代理设置的问题。如果我尝试直接访问icCube,它工作正常。谢谢。 – koszti