- 浏览: 110528 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
liuyiisme:
[i][/i][b][/b][u][/u]
[url][ ...
JFileChooser -
xyc717:
你前面那黄色字颜色能在恶心点么……
this.form.el is undefined FormPanel或Panel加载数据 -
里克尔奇:
您好,谢谢你的文章,我测试了一下,但是视频没有充满播放器啊!急 ...
视频点播系统 -
就一剑1:
<s:intercept-url pattern=&qu ...
springside3.3.1 spring security -
yu11223344:
能把权限控制的xml的形式改成查数据库吗?
springside3.3.1 spring security
1.在Tomcat中添加JNDI数据源
建议用Tomcat的Adiminstration添加。在默认情况下,Tomcat没有安装administration组件,详细安装步骤请参考《Install the component Admin for tomcat》。
登陆http://localhost:8080/admin, 进入Resources -> Data Sources -> Create New Data Source
设置JNDI参数:(这里以MySql为例)
JNDI Name:jdbc/mysql(JNDI 名随便起)
Data Source URL:jdbc:mysql://localhost:3306/test(这里test是数据库名,当然后面还可以带其他参数,如:jdbc: mysql://localhost:3306/test?user=root&password=&useUnicode=true& characterEncoding=gbk&autoReconnect=true&failOverReadOnly=false)
JDBC Driver Class:com.mysql.jdbc.Driver (要把相应的驱动jar包放到$TOMCAT_HOME$/common/lib)
User Name:root (用户名)
Password:***** (密码)
Max. Active Connections:4
Max. Idle Connections:2
Max. Wait for Connection:5000
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的内容为:
如果不更改该server.xml文件,使用jdbc/mysql时抛exception Cannot create JDBC driver of class '' for connect URL 'null'。
留意代码最后的resource
发现在<Resource />标签中没包含属性driverClassName和url,这是抛Exception Cannot create JDBC driver of class '' for connect URL 'null'的原因。
我们只需要将<GlobalNamingResources></GlobalNamingResources>中相应的Resource
替换掉Context下的resource即可。
更改后的server.xml文件内容为:
4.在java代码中使用JNDI资源获得DataSource
该代码在JDK1.5下测试通过
在一些资料中提到,在JDK1.5以前的版本可以通过
DataSource ds = (DataSource) ctx.lookup("jdbc/mysql");
获得DataSource。
我没测试过该代码。
上述代码在J2EE服务器环境下工作得很好,但是在main()中就会报一个NoInitialContextException。
之所以有NoInitialContextException是因为无法从System.properties中获得必要的JNDI参数,在服务器环境下,服务器启动时就把这些参数放到System.properties中。
所以可以通过以下方法解决:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL,"t3://localhost:7001");
InitialContext ctx = new InitialContext(env);
或
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
System.setProperty(Context.PROVIDER_URL, "rmi://localhost:3306/test");
System.setProperty(Context.SECURITY_PRINCIPAL, "root");
System.setProperty(Context.SECURITY_CREDENTIALS, "123456");
以上代码建议改为在配置文件中配置
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=rmi://localhost:3306/test
java.naming.security.principal=user
java.naming.security.credentials=password
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1851149
建议用Tomcat的Adiminstration添加。在默认情况下,Tomcat没有安装administration组件,详细安装步骤请参考《Install the component Admin for tomcat》。
登陆http://localhost:8080/admin, 进入Resources -> Data Sources -> Create New Data Source
设置JNDI参数:(这里以MySql为例)
JNDI Name:jdbc/mysql(JNDI 名随便起)
Data Source URL:jdbc:mysql://localhost:3306/test(这里test是数据库名,当然后面还可以带其他参数,如:jdbc: mysql://localhost:3306/test?user=root&password=&useUnicode=true& characterEncoding=gbk&autoReconnect=true&failOverReadOnly=false)
JDBC Driver Class:com.mysql.jdbc.Driver (要把相应的驱动jar包放到$TOMCAT_HOME$/common/lib)
User Name:root (用户名)
Password:***** (密码)
Max. Active Connections:4
Max. Idle Connections:2
Max. Wait for Connection:5000
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.GlobalResourcesLifecycleListener"/> <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> <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.MemoryUserDatabaseFactory"/> <Resource name="jdbc/mysql" type="javax.sql.DataSource" password="123456" driverClassName="com.mysql.jdbc.Driver" maxIdle="2" maxWait="5000" username="root" url="jdbc:mysql://localhost:3306/test" 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/mysql" type="javax.sql.DataSource" password="123456" maxIdle="2" maxWait="5000" username="root" maxActive="4" /> </Context> </Host> </Engine> </Service> </Server>
如果不更改该server.xml文件,使用jdbc/mysql时抛exception Cannot create JDBC driver of class '' for connect URL 'null'。
留意代码最后的resource
<Context docBase="/test" path="/test" reloadable="true" debug="5" crossContext="true"> <Resource name="jdbc/mysql" type="javax.sql.DataSource" password="123456" maxIdle="2" maxWait="5000" username="root" maxActive="4" /> </Context>
发现在<Resource />标签中没包含属性driverClassName和url,这是抛Exception Cannot create JDBC driver of class '' for connect URL 'null'的原因。
我们只需要将<GlobalNamingResources></GlobalNamingResources>中相应的Resource
<Resource name="jdbc/mysql" type="javax.sql.DataSource" password="123456" driverClassName="com.mysql.jdbc.Driver" maxIdle="2" maxWait="5000" username="root" url="jdbc:mysql://localhost:3306/test" maxActive="4"/>
替换掉Context下的resource即可。
更改后的server.xml文件内容为:
<?xml version="1.0" encoding="UTF-8"?> <Server> <Listener className="org.apache.catalina.core.AprLifecycleListener"/> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/> <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> <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.MemoryUserDatabaseFactory"/> <Resource name="jdbc/mysql" type="javax.sql.DataSource" password="123456" driverClassName="com.mysql.jdbc.Driver" maxIdle="2" maxWait="5000" username="root" url="jdbc:mysql://localhost:3306/test" 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/mysql" type="javax.sql.DataSource" password="123456" driverClassName="com.mysql.jdbc.Driver" maxIdle="2" maxWait="5000" username="root" url="jdbc:mysql://localhost:3306/test" 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();
该代码在JDK1.5下测试通过
在一些资料中提到,在JDK1.5以前的版本可以通过
DataSource ds = (DataSource) ctx.lookup("jdbc/mysql");
获得DataSource。
我没测试过该代码。
上述代码在J2EE服务器环境下工作得很好,但是在main()中就会报一个NoInitialContextException。
之所以有NoInitialContextException是因为无法从System.properties中获得必要的JNDI参数,在服务器环境下,服务器启动时就把这些参数放到System.properties中。
所以可以通过以下方法解决:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
env.put(Context.PROVIDER_URL,"t3://localhost:7001");
InitialContext ctx = new InitialContext(env);
或
System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
System.setProperty(Context.PROVIDER_URL, "rmi://localhost:3306/test");
System.setProperty(Context.SECURITY_PRINCIPAL, "root");
System.setProperty(Context.SECURITY_CREDENTIALS, "123456");
以上代码建议改为在配置文件中配置
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=rmi://localhost:3306/test
java.naming.security.principal=user
java.naming.security.credentials=password
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1851149
发表评论
-
tomcat集群配置
2013-10-29 14:58 716http://www.iteye.com/topic/101 ... -
HashMapTest
2013-07-10 11:26 760package com.hashmap.test; ... -
strategy enum pattern
2013-07-09 16:16 668enum PayrollDay { MONDAY(PayT ... -
list remove
2013-07-09 16:15 0List<Integer> list = new ... -
String,StringBuffer与StringBuilder的区别??
2013-07-02 21:23 633转 : http://blog.csdn.net/ ... -
file down load
2011-03-14 10:05 751转载: http://blog.csdn.net/seng3 ... -
转换浮点数为保留x位小数的浮点数,主要是用来显示四舍五入
2010-07-22 14:41 1241/** * 转换浮点数为保留x位小数的浮点数,主要是 ... -
自写控制层小框架
2009-12-29 00:29 893我是一个java菜鸟!近来在学习java,也想写点小东西。希望 ... -
java中获取资源文件
2009-07-16 13:39 887public class DrpToOAInfo { @P ... -
Java操作PDF,Word,Excel,Access!
2009-05-06 12:23 1181Java操作PDF http://www.lowagie.co ... -
jfilechooser默认路径问题
2009-05-05 23:08 6097JFileChooser保存路径的问题 我们在用JFileCh ... -
JFileChooser
2009-05-05 20:33 3633其实JFileChooser基本使用方法还是很简单的,下面写两 ... -
GridBagLayout布局管理器—实现左右选择框
2009-04-15 11:01 13671. gridx,gridy 设置组件的位置:其实就是组件行列 ... -
GridLayout详解
2009-04-15 09:52 4726GridLayout GridLayout是一个非常强大的布 ... -
collection 学习记录
2009-04-06 16:49 740//根据key升序排列 TreeMap map = ... -
servler filter 学习记录
2009-04-04 15:22 1102String str = request.getParam ...
相关推荐
Tomcat JNDI 配置 Tomcat JNDI 配置是 Java Web 应用程序中的一种常见配置,用于将数据库连接信息以 JNDI(Java Naming and Directory Interface)的形式存储在 Tomcat 服务器中,以便于应用程序可以通过 JNDI 来...
### TOMCAT JNDI配置详解 #### 一、概述 TOMCAT服务器是Apache软件基金会下的Jakarta项目中的一个开源Web应用容器。JNDI(Java Naming and Directory Interface)是Java平台提供的一种标准接口,用于访问命名和目录...
在部署该应用时,管理员可以在Tomcat的配置文件中设置相应的JNDI条目: ```xml type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydb" username=...
JNDI配置数据源是将数据库连接池集成到Tomcat中的重要步骤,这样可以提高应用的性能和可维护性。下面我们将详细介绍如何在Tomcat中通过JNDI配置数据源。 首先,我们需要了解数据源是什么。数据源是一个对象,它管理...
tomcat jndi 数据库配置方法
总结来说,Tomcat的JNDI功能提供了强大的资源管理和配置灵活性,通过解耦配置和代码,提高了系统的可扩展性和可维护性。理解并熟练运用Tomcat的JNDI机制,对于开发高质量、高可用性的Java Web应用至关重要。而`...
【标题】:“Tomcat6.0配置JNDI” 在Java Web开发中,Tomcat作为常用的Servlet容器,经常被用于部署和运行Java EE应用程序。JNDI(Java Naming and Directory Interface)是Java平台的一项服务,它允许应用程序通过...
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
【标题】:“Tomcat配置JNDI数据源” 【描述】:“在Tomcat服务器上配置JNDI数据源,特别是通过DBCP连接池的方式” 【标签】:“tomcat,配置,JNDI数据源” 【内容】:配置JNDI数据源在Java Web应用程序中是一个...
Tomcat JNDI 数据源 自动生成程序 Servlet 版 本程序自动判断Tomcat版本,兼容tomcat 5.0、5.5、6.0等版本, 根据项目名自动生成 JNDI 配置文件,使程序员从手动配置JNDI数据源中解脱出来。 使用说明: 1、把...
在这个场景中,“intellij idea使用tomcat开发时自动部署jndi数据源”是一个重要的知识点,它涉及到如何在IDE中配置和管理数据库连接,以便于在应用运行时动态地查找和使用数据源。 JNDI(Java Naming and ...
Tomcat 配置 JNDI 数据源 Tomcat 是一个流行的 Java Web 服务器,JNDI(Java Naming and Directory Interface)是 Java 中的一种命名和目录接口规范。Tomcat 中的 JNDI 数据源是指将数据库连接信息注册到 JNDI ...
TOMCAT8 JNDI对用户名和密码加密
在本文中,我们将深入探讨“Tomcat6配置JNDI出错”这一主题,这是一个常见的问题,很多开发者在搭建和配置Java企业级应用时可能会遇到。 JNDI,全称Java Naming and Directory Interface,是Java平台的一个标准接口...
**Tomcat配置JNDI详解** Java Naming and Directory Interface (JNDI) 是Java平台提供的一种标准服务,用于管理和查找应用程序中的资源,如数据源、邮件服务器等。在Tomcat应用服务器中,JNDI被用来注册和查找数据...
在Tomcat中,JNDI常用于配置数据库连接池,使得多个Web应用可以共享同一个数据库连接。 配置JNDI的步骤如下: 1. **安装与配置MySQL**: 首先确保你已经安装了MySQL数据库,并创建了所需的数据库和用户。你需要...
Tomcat配置JNDI数据源的N种方法
Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理。数据源是一个池子,里面有若干个数据连接对象,当需要时就从里面拿一个使用,使用完毕就放回去,如果超过最大...
在Tomcat配置JNDI数据源的三种方式
### hibernate 3.1+tomcat 5.5.x(配置jndi) #### 一、引言 随着Tomcat从5.0版本升级到5.5.x版本,其配置发生了诸多变化,特别是对Tomcat JNDI的配置方式产生了显著的影响。这对希望在Hibernate安装中利用Tomcat ...