Java 使用Applet的JAX-WS客户端

Java 使用Applet的JAX-WS客户端,java,session,applet,jvm,next-generation-plugin,Java,Session,Applet,Jvm,Next Generation Plugin,当使用Applet客户端将JAX-WS体系结构与会话管理结合起来时,我似乎陷入了一个有问题的场景 为了维护会话,我将以下属性添加到客户端端口BindingProvider.session\u maintenant\u属性 然而,问题是,当我同时调用applet的两个实例(通过两个选项卡访问网站)时,会话在两个客户端之间混合。我怀疑这与多个applet实例使用同一个JVM实例有关,因此它们之间共享静态代码。但是,我无法确定在这两种情况下使用的是哪一部分 我已经肯定地证实,只有在从同一个浏览器同时运

当使用Applet客户端将JAX-WS体系结构与会话管理结合起来时,我似乎陷入了一个有问题的场景

为了维护会话,我将以下属性添加到客户端端口
BindingProvider.session\u maintenant\u属性

然而,问题是,当我同时调用applet的两个实例(通过两个选项卡访问网站)时,会话在两个客户端之间混合。我怀疑这与多个applet实例使用同一个JVM实例有关,因此它们之间共享静态代码。但是,我无法确定在这两种情况下使用的是哪一部分

我已经肯定地证实,只有在从同一个浏览器同时运行实例时,即在共享JVM静态代码时,才会出现会话混合问题。换句话说,会话管理代码在我测试过的任何其他情况下都能正常工作

…我怀疑这与多个小程序实例使用同一个JVM实例有关

从网页上的一页

执行小程序的一种新方法 新的执行小程序的方式与JavaWebStart技术在体系结构上有相似之处,但更紧密的浏览器集成。小程序不再在web浏览器内的Java虚拟机(JVM)中执行。相反,启动一个独立的JVM机器进程来执行小程序。默认情况下,只启动一台JVM机器,但您有机会启动多个JVM

(强调矿山)

检验你的怀疑

…我怀疑这与多个小程序实例使用同一个JVM实例有关

从网页上的一页

执行小程序的一种新方法 新的执行小程序的方式与JavaWebStart技术在体系结构上有相似之处,但更紧密的浏览器集成。小程序不再在web浏览器内的Java虚拟机(JVM)中执行。相反,启动一个独立的JVM机器进程来执行小程序。默认情况下,只启动一台JVM机器,但您有机会启动多个JVM

(强调矿山)


测试您的怀疑。

另一个澄清:当从同一JVM下的两个不同客户端访问时,实际发生的情况是服务器上只创建了一个会话,因此,两个客户端都使用相同的JSessionId运行……当然,您最好说明您的jre版本。正如答案所示,这很重要……这个问题似乎与applet或JAX-WS无关,而是与cookie的工作方式有关。Cookie是按主机使用的,可以调整为按路径使用,如您在Jetty中看到的,例如()。因此,这两个cookie被发送到服务器,因为它们都是为同一主机生成的。。因此,服务器混淆了会话…无论如何,这给我带来了第二个问题,我将单独提出并从这里插入到它的链接…这里是第二个问题-另一个澄清:当从同一JVM下的两个不同客户端访问时,实际发生的情况是,服务器上只创建了一个会话,因此,两个客户端都使用相同的JSessionId运行……当然,您最好说明您的jre版本。正如答案所示,这很重要……这个问题似乎与applet或JAX-WS无关,而是与cookie的工作方式有关。Cookie是按主机使用的,可以调整为按路径使用,如您在Jetty中看到的,例如()。因此,这两个cookie被发送到服务器,因为它们都是为同一主机生成的。。因此,服务器混淆了会话…无论如何,这给我带来了第二个问题,我将单独提出,并从这里插入链接…这是第二个问题-是的,与浏览器分开,但在小程序之间共享!是的,与浏览器分开,但在小程序中共享!