linux下怎么配置jndi数据源配置

linux下怎么配置jndi数据源配置,第1张

一 首先要配置Tomcat的server.xml文件,在对应的web应用的<Context>中加入<Resource>元素,比如:

<Context path="/Manager" reloadable="true">

<Resource

name="hello"

type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver"

username="root"

password="123456"

maxIdle="4"

maxActive="4"

maxWait="5000"

url="jdbc:mysql://127.0.0.1/jspdev"

/>

</Context>

其中:

name:指定Resource的JNDI名字

type:指定Resource所属的Java类名

driverClassName:指定连接数据库的JDBC驱动程序

username:指定连接数据库的用户名

password:指定连接数据库的口令

maxIdle:指定数据库连接池中的最大空闲连接数目,0表示不受限制

maxActive:指定数据库连接池中的最大活动连接数目,0表示不受限制

maxWait:指定连接池中连接处于空闲状态的最长时间,超过会抛出异常,-1表示无限

url:指定连接数据库的URL

二 在Web应用中使用数据源:

javax.naming.Context提供了查找JNDI Resource的接口,可以通过三个步骤来使用数据源对象:

A.获得对数据源的引用:

Context ctx = new InitalContext()

DataSource ds =

(DataSource)ctx.lookup("java:comp/env/hello")

B.获得数据库连接对象:

Connection con = ds.getConnection()

C.返回数据库连接到连接池:

con.close()

在连接池中使用close()方法和在非连接池中使用close()方法的区别是:前者仅仅是把数据库连接对象返回到数据库连接池中,是连接对象又恢复到空闲状态,而非关闭数据库连接,而后者将直接关闭和数据库的连接。

三 如果通过数据源访问数据库,由于数据源由Servlet容器创建并维护,所以必须把JDBC驱动程序拷贝到Tomcat安装目录下的common/lib目录下,确保Servlet容器能够访问驱动程序。

是JDBC数据库连接吧?

先建立ODBC

一、jsp连接Oracle8/8i/9i数据库(用thin模式)

testoracle.jsp如下:

<%@ page contentType="text/htmlcharset=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/htmlcharset=gb2312"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance()

String url="jdbc:microsoft:sqlserver://localhost:1433DatabaseName=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/htmlcharset=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/htmlcharset=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=testuserpassword=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/htmlcharset=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/htmlcharset=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/htmlcharset=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>

方法/步骤

打开tomcat目录,进入conf配置目录,有个context.xml文件,一般建议把数据源配置放在这个文件里进行配置,放在server.xml也是可以的,但不建议这么做,server.xml文件一般是tomcat服务相关的配置

添加Resource节点,name就是JNDI资源访问的名称,注意和应用程序中保持一致,然后配置用户名和密码信息,如果是mysql,配置driverClass的就是mysql的驱动程序的类路径,如果是oracle,就配置对应的oracle驱动类路径。

maxPoolSize,minPoolSize,initialPoolSize这些是连接池相关的配置,可以根据应用的需要配置,一次配置不合适,可以多次调整

<Resource

name="jdbc/chargeService"

auth="Container"

type="com.mchange.v2.c3p0.ComboPooledDataSource"

factory="org.apache.naming.factory.BeanFactory"

user="root"

password="xxx"

driverClass="com.mysql.jdbc.Driver"

jdbcUrl="jdbc:mysql://xxx:3306/bus"

maxPoolSize="5"

minPoolSize="2"

initialPoolSize="3"

acquireIncrement="1"

maxIdleTime="300"

acquireRetryAttempts="30"

acquireRetryDelay="1000"

unreturnedConnectionTimeout="3000"

debugUnreturnedConnectionStackTraces="true"

checkoutTimeout="5000"

idleConnectionTestPeriod="60"

preferredTestQuery="SELECT CURRENT_USER"

/>

这里我们使用的数据源连接池是c3p0,所以得引入c3p0的c3p0-0.9.1.2.jar包,连接池的jar可以按照自己的需要选择,相关的实现方式有(dbcp,c3p0,proxool,druid)

这里我们使用的mysql数据库,所以引入的是mysql-connector-java-5.1.30.jar驱动包,如果是oracle或其它数据库,引入对于数据库的驱动包即可,然后在driverClass配置对于的驱动程序的类路径

tomcat数据源配置上之后,就可以在我们的应用程序中来获取数据源了。通过spring的

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName">

<value>java:comp/env/jdbc/chargeService</value>

</property>

</bean>

方法来获取

高版本的spring为我们提供了

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/chargeService"/>

方式配置,这种方式更为简洁方便,使用方式是一样的


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8665320.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-19
下一篇2023-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存