按以下步骤解决:
1、确认每个应用服务器都具有正确配置的数据源和数据库连接池。
2、检查应用程序的代码和配置文件,以确定是否存在任何用于特定应用服务器的限制,并尝试将其修改为通用的配置。
3、如果以上步骤失败,则尝试重启被禁用的应用服务器并检查日志文件以查找任何错误消息或警告。
.将数据库驱动程序的JAR文件放在Tomcat的 mon/lib 中 .在server xml中设置数据源 以MySQL数据库为例 如下 在<GlobalNamingResources> </GlobalNamingResources>节点中加入 <Resource name= jdbc/DBPool type= javax sql DataSource password= root driverClassName= mysql jdbc Driver maxIdle= maxWait= username= root url= jdbc:mysql:// : /test maxActive= /> 属性说明 name 数据源名称 通常取 jdbc/XXX 的格式 type javax sql DataSource ; password 数据库用户密码 driveClassName 数据库驱动 maxIdle 最大空闲数 数据库连接的最大空闲时间 超过空闲时间 数据库连 接将被标记为不可用 然后被释放 设为 表示无限制 MaxActive 连接池的最大数据库连接数 设为 表示无限制 maxWait 最大建立连接等待时间 如果超过此时间将接到异常 设为 表示 无限制 .在你的web应用程序的web xml中设置数据源参考 如下 在<web app></web app>节点中加入 <resource ref> <description>MySQL DB Connection Pool</description> <res ref name>jdbc/DBPool</res ref name> <res type>javax sql DataSource</res type> <res auth>Container</res auth> <res sharing scope>Shareable</res sharing scope> </resource ref> 子节点说明 description 描述信息 res ref name 参考数据源名字 同上一步的属性name res type 资源类型 javax sql DataSource res auth Container res sharing scope Shareable .在web应用程序的context xml中设置数据源链接 如下 在<Context></Context>节点中加入 <ResourceLink name= jdbc/DBPool type= javax sql DataSource global= jdbc/DBPool /> 属性说明 name 同第 步和第 步的属性name值 和子节点res ref name值 type 同样取 javax sql DataSource global 同name值 至此 设置完成 下面是如何使用数据库连接池 .建立一个连接池类 DBPool java 用来创建连接池 代码如下 import javax naming Context;import javax naming InitialContext;import javax naming NamingException;import javax sql DataSource;public class DBPool { private static DataSource pool; static { Context env = null; try { env = (Context) new InitialContext() lookup( java:p/env ); pool = (DataSource)env lookup( jdbc/DBPool ); if(pool==null) System err println( DBPool is an unknown DataSource ); } catch(NamingException ne) { ne printStackTrace(); } } public static DataSource getPool() { return pool; }} .在要用到数据库 *** 作的类或jsp页面中 用DBPool getPool() getConnection() 获得一个Connection对象 就可以进行数据库 *** 作 最后别忘了对Connection对象调用close()方法 注意 这里不会关闭这个Connection 而是将这个Connection放回数据库连接池 lishixinzhi/Article/program/Java/ky/201311/28920
如果只是对MySql感兴趣可以照抄这篇短文 如果想配置其他数据库类型的连接池 也可以做简单修改参数即可使用
安装Tomcat
参考Tomcat for window 的安装向导 基本直接安装即可 注意 安装时会提示输入管理用户名和密码 这是以后会用到的用户名和密码 切记
安装MySql
默认安装即可
使用Tomcat的Web管理应用配置数据源
启动Tomcat服务器 打开浏览器 输//localhost: /admin/(其中localhost可能是一台机器的IP或是服务器名称) 进入管理界面的登陆页面 这时候请输入原来安装时要求输入的用户名和密码 登陆到管理界面
选择Resources Data sources进入配置数据源界面 选择Data Source Actions >选择Create New Data Source 进入配置详细信息界面 内容如下
JNDI Name: jdbc/mysql Data Source URL: jdbc:mysql:// /SUBRDB JDBC Driver Class: gjt mm mysql Driver User Name: root Password: Max Active Connections: Max Idle Connections: Max Wait for Connection: Validation Query:要求输入的JNDI Name等信息 其中除了JDBC DriverClass之外 其他的可以根据你的需要填写 比如Data Source URL的内容可能是 jdbc:mysql:// IP或是名称/DataBaseName 其中DataBaseName是你的数据库名称 IP是你的数据库的所在的服务器的IP或是名称 最后点击Save >Commit Change 这样你的数据源的基本资料配置一半了
web xml和%TOMCAT_HOME%\conf\Catalina\localhost下对应你的引用的配置文件修改
通过文件夹导航到%TOMCAT_HOME%\conf 打开web xml 在< /web app>的前面添加以下内容
< resource ref> < description>DB Connection< /description> < res ref name>jdbc/mysql< /res ref name> < res type>javax sql DataSource< /res type> < res auth>Container< /res auth> < /resource ref>注意res ref name填写的内容要与在上文提到的JNDI Name名称一致
通过文件夹导航到%TOMCAT_HOME%\conf\Catalina\localhost下 找到你的web应用对应的 xml文件 如 ROOT xml 并在此文件的下添入代码
< ResourceLink name= jdbc/mysql global= jdbc/mysql type= javax sql DataSourcer />
到这里 配置工作就基本完成了
其他注意事项
别忘了JDBC驱动程序mysql connector java stable bin jar一定要放置到Tomcat的对应目录 你的JDBC驱动可能版比笔者高 不过只要能与所使用的MySql对应就可以了 因为我发现版本太低的JDBC驱动不能支持 版本的MySQL数据库 建议放置在%TOMCAT_HOME%\mon\lib和应用的WEB INF\lib下 两者有什么不同呢其实一看就明白了 mon\li是所有的应用都可以使用的库文件位置
重启你的Tomcat服务
编写测试代码
在应用的目录下建立一个Test jsp文件 代码如下< !doctype public //w c//dtd transitional//en /strict dtd > < %@ page import= java sql %> < %@ page import= javax sql %> < %@ page import= javax naming %> < %@ page session= false %> < > < head> < meta equiv= Content Type content= text/; charset=gb > < title>< /title> < % out print( 我的测试开始 ); DataSource ds = null; try{ InitialContext ctx=new InitialContext(); ds=(DataSource)ctx lookup( java:p/env/jdbc/mysql ); Connection conn = ds getConnection(); Statement stmt = conn createStatement();//提示 users必须是数据库已有的表
//这里的数据库前文提及的Data Source URL配置里包含的数据库String strSql = select from users ; ResultSet rs = stmt executeQuery(strSql); while(rs next()){ out print(rs getString( )); } out print( 我的测试结束 ); } catch(Exception ex){ out print( 出现例外 信息是: +ex getMessage()); ex printStackTrace(); } %> < /head> < body> < /body> < />运行结果
我的测试开始 我的测试结束 因为我的rs getString( ) 在数据库就是存放
总结
lishixinzhi/Article/program/Java/ky/201311/28105
数据库连接是一种有限的昂贵的资源,数据库连接影响到程序的性能指标。
数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、
管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数
据库连接而引起的数据库连接遗漏。
这项技术能明显提高对数据库 *** 作的性能。
以上就是关于两台was应用服务器共用一个库为什么只有一个应用可以用全部的内容,包括:两台was应用服务器共用一个库为什么只有一个应用可以用、Tomcat 的数据库连接池设置与应用、浅析Tomcat5配置Mysql JDBC数据库连接池等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)