java:comp/env/jdbc/ 的两种配置方法

1. 在 META-INF 下建立文件: context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
	<Resource auth="Container" delegateProperties="foo=bar" 
			  factory="org.logicalcobwebs.proxool.ProxoolDataSource" name="jdbc/xxxDB" password="xxxx" 
			  proxool.alias="proxool_juncsoftDB" proxool.driver-class="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
			  proxool.driver-url="jdbc:sqlserver://localhost;integratedSecurity=true;DatabaseName=Kxxxjuxxxcsoft" 
			  proxool.house-keeping-sleep-time="600000" proxool.maximum-connection-count="30" 
			  proxool.minimun-connection-count="8" proxool.prototype-count="5" 
			  type="javax.sql.DataSource" user="BRAMFCQF3Q9OQ5HAdministrator"/>
</Context> 

然后 在 hibernate就可以引用:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
    
    <property name="connection.datasource">java:comp/env/jdbc/juncsoftDB</property>
    
    <property name="dialect">
        org.hibernate.dialect.SQLServerDialect
    </property>
    <property name="connection.datasource">java:comp/env/jdbc/xxxDB</property>

这样就可以 根据 jndi 找到 context.xml 中配置的 数据库连接信息。其实起到了一个 间接 的 隔离 的效果。

2. 在Tomcat的server.xml 文件中 <Host> 元素下 加入:

          <Context antiJARLocking="false" antiResourceLocking="false" cookies="true" crossContext="true" docBase="xxxx" path="/xxxx" privileged="true" reloadable="true" source="org.eclipse.jst.j2ee.server:xxxx">
            
            <Resource auth="Container" delegateProperties="foo=bar" factory="org.logicalcobwebs.proxool.ProxoolDataSource" name="jdbc/xxxDB" password="digdeep" proxool.alias="proxool_xxxxDB" proxool.driver-class="com.microsoft.sqlserver.jdbc.SQLServerDriver" proxool.driver-url="jdbc:sqlserver://localhost;integratedSecurity=true;DatabaseName=xxxxsoft" proxool.house-keeping-sleep-time="600000" proxool.maximum-connection-count="10" proxool.minimun-connection-count="8" proxool.prototype-count="5" type="javax.sql.DataSource" user="xxxAdministrator"/>

        </Context>

这里采用了 windows 认证的登录sql server的方式。

但是直接修改 tomcat 中的 server.xml 会被 eclipse 在发布时,所覆盖。所以我们应该修改 eclipse 中的 Server 中 server.xml 。发布时,eclipse 会使用自己的 Server 中的 server.xml 覆盖tomcat中的server.xml文件。

个人推荐在开发时推荐第一种方式,因为不会影响eclipse中的其他的项目。

原文地址:https://www.cnblogs.com/digdeep/p/5371152.html