在
Tomcat
中添加
JNDI
数据源
2. 在 Web 项目中配置 resouce-ref
在项目的 web.xml 的根节点下添加以下内容:
<resource-ref>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
注意:这里 res-ref-name 必须与在 tomcat 中设置的 JNDI Name:jdbc/mysql(JNDI 名随便起 ) 一致。
3. 设置 $TOMCAT_HOME$/conf/server.xml
因为 TOMCAT 不会自动将 Data Source Resource 信息加到 Context 中,所以经常会忽略这一步
当前 server.xml 的内容为:
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycle Listener"/>
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleList ener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactor y"/>
<Resource name="jdbc/qeesoo" type="javax.sql.DataSource"
password="123" driverClassName="com.mysql.jdbc.Driver"
maxIdle="2" maxWait="5000" username="root"
url="jdbc:mysql://127.0.0.1:3306/qeesoo?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" maxActive="4"/>
</GlobalNamingResources>
<Service
name="Catalina">
<Connector
port="8080"
redirectPort="8443"
minSpareThreads="25"
connectionTimeout="60000"
connectionLinger="-1"
serverSoTimeout="0"
maxSpareThreads="75"
maxThreads="150"
tcpNoDelay="true"
maxHttpHeaderSize="8192">
</Connector>
<Connector
port="8009"
redirectPort="8443"
protocol="AJP/1.3">
</Connector>
<Engine
defaultHost="localhost"
name="Catalina">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
<Host
appBase="webapps"
name="localhost">
<Context
docBase="/test"
path="/test"
reloadable="true"
debug="5"
crossContext="true">
<Resource name="jdbc/qeesoo" type="javax.sql.DataSource"
password="123" driverClassName="com.mysql.jdbc.Driver"
maxIdle="2" maxWait="5000" username="root"
url="jdbc:mysql://127.0.0.1:3306/qeesoo?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8" maxActive="4"/>
</Context>
</Host>
</Engine>
</Service>
</Server>
4. 在 java 代码中使用 JNDI 资源获得 DataSource
javax.naming.InitialContext ctx = new javax.naming.InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");
Connection conn = ds.getConnection();
项目的web.xml的配置顺序:
2. 在 Web 项目中配置 resouce-ref
在项目的 web.xml 的根节点下添加以下内容:
注意:这里 res-ref-name 必须与在 tomcat 中设置的 JNDI Name:jdbc/mysql(JNDI 名随便起 ) 一致。
3. 设置 $TOMCAT_HOME$/conf/server.xml
因为 TOMCAT 不会自动将 Data Source Resource 信息加到 Context 中,所以经常会忽略这一步
当前 server.xml 的内容为:
<?xml version="1.0" encoding="UTF-8"?>
<Server>
</Server>
4. 在 java 代码中使用 JNDI 资源获得 DataSource
项目的web.xml的配置顺序:
icon (0 or 1 times)
display-name (0 or 1 times)
description (0 or 1 times)
distributable (0 or 1 times)
context-param (0 or more times)
filter (0 or more times)
filter-mapping (0 or more times)
listener (0 or more times)
servlet (0 or more times)
servlet-mapping (0 or more times)
session-config (0 or 1 times)
mime-mapping (0 or more times)
welcome-file-list (0 or 1 times)
error-page (0 or more times)
taglib (0 or more times)
resource-env-ref (0 or more times)
resource-ref (0 or more times)
security-constraint (0 or more times)
login-config (0 or 1 times)
security-role (0 or more times)
env-entry (0 or more times)
ejb-ref (0 or more times)
ejb-local-ref (0 or more times)