Jakarta ee EJB中HornetQ并发会话的使用

Jakarta ee EJB中HornetQ并发会话的使用,jakarta-ee,jms,wildfly-8,hornetq,Jakarta Ee,Jms,Wildfly 8,Hornetq,我使用的是Wildfly-8.2.0,并且有一个类似以下的EJB: @Singleton public class MySingleton { @Inject JMSContext jmsCtx; public void addMessageToQueue(...) { ... } } 我看到了错误: 并发会话使用无效。在addMessageToQueue方法的日志中,会话不应被多个线程同时使用 因为这是一个单例EJB,所以使用默认的@Lock(WRITE)实现容器管理的并发。我不明

我使用的是Wildfly-8.2.0,并且有一个类似以下的EJB:

@Singleton
public class MySingleton {
  @Inject JMSContext jmsCtx;

  public void addMessageToQueue(...) { ... }
}
我看到了错误:
并发会话使用无效。在addMessageToQueue方法的日志中,会话不应被多个线程同时使用


因为这是一个单例EJB,所以使用默认的@Lock(WRITE)实现容器管理的并发。我不明白这个错误怎么可能发生。

可能,这就是为什么单个会话用于发送请求并通过侦听器获得响应。为每个任务创建两个单独的会话将对您有所帮助。

这是WildFly 8.x中的一个已知问题。考虑迁移到WielF飞9(这是在beta中)或者使用CDI <代码>实例< /C> >接口,如在代码> WFLY-338

中建议的那样。
@Inject
private Instance<JMSContext> context;

public void sendMessage(String text, boolean useTopic) {
    final Destination destination = useTopic ? topic : queue;
    context.get().createProducer().send(destination, text);
}
@Inject
私有实例上下文;
public void sendMessage(字符串文本,布尔值useTopic){
最终目的地=使用主题?主题:队列;
context.get().createProducer().send(目标,文本);
}

能否提供堆栈跟踪?