我正在尝试将 ActiveMQ persitenceAdapter 设置为 Oracle 11g (11.2) 数据库。通过 Tanuki 包装器启动 ActiveMQ 时,出现无法加载 JDBC 驱动程序类“oracle.jdbc.driver.OracleDriver”异常。我在网上搜索了几个小时,但没有找到任何相关的答案。我的类路径是正确的。
我觉得 Tanuki 包装器没有考虑我的类路径自定义。
如果您发现任何问题或提供一个工作示例,请告诉我
我的设置是:
activemq.xml
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="test1" dataDirectory="/path/to/existing">
...
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="/path/to/existing/activemq-data" dataSource="#oracle-ds"/>
</persistenceAdapter>
...
</broker>
<bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value=" jdbc:oracle:thin:@db.domain:1521:DEV01 "/>
<property name="username" value="username"/>
<property name="password" value="password"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
<import resource="jetty.xml"/>
包装器.conf
wrapper.java.classpath.1=%ACTIVEMQ_HOME%/bin/wrapper.jar
wrapper.java.classpath.2=%ACTIVEMQ_HOME%/bin/activemq.jar
wrapper.java.classpath.3=%ACTIVEMQ_HOME%/lib/*
wrapper.java.classpath.4=%ACTIVEMQ_HOME%/lib/optional/ojdbc6.jar
完整的堆栈跟踪
2013-09-24 14:07:15,973 | 错误 | 加载失败:类路径资源 [activemq.xml],原因:在类路径资源 [activemq.xml] 中定义名称为“org.apache.activemq.xbean.XBeanBrokerService#0”的 bean 创建错误:调用 init 方法失败;嵌套异常 是 java.io.IOException:无法为连接 URL 'jdbc:oracle:thin:@db.domain:1521:DEV01' 创建类 'oracle.jdbc.driver.OracleDriver' 的 JDBC 驱动程序 | org.apache.activemq.xbean.XBeanBrokerFactory | WrapperSimpleAppMain org.springframework.beans.factory.BeanCreationException:在类路径资源 [activemq.xml] 中定义名称为“org.apache.activemq.xbean.XBeanBrokerService#0”的 bean 创建错误:调用 init 方法失败;嵌套异常是 java.io.IOException: 无法创建 用于连接 URL 'jdbc:oracle:thin:@db.domain:1521:DEV01' 的类 'oracle.jdbc.driver.OracleDriver' 的 JDBC 驱动程序 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:605) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472) 在 org.apache.xbean.spring.context.ResourceXmlApplicationContext.(ResourceXmlApplicationContext.java:64) 在 org.apache.xbean.spring.context.ResourceXmlApplicationContext.(ResourceXmlApplicationContext.java:52) 在 org.apache.activemq.xbean.XBeanBrokerFactory$1.(XBeanBrokerFactory.java:101) 在 org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:101) 在 org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:65) 在 org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) 在 org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) 在 org.apache.activemq.console.command.StartCommand.startBroker(StartCommand.java:125) 在 org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:84) 在 org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) 在 org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:150) 在 org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) 在 org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.apache.activemq.console.Main.runTaskClass(Main.java:262) 在 org.apache.activemq.console.Main.main(Main.java:115) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240) 在 java.lang.Thread.run(Thread.java:722) 原因:java.io.IOException:无法为连接 URL 'jdbc:oracle:thin:@db.domain:1521:DEV01' 创建类 'oracle.jdbc.driver.OracleDriver' 的 JDBC 驱动程序 在 org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:45) 在 org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:68) 在 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.loadAdapter(JDBCPersistenceAdapter.java:434) 在 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.createAdapter(JDBCPersistenceAdapter.java:417) 在 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.getAdapter(JDBCPersistenceAdapter.java:366) 在 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.init(JDBCPersistenceAdapter.java:288) 在 org.apache.activemq.broker.LockableServiceSupport.preStart(LockableServiceSupport.java:79) 在 org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:54) 在 org.apache.activemq.broker.BrokerService.doStartPersistenceAdapter(BrokerService.java:598) 在 org.apache.activemq.broker.BrokerService.startPersistenceAdapter(BrokerService.java:587) 在 org.apache.activemq.broker.BrokerService.start(BrokerService.java:552) 在 org.apache.activemq.xbean.XBeanBrokerService.afterPropertiesSet(XBeanBrokerService.java:60) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1581) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1522) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452) ... 34 更多 原因:org.apache.commons.dbcp.SQLNestedException:无法为连接 URL 'jdbc:oracle:thin:@db.domain:1521:DEV01' 创建类 'oracle.jdbc.driver.OracleDriver' 的 JDBC 驱动程序 在 org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452) 在 org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371) 在 org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) 在 org.apache.activemq.store.jdbc.TransactionContext.getConnection(TransactionContext.java:58) ... 51 更多 原因:java.sql.SQLException:没有合适的驱动程序 在 java.sql.DriverManager.getDriver(DriverManager.java:289) 在 org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437) ... 54 更多