文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

tomcat/resin中怎么利用全局数据库连接池资源

2024-04-02 19:55

关注

这期内容当中小编将会给大家带来有关tomcat/resin中怎么利用全局数据库连接池资源,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Tomcat使用JNDI Resource来配置各种资源,包括数据库连接池。这些Resource有两种运行范围,第一个就是Context级别,也就是说Context特有的Resource,该Resource只能被其所属的Context访问,显然这不是我们所要的。
另外一种就是定义全局命名资源,然后在Context中进行引用,下面是一个配置的例子(server.xml):

<Server port="8005" shutdown="SHUTDOWN">
  <GlobalNamingResources>
   <!-- 全局有效的JDBC资源 -->
 <Resource name="jdbc/dlog" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000" defaultTransactionIsolation="1" defaultAutoCommit="false"
               poolPreparedStatements="true" maxOpenPreparedStatements="1000" initialSize="1"
               username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://localhost:3306/dlogcn?autoReconnect=true"/>
  </GlobalNamingResources>

  <!-- Define the Tomcat Stand-Alone Service -->
  <Service name="Catalina">

    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
    
    <!-- Define the top level container in our container hierarchy -->
    <Engine name="Catalina" defaultHost="localhost">

      <Host name="localhost" appBase="webapps">
 <Context path="" docBase="C:/PROJECTS/JAVA/DLOG4J_V3/webapp" reloadable="true">
   <!-- 在Context引用全局JDBC资源 -->
   <ResourceLink name="jdbc/dlog" global="jdbc/dlog"/>
 </Context>
      </Host>
      
    </Engine>

  </Service>

</Server>

相比较Tomcat来说,Resin更为简单,在Resin2中连接池的配置如下

<caucho.com>

<http-server>

  <http port='80'/>
  
  <servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>
  <servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>

  <resource-ref res-ref-name="java:/comp/env/jdbc/dlog" res-type="javax.sql.DataSource">
    <init-param driver-name="com.mysql.jdbc.Driver"/>
    <init-param url="jdbc:mysql://localhost:3306/dlogcn?autoReconnect=true"/>
    <init-param user="root"/>
    <init-param password="moabc"/>
    <init-param maxConnections="100"/>
  </resource-ref>

  <!-- default host if no other host matches -->
  <host id=''>
  
    <web-app id='' app-dir='C:/PROJECTS/JAVA/DLOG4J_V3/webapp' />
      
  </host>

</http-server>
</caucho.com>


你可以把这段配置放在web-app中,则该连接池只有对应的webapp才能访问,放在<host>则,host中的所有web-app都可以访问,放在<http-server>中,则整个resin的所有webapp都可以访问。
(实验过程中发现resin2的文档有误,如果res-ref-name写为jdbc/dlog,则webapp怎么都找不到这个资源,改成java:/comp/env/jdbc/dlog即可。)

接下来我们就可以在应用中使用如下代码来获取连接池的DataSource实例

Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/dlog");

其他的应用服务器的配置可以按照这个思路参考它的手册进行配置。应该说不管是采用何种方式,性能上不会有太大的区别,如何选择就在于你整个服务器的项目结构。

上述就是小编为大家分享的tomcat/resin中怎么利用全局数据库连接池资源了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