【问题标题】:Facing issue using activemq with PostgresDB使用带有 PostgresDB 的 activemq 面临的问题
【发布时间】:2018-02-08 21:26:52
【问题描述】:

我在向 activmq 发布消息时遇到以下异常。我将 JBOSS 与使用 PostgresDB 的 ActiveMQ 一起使用。
我已经在目录中配置了下面的 activemq.xml 文件。

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">



    <bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource" destroy-method="close">    
    <property name="serverName" value="localhost"/>    
    <property name="databaseName" value="activemq"/>    
    <property name="portNumber" value="5432"/>    
    <property name="user" value="postgres"/>    
    <property name="password" value="admin123"/>    
    <property name="dataSourceName" value="postgres"/>    
    <property name="initialConnections" value="1"/>    
    <property name="maxConnections" value="10"/>  
</bean>

并且在broker标签中

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
<persistenceAdapter>            
        <jdbcPersistenceAdapter dataDirectory="activemq-data" dataSource="#postgres-ds" lockKeepAlivePeriod="5000">         
            <adapter>               
                <postgresql-jdbc-adapter/>          
            </adapter>              
            <locker>                    
                <lease-database-locker lockAcquireSleepInterval="10000"/>               
            </locker>           
        </jdbcPersistenceAdapter>        
    </persistenceAdapter>

下面已经在JBOSS中配置了standalone-full.xml文件。

<resource-adapters>
            <resource-adapter id="activemq-ra.rar">
                <archive>
                    activemq-ra.rar
                </archive>
                <transaction-support>XATransaction</transaction-support>
                <config-property name="ServerUrl">
                    tcp://localhost:61616
                </config-property>
                <connection-definitions>
                    <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="jms/ConnectionFactory" enabled="true" use-java-context="true" pool-name="ActiveMQConnectionFactoryPool" use-ccm="true">
                        <xa-pool>
                            <min-pool-size>1</min-pool-size>
                            <max-pool-size>20</max-pool-size>
                        </xa-pool>
                    </connection-definition>
                </connection-definitions>
                <admin-objects>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="queue/IP_NAME" enabled="true" use-java-context="true" pool-name="ActiveMQQueue.IP_NAME">
                        <config-property name="PhysicalName">
                            IP_NAME
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="queue/IP_NAME_2" enabled="true" use-java-context="true" pool-name="ActiveMQQueue.IP_NAME_2">
                        <config-property name="PhysicalName">
                            IP_NAME_2
                        </config-property>
                    </admin-object>
                </admin-objects>
            </resource-adapter>
        </resource-adapters>

例外:

17:31:28,466 WARN [com.arjuna.ats.jta] (http-localhost/127.0.0.1:8080-1) ARJUNA016041:准备在 (XAResourceWrapperImpl@1c956d35[xaResource=org.apache. activemq.ra.ActiveMQManagedConnection$1@5daa43e4 pad=false overrideRmValue=null productName=ActiveMQ productVersion=5.9.1 jndiName=java:/jms/ConnectionFactory]) 失败,出现异常 XAException.XAER_RMFAIL: javax.transaction.xa.XAException: javax/xml /绑定/数据类型转换器 在 org.apache.activemq.TransactionContext.toXAException(TransactionContext.java:793) 在 org.apache.activemq.TransactionContext.prepare(TransactionContext.java:487) 在 org.apache.activemq.ra.LocalAndXATransaction.prepare(LocalAndXATransaction.java:126) 在 org.jboss.jca.core.tx.jbossts.XAResourceWrapperImpl.prepare(XAResourceWrapperImpl.java:177) 在 com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelPrepare(XAResourceRecord.java:213) 在 com.arjuna.ats.arjuna.coordinator.BasicAction.doPrepare(BasicAction.java:2530) 在 com.arjuna.ats.arjuna.coordinator.BasicAction.doPrepare(BasicAction.java:2497) 在 com.arjuna.ats.arjuna.coordinator.BasicAction.prepare(BasicAction.java:2074) 在 com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1485) 在 com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:98) 在 com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162) 在 com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1189) 在 com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126) 在 com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75) 在 org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:92) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:284) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(CMTTxInterceptor.java:367) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:245) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat- 21] 在 org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat- 21] 在 org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat -21] 在 org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat- 21] 在 org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) [jboss-as-ee-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat- 21] 在 org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) [jboss-as-ee-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185) [jboss-as-ee-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat- 21] 在 org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:185) [jboss-as-ee-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21 ] 在 org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.2.Final-redhat-1.jar:1.1.2.Final-redhat-1] 在 org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73) [jboss-as-ee-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 com.deb.ec.courier.api.MessageBus$$$view4.publish(未知来源)[courier-core-1.3.0-SNAPSHOT.jar:1.3.0-SNAPSHOT] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_65] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_65] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_65] 在 java.lang.reflect.Method.invoke(Method.java:497) [rt.jar:1.8.0_65] 在 org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:267) [weld-core-1.1.28.Final-redhat-1.jar:1.1.28.Final-redhat-1] 在 org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52) [weld-core-1.1.28.Final-redhat-1.jar:1.1.28.Final-redhat-1] 在 org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:137) [weld-core-1.1.28.Final-redhat-1.jar:1.1.28.Final-redhat-1] 在 org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:263) [weld-core-1.1.28.Final-redhat-1.jar:1.1.28.Final-redhat-1] 在 org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:115) [weld-core-1.1.28.Final-redhat-1.jar:1.1.28.Final-redhat-1] 在 org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56) [weld-core-1.1.28.Final-redhat-1.jar:1.1.28.Final-redhat-1] 在 org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105) [weld-core-1.1.28.Final-redhat-1.jar:1.1.28.Final-redhat-1] 在 com.deb.ec.courier.jms.MessageBus$-1689182988$Proxy$_$$Weld$Proxy$.publish(MessageBus$-1689182988$Proxy$$$_Weld$Proxy$.java ) [courier-jms-1.3.0-SNAPSHOT.jar:1.3.0-SNAPSHOT] 在 com.deb.ec.courier.impl.CourierMessageBusSingleton.publish(CourierMessageBusSingleton.java:117) [courier-core-1.3.0-SNAPSHOT.jar:1.3.0-SNAPSHOT] 在 com.deb.ec.courier.impl.CourierPublishContract.publish(CourierPublishContract.java:26) [courier-core-1.3.0-SNAPSHOT.jar:1.3.0-SNAPSHOT] 在 com.deb.ec.courier.reference.ECRecordServlet.doPost(ECRecordServlet.java:72) [类:] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-2.jar:1.0.2.Final-redhat-2] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-2.jar:1.0.2.Final-redhat-2] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 com.deb.service.provider.server.web.SpfServletFilter.doFilter(SpfServletFilter.java:68) [service-provider-3.3.1.jar:3.3.1] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) [jboss-as-web-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:150) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:854) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) [jbossweb-7.5.7.Final-redhat-1.jar:7.5.7.Final-redhat-1] 在 java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_65] 引起:javax.jms.JMSException:javax/xml/bind/DatatypeConverter 在 org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:54) 在 org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1408) 在 org.apache.activemq.TransactionContext.syncSendPacketWithInterruptionHandling(TransactionContext.java:757) 在 org.apache.activemq.TransactionContext.prepare(TransactionContext.java:453) ... 71 更多 引起:java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter 在 org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doAddMessage(DefaultJDBCAdapter.java:242) 在 org.apache.activemq.store.jdbc.JDBCMessageStore.addMessage(JDBCMessageStore.java:158) 在 org.apache.activemq.store.memory.MemoryTransactionStore$3.run(MemoryTransactionStore.java:342) 在 org.apache.activemq.store.jdbc.JdbcMemoryTransactionStore.prepare(JdbcMemoryTransactionStore.java:75) 在 org.apache.activemq.transaction.XATransaction.prepare(XATransaction.java:188) 在 org.apache.activemq.broker.TransactionBroker.prepareTransaction(TransactionBroker.java:247) 在 org.apache.activemq.broker.BrokerFilter.prepareTransaction(BrokerFilter.java:129) 在 org.apache.activemq.broker.TransportConnection.processPrepareTransaction(TransportConnection.java:510) 在 org.apache.activemq.command.TransactionInfo.visit(TransactionInfo.java:98) 在 org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:330) 在 org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:194) 在 org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50) 在 org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125) 在 org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:301) 在 org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83) 在 org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233) 在 org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215) 在 java.lang.Thread.run(Unknown Source) [rt.jar:1.8.0_65]

