时间:2021-05-27来源:www.pcxitongcheng.com作者:电脑系统城
在我过去工作的过程中,开发用服务器一般都是Tomcat
数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean
然后在部署时再修改JNDI配置
我猜是因为Tomcat的配置需要改配置文件
不像JBoss,Weblogic等服务器在管理界面可以直接添加JNDI数据源
也很少人去研究它的配置
最近做了个小项目,发布版本的时候都是通过ant编译成jar包之后丢给测试
测试是大爷,教他修改数据源了还是当没听到
周末闲来无聊,看了一些Tomcat配置的教程,下面做一些总结
注:如果你的工程是直接丢在webapps下面的,server.xml中就没有工程对应的Context节点
更新:由于之前有些配置来自网络,不太好用,作了一些更新
对每种方法作了一些个人评价
PS:以下配置在apache-tomcat-6.0.35下测试通过,可以访问数据库
就一步,找到Tomcat的server.xml找到工程的Context节点,添加一个私有数据源
1 2 3 4 5 6 7 8 9 10 11 12 |
< Context docBase = "WebApp" path = "/WebApp" reloadable = "true" source = "org.eclipse.jst.jee.server:WebApp" > < Resource name = "jdbc/mysql" scope = "Shareable" type = "javax.sql.DataSource" factory = "org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" url = "jdbc:mysql://localhost:3306/test" driverClassName = "com.mysql.jdbc.Driver" username = "root" password = "root" /> </ Context > |
优点:简单
缺点:重用性差
分两步
第一步, 找到Tomcat的server.xml中GlobalNamingResources节点,在节点下加一个全局数据源
1 2 3 4 5 6 7 8 9 10 11 |
< Resource name = "jdbc/mysql" scope = "Shareable" type = "javax.sql.DataSource" factory = "org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" url = "jdbc:mysql://localhost:3306/test" driverClassName = "com.mysql.jdbc.Driver" username = "root" password = "root" /> < script type = "text/javascript" > </ script >< script type = "text/javascript" src = "http://pagead2.googlesyndication.com/pagead/show_ads.js" ></ script > |
第二步,找到要应用此JNDI数据源的工程Context节点,增加对全局数据源的引用ResourceLink
1 2 3 |
< Context docBase = "WebApp" path = "/WebApp" reloadable = "true" > < ResourceLink global = "jdbc/mysql" name = "jdbc/mysql" type = "javax.sql.DataSource" /> </ Context > |
优点:重用性,可控性
缺点:配置相对第三种方法要繁琐一点,每个工程都得配
也分两步
第一步
参考第二种的第一步
第二步,找到Tomcat的context.xml,在Context节点下加一个ResourceLink节点对第一步配置的数据源进行引用
这个XML配置文件的根节点就是<Context>
1 2 3 4 |
< Context > < ResourceLink global = "jdbc/mysql" name = "jdbc/mysql" type = "javax.sql.DataSource" /> < WatchedResource >WEB-INF/web.xml</ WatchedResource > < Context > |
优点:重用性,一次性到位
缺点:没有可控性
在applicationContext.xml中加一个bean,替代原来的dataSource
1 | < jee:jndi-lookup id = "dataSource" jndi-name = "jdbc/mysql" /> |
type和factory的值发生变化
username=>user
url=>jdbcUrl
driverClassName=>driverClass
1 2 3 4 5 |
< Resource name = "jdbc/mysql_c3p0" scope = "Shareable" type = "com.mchange.v2.c3p0.ComboPooledDataSource" factory = "org.apache.naming.factory.BeanFactory" jdbcUrl = "jdbc:mysql://localhost:3306/test" driverClass = "com.mysql.jdbc.Driver" user = "root" password = "root" /> |
到此这篇关于Tomcat配置JNDI数据源的三种方式的文章就介绍到这了
2024-07-07
myeclipse怎么导入tomcat教程2024-07-07
myeclipse如何启动tomcat2024-07-07
myeclipse如何绑定tomcat上线了一个小的预约程序,配置通过Nginx进行访问入口,默认的日志是没有请求时间的,因此需要配置一下,将每一次的请求的访问响应时间记录出来,备查与优化使用....
2023-03-17