關(guān)鍵字:Tomcat6.0配置JNDI數(shù)據(jù)源
注意事項(xiàng):tomcat JDK 一定要和 應(yīng)用程序的JDK 版本一致(本例中統(tǒng)一JDK1.6)
說明:tomcat5.5與6.0的配置略有不同,即:tomcat的lib位置不同(其他完全一致),
6.0位置是:D:\我的工具\(yùn)apache-tomcat-6.0.10\lib下
5.5位置是:D:\我的工具\(yùn)apache-tomcat-5.5.17\common\lib
局部數(shù)據(jù)源步驟:
一、拷貝數(shù)據(jù)庫驅(qū)動到:D:\我的工具\(yùn)apache-tomcat-6.0.10\lib下,這里是(ojdbc14.jar)
二、配置context.xml文件(此步驟兩種配法)
方法一:使用tomcat的context.xml文件
配置D:\我的工具\(yùn)apache-tomcat-6.0.10\conf\context.xml中加入以下配置:
注意:下面配置放到<Context>中
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource"
username="zsj"
password="zsj"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:zsj"
maxActive="100"
maxIdle="30"
maxWait="10000"/>
方法二:在應(yīng)用中新建一個(gè)context.xml文件進(jìn)行配置
在WebRoot目錄下META-INF的目錄(假如不存在則新建),
在該目錄下創(chuàng)建一個(gè)context.xml文件,并且在context.xml文件當(dāng)添加以下的配置信息:
<Context>
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource"
username="zsj"
password="zsj"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:zsj"
maxActive="100"
maxIdle="30"
maxWait="10000"/>
</Context>
三、應(yīng)用的web.xml配置(Tomcat建議在web.xml中添加以下內(nèi)容,但這不是必須的。)
<resource-ref>
<description>OracleDataSource</description>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
四、使用數(shù)據(jù)源連接數(shù)據(jù)庫
private Connection getConnection() throws NamingException {
Connection conn = null;
String jndi = "jdbc/test";
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");//固定,不需要修改
DataSource ds = (DataSource)envContext.lookup(jndi);
if(ds != null){
try {
conn = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
}
public List<String> selectById(int id) throws InstantiationException, IllegalAccessException{
Connection con = null;
try {
con = getConnection();
} catch (NamingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
List<String> list = new ArrayList<String>();
String sql="select * from myusers where id=?";
try {
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
list.add(rs.getString(1));
list.add(rs.getString(2));
list.add(rs.getString(3));
System.out.println(rs.getString(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
全局?jǐn)?shù)據(jù)源配置:
一、1、直接在${CATALINA_HOME}\conf\server.xml的GlobalNamingResources標(biāo)簽中增加一下內(nèi)容:
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource"
username="zsj"
password="zsj"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:zsj"
maxActive="100"
maxIdle="30"
maxWait="10000"/>
二、在tomcat的context.xml的Context中增加:
<ResourceLink global="jdbc/test" name="jdbc/test2" type="javax.sql.DataSource"/>
說明:jdbc/test是全局的JNDI,jdbc/test2是你的應(yīng)用中使用的JNDI
當(dāng)然也可以在應(yīng)用程序的WebRoot\META-INF\下新建context.xml,然后中增加:
<Context>
<ResourceLink global="jdbc/test" name="jdbc/test2" type="javax.sql.DataSource"/>
</Context>
三、直接在代碼中使用該JNDI即可(web.xml無需任何配置了)
hibernate使用tomcat數(shù)據(jù)源
1,建立一個(gè)context.xml文件放到webroot的META-INF文件夾下。內(nèi)容如下:
<Context>
<Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource"
username="zsj"
password="zsj"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:zsj"
maxActive="100"
maxIdle="30"
maxWait="10000"/>
</Context>
2、配置hibernate.cfg.xml文件
指定數(shù)據(jù)庫方言
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
指定JNDI名稱(這里JNDI名稱為:jdbc/myhibernate)
<property name="connection.datasource">java:comp/env/jdbc/test</property>
spring引用tomcat數(shù)據(jù)源
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/sxmicsss" />
</bean>
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。