17:31:28,478 WARN [com.arjuna.ats.arjuna] (http-localhost/127.0.0.1:8080-1) ARJUNA012073: BasicAction.End() - action-id 0:ffff0a4b02b4:34361599 的准备阶段:5a7aea01:26 失败。 17:31:28,478 WARN [com.arjuna.ats.arjuna] (http-localhost/127.0.0.1:8080-1) ARJUNA012075:操作中止 17:31:28,716 错误 [org.jboss.as.ejb3.invocation] (http-localhost/127.0.0.1:8080-1) JBAS014134:组件 TransactionalJmsMessageBus 上的 EJB 调用失败,用于方法 public abstract void com.deb.ec.courier .api.MessageBus.publish(java.lang.String,com.deb.ec.courier.api.CourierMessage) 抛出 com.deb.ec.courier.error.CourierException: javax.ejb.EJBTransactionRolledbackException: 事务回滚 在 org.jboss.as.ejb3.tx.CMTTxInterceptor.handleEndTransactionException(CMTTxInterceptor.java:138) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:118) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:284) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(CMTTxInterceptor.java:367) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21] 在 org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:245) [jboss-as-ejb3-7.5.0.Final-redhat-21.jar:7.5.0.Final-redhat-21]

【问题讨论】:

  • 请注意,我确实在编辑过程中将&lt;bean&gt; 添加到您的问题中的原始“代码”/xml 中(您可能还看不到它),因为它丢失了。是不是真的不见了?
  • 另外,您收到此错误Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter 是与您的应用程序一起部署的 jdbc 驱动程序还是它存在于服务器的 lib 文件夹中?
  • 您好 JGlass,感谢您的回复。正确修改了标签。我正在使用 postgresql-9.1-901-1.jdbc4.jar 作为 postgres 驱动程序。
  • 您好 JGlass,上述问题已解决,这是由于 jdk9.在 jdk9 DatatypeConverter.java 文件中不存在。已将 jdk9 用于 ActiveMQ 和 Jboss 中的 jdk1.8,这就是问题的原因。谢谢

标签: java jboss jms activemq


【解决方案1】:

上面的问题得到了解决这是因为jdk9。在 jdk9 DatatypeConverter.java 文件中不存在。已经在 J​​boss 中将 jdk9 用于 ActiveMQ 和 jdk1.8,这就是为什么问题。现在我将 jdk9 更改为 jdk1.8,以上问题得到解决。谢谢

【讨论】:

  • 很高兴看到您成功了!我很惊讶 JBoss 甚至在 JDK9 下运行?我是否可以建议您接受自己的答案,例如点击灰色复选框 - 这样它就不会显示为未回答!
  • 没有JGlass,JBoss在java1.8下运行。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 1970-01-01
相关资源
最近更新 更多