怎样配置tomcat的jndi数据库连接?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样配置tomcat的jndi数据库连接?相关的知识,希望对你有一定的参考价值。

参考技术A 是JDBC数据库连接吧?
先建立ODBC
一、jsp连接Oracle8/8i/9i数据库(用thin模式)
testoracle.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为你的数据库的SID
String user="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) %>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
二、jsp连接Sql Server7.0/2000数据库
testsqlserver.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) %>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
三、jsp连接DB2数据库
testdb2.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) %>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
四、jsp连接Informix数据库
testinformix.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) %>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
五、jsp连接Sybase数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/tsdata";
//tsdata为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) %>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
六、jsp连接MySQL数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) %>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
七、jsp连接PostgreSQL数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/soft"
//soft为你的数据库名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) %>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
参考技术B 1楼的答非所问,还是我来答吧。

如果是tomcat5以下,则修改conf/server.xml文件,tomcat5及以上则修改/conf/Catalina/localhost目录中的一个xml文件。在</Host>行之前插入如下的一段标签:

(以oralce为例,假设你应用的上下文根是/test,jndi是jdbc/test)

<Context path="/test" docBase="E:\test" >

<Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
<parameter>
<name>username</name>
<value>system</value>
</parameter>
<parameter>
<name>password</name>
<value>manager</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@192.168.0.27:1521:titan</value>
</parameter>
</ResourceParams>
</Context>

有点乱,但相信你看得懂。本回答被提问者采纳

Tomcat,Jboss,Weblogic通过jndi连接数据库

  1. 1.  Tomcat配置Jndi数据源

1.1在tomcat服务器的lib目录下加入数据库连接的驱动jar包

1.2修改tomcat服务器的conf目录下server.xml配置文件

编辑server.xml文件,添加全局JNDI数据源配置,配置如下:

<GlobalNamingResources>

    <Resource name="UserDatabase" auth="Container"

              type="org.apache.catalina.UserDatabase"

              description="User database that can be updated and saved"

              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

              pathname="conf/tomcat-users.xml" />

    <!--

       |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,

            为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。

       |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效

       |- type:此名称所代表的类型,现在为javax.sql.DataSource

       |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数

       |- maxIdle:表示一个数据库在此服务器上维持的最小连接数

       |- maxWait:最大等待时间。10000毫秒

       |- username:数据库连接的用户名

       |- password:数据库连接的密码

       |- driverClassName:数据库连接的驱动程序

       |- url:数据库连接的地址

    -->

 <!--配置MySQL数据库的JNDI数据源-->

 <Resource

         name="jdbc/mysql"

         auth="Container[t1] "

         type="javax.sql.DataSource"

         maxActive="100"

         maxIdle="30"

         maxWait="10000"

         username="root"

         password="tingyun2o13"

         driverClassName="com.mysql.jdbc.Driver"

         url="jdbc:mysql://192.168.2.129:3306/javatest"/>

  </GlobalNamingResources>

 

1.3在tomcat的conf目录下打开context.xml配置文件.(不存在就创建^_^)

  1.3.1配置连接池

   <?xml version="1.0" encoding="UTF-8"?>

<!-- The contents of this file will be loaded for each web application -->

<Context>

 

    <!-- Default set of monitored resources. If one of these changes, the    -->

    <!-- web application will be reloaded.                                   -->

    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

     <!--配置一个连接池-->

     <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />  [t2] 

     <!--

    <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" /> 

    <WatchedResource>WEB-INF/web.xml</WatchedResource> 

     -->

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->

    <!--

    <Manager pathname="" />

    -->

</Context>

 

1.4重新启动tomcat,通过jndi访问应用

参考博客:

   http://blog.csdn.net/samjustin1/article/details/52265803

   http://www.cnblogs.com/xkl520xka/p/5899876.html

 

 

  1. 2.  Jboss配置Jndi数据源

2.1        首先将数据库的驱动jar文件拷贝到jboss解压文件后server\\default\\lib目录里面(比如mysql,oracle,db2等)

2.2        在docs\\examples\\jca找到mysql-ds.xml将该文件拷贝到server\\default\\deploy目录下面 

2.3        打开mysql-ds.xml可以看到数据的链接配置,根据自己的数据库修改好配置,下面是我自己的配置,大家可以根据自己的数据库,具体进行修改 

 <?xml version="1.0" encoding="UTF-8"?>

<datasources>

  <local-tx-datasource>

    <jndi-name>DB2DS</jndi-name>

   <use-java-context>false</use-java-context>

    <connection-url>jdbc:db2://192.168.2.129:50000/test1</connection-url>

    <driver-class>COM.ibm.db2.jdbc.app.DB2Driver</driver-class>

    <user-name>db2inst1</user-name>

    <password>nbs2o13</password>[t3] 

    <min-pool-size>0</min-pool-size>

      <metadata>

         <type-mapping>DB2</type-mapping>

      </metadata>

  </local-tx-datasource>

</datasources>

 

2.4        配置好后,启动Jboss,打开浏览器,访问http://localhost:8080/jmx-console/,在页面左侧点击jboss.jca,右侧可查看到

name= DB2DS,service=DataSourceBinding  

name= DB2DS,service=LocalTxCM  

name= DB2DS,service=ManagedConnectionFactory  

name= DB2DS,service=ManagedConnectionPool

说明数据源发布成功 

启动Jboss,执行测试,发现数据源不能拿到的,但是我们的数据源是发布成功的,查找资料后发现需要在发布的数据源mysql-ds.xml里面加上<use-java-context>false</use-java-context> 
然后执行测试,测试可通过,到此JBOSS发布JNDI数据源成功 

参考博客:

 http://sence-qi.iteye.com/blog/1561750

http://blog.sina.com.cn/s/blog_676015470100oidr.html


 [t1]红色为需要配置的信息

 [t2]红色为需要配置的信息

 [t3]红色为自己要配置的信息

<use-java-context>false</use-java-context>可以不添加

以上是关于怎样配置tomcat的jndi数据库连接?的主要内容,如果未能解决你的问题,请参考以下文章

JNDI学习总结:tomcat下使用c3p0数据库连接池配置JNDI数据源

Spring+Tomcat的JNDI数据源连接池简单配置

配置hibernate 4通过tomcat 7中的JNDI Datasource连接数据库

在tomcat下context.xml中配置各种数据库连接池(JNDI)

JNDI连接数据库的详细步骤

tomcat服务器连接MySQL数据库的JNDI数据源配置以及获得连接的Java代码