来自不同客户端的 EJB3 有状态并发调用

2024-01-30

我有一个富客户端 swing 应用程序调用远程有状态 ejb。我使用的是JBoss 6.0。

我已经将客户端部署在两台不同的机器上,即不同的IP地址、jvm等。

有状态的有以下代码:

@Stateful
public class MyStateful implements MyStatefulRemote{

public void test(){     
    System.out.println(this);
    System.out.println(Thread.currentThread());
    System.out.println(Thread.currentThread().getThreadGroup());

    // cpu intensive task                
    String value = "";
    for (int j = 0; j < Integer.MAX_VALUE; j++) {
        value = "" + j;
    }
}

并且客户端有以下代码:

...
String JNDI_FACADE = "MyStateful/remote";
InitialContext context = new InitialContext();
MyStatefulRemote my = (MyStatefulRemote) context.lookup(JNDI_FACADE);
my.test();

然后,当我运行第一个客户端时,ejb 执行 println 命令并开始执行循环(如预期)。但是,当我在另一台计算机上运行第二个客户端时,ejb 在第一个方法调用完成之前不会打印任何内容。换句话说,有状态 bean 似乎无法处理并发调用,即使是来自不同客户端的调用。

如果我们查看 println 命令,我们可以看到:

br.com.alta.MyStateful@61ef35
WorkerThread#6[192.168.7.58:54271]
java.lang.ThreadGroup[name=jboss,maxpri=10]

当服务器完成第一次调用的执行时,第二次调用将打印输出:

br.com.alta.MyStateful@17539b3
WorkerThread#1[192.168.7.53:54303]
java.lang.ThreadGroup[name=jboss,maxpri=10]

我可以注意到有两个不同的有状态实例(正如预期的那样,每个客户端一个实例),并且它们在不同的线程中运行。

当我使用无状态而不是有状态时,它可以工作。但是,在我的应用程序中,我需要保留来自客户端的一些数据,有状态似乎更合适。


看来这是一个影响 JBoss AS 6 的错误:https://issues.jboss.org/browse/JBAS-9416 https://issues.jboss.org/browse/JBAS-9416

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来自不同客户端的 EJB3 有状态并发调用 的相关文章

随机推荐

  • Android 中的转义“@”字符

    我正在寻找一种方法来转义 Android strings xml 资源中字符串开头的 符号 我不断收到编译错误 并且 Eclipse 中的布局构建器拒绝工作 有谁知道怎么办 字符景观取决于每个人 android文档提供了这个表https d
  • 如何查看Check Constraint的内容

    是否有一个 SQL 脚本可以让我查看约束的内容 我发现了一个有关 Oracle 的问题 但我需要一个 SQL 脚本 如何在Oracle上查看Check Constraint的内容 https stackoverflow com questi
  • intellij 2020.1 sbt mainRunner 配置

    我正在尝试遵循指示 https github com JetBrains intellij scala wiki 5BSBT 5D How to use provided libraries in run configurations用于设
  • Vue中如何通过Id获取元素?

    我想要一件外衣Element https developer mozilla org en US docs Web API Element在 Vue 中 使用getElementById https developer mozilla or
  • 安装 geoR 包时出现问题

    我刚刚在 Xubuntu 13 10 上安装了 R 和 R studio 版本 3 0 1 我想使用geoR包裹 但是 当我尝试安装它时 出现错误 install packages geoR 将软件包安装到 home R x86 64 pc
  • Java getter 与 this

    这是一个非常通用的场景 我使用 setter 函数设置变量并仅在本地使用该变量 class Main private String str public Main String value setStr value private Stri
  • 如何在 WCF 服务上设置密码?

    我正在开发一个 WCF 服务 我们的其他软件调用该服务将错误信息发送到我们的数据库 问题是 由于它是在线服务 所以它不安全 所以我想知道该服务是否可以请求密码 即当我们调用该服务时 我们必须配置密码或类似的东西 我用谷歌搜索了一下 但对于这
  • 尾递归Map函数RACKET

    Racket 中的映射函数采用一个函数和一个列表 并将该函数递归地应用于列表中的每个项目 我正在尝试将映射转换为尾递归函数 这该如何完成 你被困在哪里了 您可以定义自己的map程序与内部loop程序 define map f in defi
  • 如何在 Jetpack Compose for Desktop 中使用 .svg 文件?

    我正在尝试使用 svg 矢量文件 来显示图像 但我被卡住了 无法做到这一点 有什么办法可以使用它 我尝试像这样使用它 Image imageFromResource svg file name svg contentDescription
  • OpenCV 中从 3D 点构建平面

    我想从 OpenCV 中的 3D 点列表构造一个平面 我想通过查找以下形式的四个参数来获得结果 Ax By Cz D 0 有人会建议我一种方法吗 如果数据不包含异常值且不包含多个平面 此外 所有点都恰好位于一个平面上 数据没有噪声 就这么简
  • 将字典转换为元组列表

    如何以最短的方式将字典转换为元组列表 C Dictionary
  • 达到 MaxLength 时 XAML 触发自动制表符

    当 MaxLength 属性到达 XAML 触发器 DataTrigger PropertyTrigger Style Trigger 等时 如何合并自动制表符 下面是两个这样的选项 说明我如何通过代码隐藏使用 TextBox 完成此操作
  • Spring Boot RabbitMQ 接收器 Jackson 反序列化为 POJO

    我有一个 Spring Boot 项目 我正在尝试与 RabbitMQ 服务器集成 以便我可以向队列发布消息和从队列读取消息 这是我的rabbitmq配置 编辑后仅显示相关详细信息 Configuration ConfigurationPr
  • 运行 NestJS 应用程序时如何查看 console.log 输出?

    我正在构建我的第一个 NestJS 应用程序 我在他们的文档中看到很多使用 console log 的示例 但是当我添加它时 终端中没有输出 我正在使用 vscode 的终端 我还尝试使用内置 Logger 并使用 npm run star
  • MySQL 5.1 在存在索引时使用 filesort 事件

    也许我错过了一些愚蠢的事情 显然 即使有一个索引与 ORDER BY 子句中的列完全匹配 MySQL 5 1 也会继续执行文件排序 为了将其发布在这里 我过度简化了数据模型 但问题仍然发生 表定义 CREATE TABLE event id
  • 日期选择器对话框阴影的白色背景

    我将 datepicker 添加到我的应用程序中 但我的问题是对话框的阴影有白色背景 使用 Android 21 进行编译 请帮我删除白色背景 我有同样的问题 我所做的第一个解决方案 我最终在 DatePickerDialog 构建器中给出
  • 如何将宏与金字塔/ZPT(变色龙)一起使用

    我想将宏与金字塔 ZPT引擎 Chameleon 一起使用 文档说 单个页面模板可以容纳多个宏 http chameleon readthedocs org en latest reference html macros metal htt
  • Shell 脚本中的 REGEX 测试始终为 False

    这个正则表达式总是在 shell 脚本中检查false尽管它匹配 LIST values usr bin env bash LIST AB CD EF Valid value and should print VALID if LIST A
  • 在实体管理器上使用 unwrap 方法获取本机休眠会话后,我是否必须关闭两者?

    我有看起来像这样的代码 this entityManager AppFactory instance getEntityManagerFactory createEntityManager this hibernateSession ent
  • 来自不同客户端的 EJB3 有状态并发调用

    我有一个富客户端 swing 应用程序调用远程有状态 ejb 我使用的是JBoss 6 0 我已经将客户端部署在两台不同的机器上 即不同的IP地址 jvm等 有状态的有以下代码 Stateful public class MyStatefu