无法在 JUnit 中获得 JDBC 连接
Could not get JDBC connection in JUnit
我看过与此问题相关的其他帖子,但似乎无法理解 and/or 应用我的代码来解决此问题。因此,您的帮助将非常有帮助。
这是错误堆栈跟踪:
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot load JDBC driver class 'com.ibm.db2.jcc.DB2Driver'
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:627)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:692)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:724)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:734)
at org.springframework.jdbc.core.JdbcTemplate.queryForRowSet(JdbcTemplate.java:899)
at com.cinfin.edocs.services.dao.FormMatrixDaoImpl.validateNonProductionStatusInMatrix(FormMatrixDaoImpl.java:857)
at com.cinfin.edocs.services.dao.FormMatrixDaoImplTest.testValidateNonProductionStatusInMatrix(FormMatrixDaoImplTest.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:72)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:81)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:216)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:82)
at org.junit.runners.ParentRunner.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access[=11=]0(ParentRunner.java:53)
at org.junit.runners.ParentRunner.evaluate(ParentRunner.java:229)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:60)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:67)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:162)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.sql.SQLException: Cannot load JDBC driver class 'com.ibm.db2.jcc.DB2Driver'
at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2001)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1897)
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1413)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
... 36 more
Caused by: java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:1992)
... 40 more
我的 FormMatrixDaoImpl class:
import javax.sql.DataSource;
@Repository
public class FormMatrixDaoImpl extends NamedParameterJdbcDaoSupport implements FormMatrixDao {
@Autowired
public FormMatrixDaoImpl(@Qualifier("vitDataSource") DataSource dataSource, @Value("#{edocsQueryMap}") HashMap<String, String> edocsQueryMap) {
super();
@Override
public SqlRowSet validateNonProductionStatusInMatrix(String projectId) throws SQLException {
logger.info("validateNonProductionStatusInMatrix. projectId: "+projectId);
SqlRowSet ret = getJdbcTemplate().queryForRowSet(qValidateNonProductionStatusInMatrix, new Object[] {projectId});
return ret;
}
}
我的 FormMatrixDaoImplTest class:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:datasources.xml","classpath:edocservices.xml","classpath:edocservicesclients.xml", "/WEB-INF/edocservices-servlet.xml"})
@ActiveProfiles("local")
public class FormMatrixDaoImplTest {
@Autowired
private FormMatrixDaoImpl formMatrixDaoImpl;
public FormMatrixDaoImpl getFormMatrixDaoImpl() {
return formMatrixDaoImpl;
}
public void setFormMatrixDaoImpl(FormMatrixDaoImpl formMatrixDaoImpl) {
this.formMatrixDaoImpl = formMatrixDaoImpl;
}
@Test
public final void testValidateNonProductionStatusInMatrix() throws SQLException {
SqlRowSet test = formMatrixDaoImpl.validateNonProductionStatusInMatrix("0b003e8880072976");
assertEquals(test,null);
}
我的 datasources.xml 文件:
<?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:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd">
<beans profile="production,user,quality,development">
<bean id="vitDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true">
<description>JNDI VITEDOC DB2 datasource</description>
<property name="jndiName" value="${database.vitedoc.jndi}"/>
</bean>
<bean id="docDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true">
<description>JNDI DOCEDOC DB2 datasource</description>
<property name="jndiName" value="${database.docedoc.jndi}"/>
</bean>
<beans profile="local">
<bean id="vitDataSource" class="org.apache.commons.dbcp2.BasicDataSource" lazy-init="true" destroy-method="close">
<description>Standalone VITEDOC datasource</description>
<property name="driverClassName" value="${database.vitedoc.driver.classname}"/>
<property name="url" value="${database.vitedoc.url}" />
<property name="username" value="${database.vitedoc.username}"/>
<property name="password" value="${database.vitedoc.password}"/>
</bean>
<bean id="docDataSource" class="org.apache.commons.dbcp2.BasicDataSource" lazy-init="true" destroy-method="close">
<description>Standalone DOCEDOC datasource</description>
<property name="driverClassName" value="${database.docedoc.driver.classname}"/>
<property name="url" value="${database.docedoc.url}" />
<property name="username" value="${database.docedoc.username}"/>
<property name="password" value="${database.docedoc.password}"/>
</bean>
</beans>
我的 edocservices.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:ws="http://www.springframework.org/schema/web-services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jms="http://www.springframework.org/schema/jms"
xsi:schemaLocation="http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-4.1.xsd">
上面的 xml 有编组器、解组器、端点和 wsdls。
这是我的 edocservicesclient.xml 文件:
<?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:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-4.1.xsd">
<context:property-placeholder location="classpath:edocservices.properties"/>
<context:component-scan base-package="com.cinfin.edocs.services"/>
上面的xml还有一些其他的编组器、解组器和saajmessagefactory。
这是我的 edocservices-servlet.xml 文件:
<?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:context="http://www.springframework.org/schema/context" xmlns:oxm="http://www.springframework.org/schema/oxm"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.1.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd">
<context:property-placeholder location="classpath:edocservices.properties"/>
<context:component-scan base-package="com.cinfin.edocs.services"/>
<context:annotation-config/>
当我 运行 我的 FormMatrixDaoImplTest class 作为 JUnit 测试时,我得到无法获得 jdbc 连接错误。此错误仅与 JUnit 测试相关,并且在本地程序 运行s 时不会出现。所以我觉得我可能会遗漏一些 JUnit 设置或类似的东西。
任何在代码 and/or 中指出 errors/mistakes 指向其他方法来测试 运行 'select' 命令以从数据库检索数据的帮助将不胜感激。
提前致谢。
错误无法加载 JDBC 驱动程序 class 'com.ibm.db2.jcc.DB2Driver
' 指出包含 class 的 jar 在运行时 classpath 中不可用。确保包含 class 的罐子可用。
参考:How to Set Runtime classpath with eclipse
1) 从我上面的笔记中:
It sounds like you're probably using Spring on WebSphere. The core
error in your log is Cannot load JDBC driver class com.ibm.db2.jcc.DB2Driver
.
SUGGESTIONS:
- trace where your JNDI definitions (for example,
vitDataSource
) are defining their driver
classnames (like database.vitedoc.driver.classname
)
2) Make sure this
DB2Driver available as a JDBC resource in your WebSphere Admin
console
... and/or ...
3) Make sure the DB2 driver .jar is configured in your
pom.xml (if you're using Maven).
2) 您已确认:
"...the classname is defined as: database.vitedoc.driver.classname=com.ibm.db2.jcc.DB2Driver"
<= Good!
3) 所以现在你需要做的就是:
a) 确保你有一个有效的 db2jcc.jar:
http://www-01.ibm.com/support/docview.wss?uid=swg21363866
b) 确保 .jar 在类路径中
如果您是 运行 WebSphere,我更喜欢在 WebSphere 管理控制台中执行此操作:
如果这是一个简单的 Web 应用程序,您可以将它添加到 Eclipse 项目的 \lib 文件夹中:
以下是将第三方库添加到 eclipse 的方法。
- 打开 eclipse 转到包资源管理器。
- 右键单击您的项目和 select 项目属性。
- 单击 java 左侧栏中的构建路径
弹出。
- Select 库选项卡。
- Select "Add External Jar File" 并使用浏览器导航到您的 JAR 文件和 select 它们 "Open" 然后 "OK".
我看过与此问题相关的其他帖子,但似乎无法理解 and/or 应用我的代码来解决此问题。因此,您的帮助将非常有帮助。
这是错误堆栈跟踪:
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot load JDBC driver class 'com.ibm.db2.jcc.DB2Driver'
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:627)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:692)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:724)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:734)
at org.springframework.jdbc.core.JdbcTemplate.queryForRowSet(JdbcTemplate.java:899)
at com.cinfin.edocs.services.dao.FormMatrixDaoImpl.validateNonProductionStatusInMatrix(FormMatrixDaoImpl.java:857)
at com.cinfin.edocs.services.dao.FormMatrixDaoImplTest.testValidateNonProductionStatusInMatrix(FormMatrixDaoImplTest.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:72)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:81)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:216)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:82)
at org.junit.runners.ParentRunner.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access[=11=]0(ParentRunner.java:53)
at org.junit.runners.ParentRunner.evaluate(ParentRunner.java:229)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:60)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:67)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:162)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.sql.SQLException: Cannot load JDBC driver class 'com.ibm.db2.jcc.DB2Driver'
at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2001)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1897)
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1413)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
... 36 more
Caused by: java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
at java.net.URLClassLoader.run(URLClassLoader.java:366)
at java.net.URLClassLoader.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:1992)
... 40 more
我的 FormMatrixDaoImpl class:
import javax.sql.DataSource;
@Repository
public class FormMatrixDaoImpl extends NamedParameterJdbcDaoSupport implements FormMatrixDao {
@Autowired
public FormMatrixDaoImpl(@Qualifier("vitDataSource") DataSource dataSource, @Value("#{edocsQueryMap}") HashMap<String, String> edocsQueryMap) {
super();
@Override
public SqlRowSet validateNonProductionStatusInMatrix(String projectId) throws SQLException {
logger.info("validateNonProductionStatusInMatrix. projectId: "+projectId);
SqlRowSet ret = getJdbcTemplate().queryForRowSet(qValidateNonProductionStatusInMatrix, new Object[] {projectId});
return ret;
}
}
我的 FormMatrixDaoImplTest class:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:datasources.xml","classpath:edocservices.xml","classpath:edocservicesclients.xml", "/WEB-INF/edocservices-servlet.xml"})
@ActiveProfiles("local")
public class FormMatrixDaoImplTest {
@Autowired
private FormMatrixDaoImpl formMatrixDaoImpl;
public FormMatrixDaoImpl getFormMatrixDaoImpl() {
return formMatrixDaoImpl;
}
public void setFormMatrixDaoImpl(FormMatrixDaoImpl formMatrixDaoImpl) {
this.formMatrixDaoImpl = formMatrixDaoImpl;
}
@Test
public final void testValidateNonProductionStatusInMatrix() throws SQLException {
SqlRowSet test = formMatrixDaoImpl.validateNonProductionStatusInMatrix("0b003e8880072976");
assertEquals(test,null);
}
我的 datasources.xml 文件:
<?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:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd">
<beans profile="production,user,quality,development">
<bean id="vitDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true">
<description>JNDI VITEDOC DB2 datasource</description>
<property name="jndiName" value="${database.vitedoc.jndi}"/>
</bean>
<bean id="docDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true">
<description>JNDI DOCEDOC DB2 datasource</description>
<property name="jndiName" value="${database.docedoc.jndi}"/>
</bean>
<beans profile="local">
<bean id="vitDataSource" class="org.apache.commons.dbcp2.BasicDataSource" lazy-init="true" destroy-method="close">
<description>Standalone VITEDOC datasource</description>
<property name="driverClassName" value="${database.vitedoc.driver.classname}"/>
<property name="url" value="${database.vitedoc.url}" />
<property name="username" value="${database.vitedoc.username}"/>
<property name="password" value="${database.vitedoc.password}"/>
</bean>
<bean id="docDataSource" class="org.apache.commons.dbcp2.BasicDataSource" lazy-init="true" destroy-method="close">
<description>Standalone DOCEDOC datasource</description>
<property name="driverClassName" value="${database.docedoc.driver.classname}"/>
<property name="url" value="${database.docedoc.url}" />
<property name="username" value="${database.docedoc.username}"/>
<property name="password" value="${database.docedoc.password}"/>
</bean>
</beans>
我的 edocservices.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:ws="http://www.springframework.org/schema/web-services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jms="http://www.springframework.org/schema/jms"
xsi:schemaLocation="http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-4.1.xsd">
上面的 xml 有编组器、解组器、端点和 wsdls。
这是我的 edocservicesclient.xml 文件:
<?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:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-4.1.xsd">
<context:property-placeholder location="classpath:edocservices.properties"/>
<context:component-scan base-package="com.cinfin.edocs.services"/>
上面的xml还有一些其他的编组器、解组器和saajmessagefactory。
这是我的 edocservices-servlet.xml 文件:
<?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:context="http://www.springframework.org/schema/context" xmlns:oxm="http://www.springframework.org/schema/oxm"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p" xmlns:c="http://www.springframework.org/schema/c"
xmlns:cache="http://www.springframework.org/schema/cache" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.1.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd">
<context:property-placeholder location="classpath:edocservices.properties"/>
<context:component-scan base-package="com.cinfin.edocs.services"/>
<context:annotation-config/>
当我 运行 我的 FormMatrixDaoImplTest class 作为 JUnit 测试时,我得到无法获得 jdbc 连接错误。此错误仅与 JUnit 测试相关,并且在本地程序 运行s 时不会出现。所以我觉得我可能会遗漏一些 JUnit 设置或类似的东西。
任何在代码 and/or 中指出 errors/mistakes 指向其他方法来测试 运行 'select' 命令以从数据库检索数据的帮助将不胜感激。
提前致谢。
错误无法加载 JDBC 驱动程序 class 'com.ibm.db2.jcc.DB2Driver
' 指出包含 class 的 jar 在运行时 classpath 中不可用。确保包含 class 的罐子可用。
参考:How to Set Runtime classpath with eclipse
1) 从我上面的笔记中:
It sounds like you're probably using Spring on WebSphere. The core error in your log is
Cannot load JDBC driver class com.ibm.db2.jcc.DB2Driver
.SUGGESTIONS:
- trace where your JNDI definitions (for example,
vitDataSource
) are defining their driver classnames (likedatabase.vitedoc.driver.classname
)2) Make sure this DB2Driver available as a JDBC resource in your WebSphere Admin console ... and/or ...
3) Make sure the DB2 driver .jar is configured in your pom.xml (if you're using Maven).
2) 您已确认:
"...the classname is defined as: database.vitedoc.driver.classname=com.ibm.db2.jcc.DB2Driver"
<= Good!
3) 所以现在你需要做的就是:
a) 确保你有一个有效的 db2jcc.jar:
http://www-01.ibm.com/support/docview.wss?uid=swg21363866
b) 确保 .jar 在类路径中
如果您是 运行 WebSphere,我更喜欢在 WebSphere 管理控制台中执行此操作:
如果这是一个简单的 Web 应用程序,您可以将它添加到 Eclipse 项目的 \lib 文件夹中:
以下是将第三方库添加到 eclipse 的方法。
- 打开 eclipse 转到包资源管理器。
- 右键单击您的项目和 select 项目属性。
- 单击 java 左侧栏中的构建路径 弹出。
- Select 库选项卡。
- Select "Add External Jar File" 并使用浏览器导航到您的 JAR 文件和 select 它们 "Open" 然后 "OK".