簡體   English   中英

將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();

我已經檢查了此JMS 2.0文檔 ,似乎一切都應該正常工作。 我可以從其他版本或類似的版本導入接口嗎?

根據日志中的以下消息:

此JMS提供者未實現在接口“ javax.jms.ConnectionFactory”上調用的JMS 2.0方法“ createContext(int sessionMode)”。 / XAJMSContext;

您引用文檔只是有關JMS 2.0規范中的新增功能的文章。 它沒有說明OAQ為這些新功能提供了哪些支持。 您收到錯誤消息的事實以及在刪除OAQ時都能正常工作的事實向我表明,OAQ根本不支持JMS 2.0。 我建議您修改應用程序以使用JMS 1.1 API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM