jndi 数据源配置详解
2014-05-04 11:21
323 查看
web.xml中:
在<web-app>中加入以下内容
<resource-ref>
<description>java_min</description>
<res-ref-name>datasourceName</res-ref-name>
数据源名称,与tomcat中中的server.xml中的数据源名字保持相同
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
server.xml中:
在<host>中加入以下内容
<Context
docBase="编译后的工程的绝对路径"
path="/projectName"
reloadable="true">
<Resource name="datasourceName" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/ssprds">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>net.sourceforge.jtds.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:jtds:sqlserver://misdev10:1433/test_db;tds=8.0;lastupdatecount=true</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>50000</value>
</parameter>
</ResourceParams>
</Context>
java代码中:
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:comp/env"); 固定写法
DataSource ds = (DataSource) envContext.lookup(datasourceName); 数据源名称,与web.xml中的相同
conn = ds.getConnection(userName, password);
==============================================
JNDI配置步骤:
1.JNDI是 java naming and directory interface 作用是用来完成从服务器(tomcat)中查询数据源,与以往的JDBC的使用不太相同,但是JNDI的作用恰恰帮我们完成了JDBC的获得Connection对象的步骤。
2.JDBC获得是一个连接对象,但是JNDI是帮我们获得一个数据池,数据池中有多个连接,我们可以任意获得一个连接,所以JNDI在完成数据库连接时能够提供数据库连接一个限定等配置!!
具体步骤如下:
1.配置服务器(tomcat)的conf/context.xml文件
添加如下节点:
<Resource
name="jdbc/books" 数据源名称
auth="Container" 数据源由服务器创建
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="test"
password="123456"
dirverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databasename=数据库名字"
/>
2.添加JAR包到tomcat安装目录下的lib文件夹下
3.配置web.xml文件
<resource-ref>
<res-ref-name>jdbc/books</res-ref-name> 这个值是要和conf/context.xml文件中name属性值相同
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
通过以上几步的配置基本完成。
剩下就是测试代码:
try {
Context ctx = new InitialContext();
//此处要添加的是查找数据源的名字 但是要加前缀java:comp/env
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/books");
Connection conn = ds.getConnection(); //通过数据源获得数据源中的连接
String sql = "select * from person";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}
注意:以上测试代码需要写在servlet中,因为数据源对象是在服务器(tomcat)中加载创建的,所以启动tomcat后会自动创建dataSource对象
==========================公司实例======================
1.配置服务器(tomcat)的conf/context.xml文件
2.添加JAR包到tomcat安装目录下的lib文件夹下
3.配置web.xml文件
通过以上几步的配置基本完成。
剩下就是测试代码:
在<web-app>中加入以下内容
<resource-ref>
<description>java_min</description>
<res-ref-name>datasourceName</res-ref-name>
数据源名称,与tomcat中中的server.xml中的数据源名字保持相同
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
server.xml中:
在<host>中加入以下内容
<Context
docBase="编译后的工程的绝对路径"
path="/projectName"
reloadable="true">
<Resource name="datasourceName" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/ssprds">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>net.sourceforge.jtds.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:jtds:sqlserver://misdev10:1433/test_db;tds=8.0;lastupdatecount=true</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>50000</value>
</parameter>
</ResourceParams>
</Context>
java代码中:
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:comp/env"); 固定写法
DataSource ds = (DataSource) envContext.lookup(datasourceName); 数据源名称,与web.xml中的相同
conn = ds.getConnection(userName, password);
==============================================
JNDI配置步骤:
1.JNDI是 java naming and directory interface 作用是用来完成从服务器(tomcat)中查询数据源,与以往的JDBC的使用不太相同,但是JNDI的作用恰恰帮我们完成了JDBC的获得Connection对象的步骤。
2.JDBC获得是一个连接对象,但是JNDI是帮我们获得一个数据池,数据池中有多个连接,我们可以任意获得一个连接,所以JNDI在完成数据库连接时能够提供数据库连接一个限定等配置!!
具体步骤如下:
1.配置服务器(tomcat)的conf/context.xml文件
添加如下节点:
<Resource
name="jdbc/books" 数据源名称
auth="Container" 数据源由服务器创建
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="test"
password="123456"
dirverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databasename=数据库名字"
/>
2.添加JAR包到tomcat安装目录下的lib文件夹下
3.配置web.xml文件
<resource-ref>
<res-ref-name>jdbc/books</res-ref-name> 这个值是要和conf/context.xml文件中name属性值相同
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
通过以上几步的配置基本完成。
剩下就是测试代码:
try {
Context ctx = new InitialContext();
//此处要添加的是查找数据源的名字 但是要加前缀java:comp/env
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/books");
Connection conn = ds.getConnection(); //通过数据源获得数据源中的连接
String sql = "select * from person";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}
注意:以上测试代码需要写在servlet中,因为数据源对象是在服务器(tomcat)中加载创建的,所以启动tomcat后会自动创建dataSource对象
==========================公司实例======================
1.配置服务器(tomcat)的conf/context.xml文件
<?xml version='1.0' encoding='GBK'?> <Context crossContext="true" debug="5" docBase="E:\Workspaces\mytest\测试\Web" path="/test" reloadable="true"> <Resource name="jdbc/cdmcsbussrv_ds" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/cdmcsbussrv_ds"> <parameter> <name>maxActive</name> <value>5</value> </parameter> <parameter> <name>maxIdle</name> <value>1</value> </parameter> <parameter> <name>maxWait</name> <value>100</value> </parameter> <parameter> <name>username</name> <value>scott</value> </parameter> <parameter> <name>password</name> <value>tiger</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.OracleDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:@195.2.199.5:1521:cqcgsorcl</value> <!--<value>jdbc:oracle:thin:@www.cdmcs.com:1521:cqcgsorcl</value>--> </parameter> </ResourceParams> <Resource name="jdbc/cgsapp_ds" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/cgsapp_ds"> <parameter> <name>maxActive</name> <value>5</value> </parameter> <parameter> <name>maxIdle</name> <value>1</value> </parameter> <parameter> <name>maxWait</name> <value>100</value> </parameter> <parameter> <name>username</name> <value>scott</value> </parameter> <parameter> <name>password</name> <value>tiger</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.OracleDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:@195.2.199.5:1521:cqcgsorcl</value> <!--<value>jdbc:oracle:thin:@www.cdmcs.com:1521:cqcgsorcl</value>--> </parameter> </ResourceParams> </Context>
2.添加JAR包到tomcat安装目录下的lib文件夹下
3.配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file> index.html </welcome-file> <welcome-file> index.jsp </welcome-file> </welcome-file-list> <listener> <description>Online user count</description> <listener-class>mweb.FwlSessionLis</listener-class> </listener> <servlet> <servlet-name>login</servlet-name> <servlet-class>servlet.UserLoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <!-- 数据库连接 --> <resource-ref> <res-ref-name>jdbc/cdmcsbussrv_ds</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> <resource-ref> <res-ref-name>jdbc/cgsapp_ds</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> <error-page> <error-code>401</error-code> <location>/error.jsp</location> </error-page> <error-page> <error-code>403</error-code> <location>/error.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page> </web-app>
通过以上几步的配置基本完成。
剩下就是测试代码:
private static String dbsource = "jdbc/cgsapp_ds"; private static DataSource ds = null; private static Object mtx = new Object(); private static Logger logger = Logger.getLogger( DBUtil.class); public static Connection getConn() throws SQLException{ Connection conn; try { if (ds == null) { synchronized( mtx ){ InitialContext ctx = new InitialContext(); logger.info("取数据源:"+dbsource); ds = (DataSource) ctx.lookup("java:comp/env/"+dbsource); } } logger.info("取连接:"+dbsource); conn = ds.getConnection(); return conn; } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); throw new SQLException("取数据源("+dbsource+")失败 !"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); throw new SQLException("获取数据库连接失败!"); } }
相关文章推荐
- HighCharts饼图
- 串行乘法与并行乘法
- HighCharts饼图
- 监控---pnp4nagios 编译出错
- 处理记录
- Linux多线程中使用信号-2
- 计算机的专业教程
- 第二季来袭:奶茶妹妹都用Lync开会了,你们一定要知道的Lync会议的秘密噢~
- android面试题整理
- X86 Booting Sequence
- Conceptual blockbusting--chap7 Kinds of blockbusters
- 平常遇见的错误问题解决
- jquery中的ajax方法怎样通过JSONP进行远程调用
- awk
- Harris语言串分析法
- 通用sqlserver分页存储过程
- IIS应用地址池监控方法
- JDK动态代理小例子
- 控制台下建GUI应用程序
- ios Control reaches end of non-void function问题 -- 日记