Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法链接oracle/jms/AQjmsGenMessage_C_Oracle_Oracle11g_Oracle Aq - Fatal编程技术网

无法链接oracle/jms/AQjmsGenMessage_C

无法链接oracle/jms/AQjmsGenMessage_C,oracle,oracle11g,oracle-aq,Oracle,Oracle11g,Oracle Aq,我正试图使用SpringJDBC扩展和ApacheCamel将AQ和JBOSS应用程序链接起来。我想我的Spring配置是正确的,但是当我使用oracleXE安装提供的ojdbc6和aqapijar运行它时,我得到以下错误 JBWEB000287:将上下文初始化事件发送到类org.springframework.web.context.ContextLoaderListener:org.springframework.beans.factory.BeanCreationException的侦听器

我正试图使用SpringJDBC扩展和ApacheCamel将AQ和JBOSS应用程序链接起来。我想我的Spring配置是正确的,但是当我使用oracleXE安装提供的
ojdbc6
aqapi
jar运行它时,我得到以下错误

JBWEB000287:将上下文初始化事件发送到类org.springframework.web.context.ContextLoaderListener:org.springframework.beans.factory.BeanCreationException的侦听器实例时发生异常:创建在类路径资源[camel config.xml]中定义了名称为“aq”的bean时出错:设置bean属性“connectionFactory”时无法解析对bean“connectionFactory”的引用;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建名为“connectionFactory”的bean时出错:FactoryBean在创建对象时引发异常;嵌套异常为java.lang.LinkageError:未能链接oracle/jms/AQjmsGenMessage_C

如果我将
ojdbc6
jar换成
ojdbc14
我会得到更多。但是,当打开连接时,它不是
getConnection
调用的正确版本。我怀疑这是由于不兼容的库造成的,但这证明我可能是正确的

出于3个原因,我们需要保留
jndi
数据源

  • 密码需要从vault中获取,这更容易
  • 正如配置所示,我们正在使用hibernate在同一连接上的同一数据库中进行额外处理,因此保持相同的数据连接至关重要
  • 我们需要扩展,因此使用
    JBOSS
    数据源管理似乎是一个合乎逻辑的选择
  • 任何关于这方面的想法都是非常受欢迎的

    这是我的
    camel上下文和spring配置

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:orcl="http://www.springframework.org/schema/data/orcl"
           xmlns:jms="http://www.springframework.org/schema/jms"
           xmlns:camel="http://camel.apache.org/schema/spring"
           xmlns:jee="http://www.springframework.org/schema/jee"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.0.xsd
           http://www.springframework.org/schema/data/orcl
           http://www.springframework.org/schema/data/orcl/spring-data-orcl-1.0.xsd
           http://www.springframework.org/schema/jms
           http://www.springframework.org/schema/jms/spring-jms-3.0.xsd
           http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
    
        <context:annotation-config/>
    
        <tx:annotation-driven/>
    
        <bean id="aq" class="org.apache.camel.component.jms.JmsComponent">
            <property name="connectionFactory" ref="connectionFactory" />
            <property name="transactionManager" ref="transactionManager" />
        </bean>
    
        <orcl:aq-jms-connection-factory id="connectionFactory" 
            use-local-data-source-transaction="true"
            native-jdbc-extractor="jbossNativeJdbcExtractor"
            data-source="jbossDataSource"  />
    
        <bean id="transactionManager"
              class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="jbossDataSource"/>
        </bean>
    
        <bean id="jbossNativeJdbcExtractor" 
            class="org.springframework.jdbc.support.nativejdbc.JBossNativeJdbcExtractor"/>
    
        <jee:jndi-lookup id="jbossDataSource" jndi-name="cipDataSource"  />
    
    
      <camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
      <route>
        <from uri="servlet:///in"/>
        <choice>
          <when>
            <header>name</header>
            <transform>
              <simple>Hello ${header.name} how are you?</simple>
            </transform>
          </when>
          <otherwise>
            <transform>
              <constant>Add a name parameter to uri, eg ?name=foo</constant>
            </transform>
          </otherwise>
        </choice>
      </route>
      <route>
        <from uri="servlet:///tojms"/>
        <to pattern="InOnly" uri="aq:CIP.QSTART"/>
      </route>
    </camelContext>
    
    </beans>
    
    由于应用程序无法启动,因此ojdbc6.jar没有跟踪信息

    Edit2:我调回ojdbc6.jar,注意到war文件在WEB-INF/lib文件夹中缺少这个文件。正确地添加了它,现在的情况与ojdbc14.jar相同

    我可以运行tojmsservlet,但通过getConnection提取连接也会遇到同样的问题。stacktrace的相关部分似乎是

    oracle.jms.AQjmsException: Error creating the db_connection
        at oracle.jms.AQjmsDBConnMgr.getConnection(AQjmsDBConnMgr.java:625)
        at oracle.jms.AQjmsDBConnMgr.<init>(AQjmsDBConnMgr.java:399)
        at oracle.jms.AQjmsConnection.<init>(AQjmsConnection.java:249)
        at oracle.jms.AQjmsConnectionFactory.createConnection(AQjmsConnectionFactory.java:513)
        at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)
        at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:456)
        at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:180)
        at org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:355)
        at org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:311)
        at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:109)
    
    oracle.jms.AQjmsException:创建db_连接时出错
    位于oracle.jms.AQjmsDBConnMgr.getConnection(AQjmsDBConnMgr.java:625)
    位于oracle.jms.AQjmsDBConnMgr(AQjmsDBConnMgr.java:399)
    位于oracle.jms.AQjmsConnection(AQjmsConnection.java:249)
    位于oracle.jms.AQjmsConnectionFactory.createConnection(AQjmsConnectionFactory.java:513)
    位于org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)
    位于org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:456)
    位于org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:180)
    位于org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:355)
    位于org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:311)
    位于org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:109)
    
    当我切换到ojdbc14.jar时,我可以运行tojmsservlet,但是在JMS处理过程中发生了
    未分类的异常;嵌套异常为oracle.jms.aqjmscexception:创建db_连接时出错;嵌套异常为java.lang.IllegalArgumentException:对象不是实例
    oracle.jms.AQjmsException: Error creating the db_connection
        at oracle.jms.AQjmsDBConnMgr.getConnection(AQjmsDBConnMgr.java:625)
        at oracle.jms.AQjmsDBConnMgr.<init>(AQjmsDBConnMgr.java:399)
        at oracle.jms.AQjmsConnection.<init>(AQjmsConnection.java:249)
        at oracle.jms.AQjmsConnectionFactory.createConnection(AQjmsConnectionFactory.java:513)
        at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:184)
        at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:456)
        at org.apache.camel.component.jms.JmsConfiguration$CamelJmsTemplate.send(JmsConfiguration.java:180)
        at org.apache.camel.component.jms.JmsProducer.doSend(JmsProducer.java:355)
        at org.apache.camel.component.jms.JmsProducer.processInOnly(JmsProducer.java:311)
        at org.apache.camel.component.jms.JmsProducer.process(JmsProducer.java:109)