如何在Java配置文件中配置JNDI数据源,而不是在“web.xml”Servlet上下文中跟随代码片段:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/DatabaseName</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
答案 0 :(得分:8)
注意:不要忘记将“mysql-connector-java-5.1.36.jar”复制到主安装文件夹中的Tomcat的“lib”子文件夹中。
首先:在“pom.xml”文件中添加以下依赖项:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
第二:在“webapp”根文件夹中创建META-INF文件夹和“context.xml”文件如下图所示:
第三步:在“context.xml”文件中添加以下代码片段:
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="jdbc/DatabaseName" auth="Container" type="javax.sql.DataSource"
maxActive="50" maxIdle="30" maxWait="10000"
username="DatabaseUsername" password="DatabasePasssword"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/DatabaseName"/>
</Context>
第四:在Spring Context配置文件中创建以下Bean:
@Bean
public DataSource dataSource() {
JndiDataSourceLookup dataSource = new JndiDataSourceLookup();
dataSource.setResourceRef(true);
return dataSource.getDataSource("jdbc/DatabaseName");
}
注意:“jdbc / DatabaseName”是我们在“context.xml”文件中已经添加的“name”属性。
答案 1 :(得分:1)
要完成SMG回答:对于xml配置的Spring,我使用以下代码(请注意“webapp”配置文件,对于单元测试,您需要具有独立于Web服务器的数据源)
<beans profile="webapp">
<!-- get dataSources from web-container -->
<bean name="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton">
<property name="jndiName" value="java:comp/env/jdbc/DatabaseName" />
<property name="resourceRef" value="true" />
</bean>
</beans>
答案 2 :(得分:0)
可以通过3个步骤完成:
第1步:
在tomcat conf / server.xml中的 GlobalNamingResources 标记下添加以下条目。
<Resource auth="Container" driverClassName="DB_Drive_class-name" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/MyJNDI" password="&&&&&&&&&&&&&" type="javax.sql.DataSource" url="jdbc:db2://URL:PORT/DBNAME" username="&&&&&&&&&"/>
第2步:
在 context 根标记下的tomcat conf / context.xml中添加以下条目。
<ResourceLink name="jdbc/MyJNDI" global="jdbc/MyJNDI" type="javax.sql.DataSource"/>
第3步:
在 web.xml
中添加数据源引用<resource-ref>
<description>DB2 Datasource</description>
<res-ref-name>jdbc/MyJNDI</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
注意:这是全局Tomcat配置,并且可以与其他应用程序共享数据源。