将 weblogic JMS 移动到 Oracle Advanced Queuing 时出错
Error while moving weblogic JMS to Oracle Advanced Queuing
我正在尝试使用 Oracle Advanced Queuing 而不是 Weblogic 中的 运行 JMS 实现。
理论上,我在 Weblogic 中已按应有的方式(根据文档)配置了所有内容,但是在尝试发送消息时出现以下错误:
####<Sep 18, 2019 10:27:12,290 AM CEST> <Info> <EJB> <svc-1> <svc_srv_1> <[ACTIVE] ExecuteThread: '4'
for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <5e679652-75c8-44bc-948a-cec4ee2af708-00000437>
<1568795232290> <[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-010213>
<Message-Driven EJB: OutQueueMDBReader's transaction was rolled back, because javax.jms.JMSRuntimeException:
[JMSPool:169829]JMS 2.0 method "createContext(int sessionMode)", called on the interface
"javax.jms.ConnectionFactory", is not implemented by this JMS Provider.:
java.lang.AbstractMethodError: oracle.jms.AQjmsXAQueueConnectionFactory.createXAContext()Ljavax/jms/XAJMSContext;
at weblogic.deployment.jms.JMSExceptions.getJMSRuntimeException(JMSExceptions.java:47)
at weblogic.deployment.jms.PooledConnectionFactory.createContext(PooledConnectionFactory.java:298)
at weblogic.jms.integration.injection.AbstractJMSContextManager.createContext(AbstractJMSContextManager.java:68)
at weblogic.jms.integration.injection.AbstractJMSContextManager.getContext(AbstractJMSContextManager.java:49)
at weblogic.jms.integration.injection.TransactedJMSContextManager$Proxy$_$$_WeldClientProxy.getContext(Unknown Source)
at weblogic.jms.integration.injection.InjectableJMSContext.delegate(InjectableJMSContext.java:144)
at weblogic.jms.integration.injection.ForwardingJMSContext.createBytesMessage(ForwardingJMSContext.java:105)
Truncated. see log file for complete stacktrace
java.lang.AbstractMethodError: oracle.jms.AQjmsXAQueueConnectionFactory.createXAContext()Ljavax/jms/XAJMSContext;
at weblogic.deployment.jms.PsuedoXAJMSContext.<init>(PsuedoXAJMSContext.java:87)
at weblogic.deployment.jms.PrimaryContextHelper.openConnection(PrimaryContextHelper.java:355)
at weblogic.deployment.jms.PrimaryContextHelper.<init>(PrimaryContextHelper.java:180)
at weblogic.deployment.jms.PrimaryContextHelper$PrimaryContextHelperServiceGeneratorImpl.createPrimaryContextHelperService(PrimaryContextHelper.java:1205)
at weblogic.deployment.jms.PooledConnectionFactory.createNonPooledPrimaryContext(PooledConnectionFactory.java:562)
at weblogic.deployment.jms.PooledConnectionFactory.createContextInternal(PooledConnectionFactory.java:488)
at weblogic.deployment.jms.PooledConnectionFactory.createContext(PooledConnectionFactory.java:296)
at weblogic.jms.integration.injection.AbstractJMSContextManager.createContext(AbstractJMSContextManager.java:68)
at weblogic.jms.integration.injection.AbstractJMSContextManager.getContext(AbstractJMSContextManager.java:49)
at weblogic.jms.integration.injection.TransactedJMSContextManager$Proxy$_$$_WeldClientProxy.getContext(Unknown Source)
Truncated. see log file for complete stacktrace
我的代码最后运行的地方就是:
@Inject
@JMSConnectionFactory("MyConnectionFactory")
private JMSContext context;
BytesMessage bytesMessage = getContext().createBytesMessage();
我已经检查过 this JMS 2.0 documentation 似乎一切正常。
我可以从不同版本或类似的东西导入接口吗?
根据您日志中的这条消息:
JMS 2.0 method "createContext(int sessionMode)", called on the interface "javax.jms.ConnectionFactory", is not implemented by this JMS Provider.:
java.lang.AbstractMethodError: oracle.jms.AQjmsXAQueueConnectionFactory.createXAContext()Ljavax/jms/XAJMSContext;
documentation you cited 只是一篇关于 JMS 2.0 规范中新增内容的文章。它没有说明 OAQ 为这些新功能提供了哪些支持。您收到错误消息的事实以及当您删除 OAQ 时它起作用的事实向我表明 OAQ 根本不支持 JMS 2.0。我建议您修改应用程序以使用 JMS 1.1 API.
我正在尝试使用 Oracle Advanced Queuing 而不是 Weblogic 中的 运行 JMS 实现。
理论上,我在 Weblogic 中已按应有的方式(根据文档)配置了所有内容,但是在尝试发送消息时出现以下错误:
####<Sep 18, 2019 10:27:12,290 AM CEST> <Info> <EJB> <svc-1> <svc_srv_1> <[ACTIVE] ExecuteThread: '4'
for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <5e679652-75c8-44bc-948a-cec4ee2af708-00000437>
<1568795232290> <[severity-value: 64] [rid: 0] [partition-id: 0] [partition-name: DOMAIN] > <BEA-010213>
<Message-Driven EJB: OutQueueMDBReader's transaction was rolled back, because javax.jms.JMSRuntimeException:
[JMSPool:169829]JMS 2.0 method "createContext(int sessionMode)", called on the interface
"javax.jms.ConnectionFactory", is not implemented by this JMS Provider.:
java.lang.AbstractMethodError: oracle.jms.AQjmsXAQueueConnectionFactory.createXAContext()Ljavax/jms/XAJMSContext;
at weblogic.deployment.jms.JMSExceptions.getJMSRuntimeException(JMSExceptions.java:47)
at weblogic.deployment.jms.PooledConnectionFactory.createContext(PooledConnectionFactory.java:298)
at weblogic.jms.integration.injection.AbstractJMSContextManager.createContext(AbstractJMSContextManager.java:68)
at weblogic.jms.integration.injection.AbstractJMSContextManager.getContext(AbstractJMSContextManager.java:49)
at weblogic.jms.integration.injection.TransactedJMSContextManager$Proxy$_$$_WeldClientProxy.getContext(Unknown Source)
at weblogic.jms.integration.injection.InjectableJMSContext.delegate(InjectableJMSContext.java:144)
at weblogic.jms.integration.injection.ForwardingJMSContext.createBytesMessage(ForwardingJMSContext.java:105)
Truncated. see log file for complete stacktrace
java.lang.AbstractMethodError: oracle.jms.AQjmsXAQueueConnectionFactory.createXAContext()Ljavax/jms/XAJMSContext;
at weblogic.deployment.jms.PsuedoXAJMSContext.<init>(PsuedoXAJMSContext.java:87)
at weblogic.deployment.jms.PrimaryContextHelper.openConnection(PrimaryContextHelper.java:355)
at weblogic.deployment.jms.PrimaryContextHelper.<init>(PrimaryContextHelper.java:180)
at weblogic.deployment.jms.PrimaryContextHelper$PrimaryContextHelperServiceGeneratorImpl.createPrimaryContextHelperService(PrimaryContextHelper.java:1205)
at weblogic.deployment.jms.PooledConnectionFactory.createNonPooledPrimaryContext(PooledConnectionFactory.java:562)
at weblogic.deployment.jms.PooledConnectionFactory.createContextInternal(PooledConnectionFactory.java:488)
at weblogic.deployment.jms.PooledConnectionFactory.createContext(PooledConnectionFactory.java:296)
at weblogic.jms.integration.injection.AbstractJMSContextManager.createContext(AbstractJMSContextManager.java:68)
at weblogic.jms.integration.injection.AbstractJMSContextManager.getContext(AbstractJMSContextManager.java:49)
at weblogic.jms.integration.injection.TransactedJMSContextManager$Proxy$_$$_WeldClientProxy.getContext(Unknown Source)
Truncated. see log file for complete stacktrace
我的代码最后运行的地方就是:
@Inject
@JMSConnectionFactory("MyConnectionFactory")
private JMSContext context;
BytesMessage bytesMessage = getContext().createBytesMessage();
我已经检查过 this JMS 2.0 documentation 似乎一切正常。 我可以从不同版本或类似的东西导入接口吗?
根据您日志中的这条消息:
JMS 2.0 method "createContext(int sessionMode)", called on the interface "javax.jms.ConnectionFactory", is not implemented by this JMS Provider.: java.lang.AbstractMethodError: oracle.jms.AQjmsXAQueueConnectionFactory.createXAContext()Ljavax/jms/XAJMSContext;
documentation you cited 只是一篇关于 JMS 2.0 规范中新增内容的文章。它没有说明 OAQ 为这些新功能提供了哪些支持。您收到错误消息的事实以及当您删除 OAQ 时它起作用的事实向我表明 OAQ 根本不支持 JMS 2.0。我建议您修改应用程序以使用 JMS 1.1 API.