JNDI定义中的额外信息

时间:2011-02-16 12:43:49

标签: java jndi web.xml

我正在开发一个Web应用程序,它将部署在Apache Tomcat 6.0上。应用程序将连接大量数据库(差不多25个),因此为了管理Connection,我正在使用位于 META-INF 下的context.xml文件。到目前为止一切都很好,这就是资源定义的样子:

<Resource 
  name="jdbc/XX"
  auth="Container"
  type="javax.sql.DataSource"
  username="XXX"
  password="XXX"
  driverClassName="oracle.jdbc.driver.OracleDriver"
  url="jdbc:oracle:thin:XXXX"
  maxActive="8"
  maxIdle="4"/>

根据此定义,可以正确创建Connection对象。

我想知道的是如果我能够在此定义中添加额外信息,例如projectName并从上下文中获取(或其他地方)。如下所示:

<Resource 
  name="jdbc/XX"
  auth="Container"
  type="javax.sql.DataSource"
  username="XXX"
  password="XXX"
  driverClassName="oracle.jdbc.driver.OracleDriver"
  url="jdbc:oracle:thin:XXXX"
  maxActive="8"
  maxIdle="4"
  projectName="Cool Project"/>

感谢任何帮助..

1 个答案:

答案 0 :(得分:1)

不,但您可以定义命名约定并为每个资源添加一个Environment元素:

<Environment name="XX_projectName" 
             value="Cool Project"
             type="java.lang.String" 
             override="false"/>

在您的代码中,您可以通过

访问它
Context ctx = new InitialContext();
String projectName = (String) ctx.lookup("java:comp/env/XX_projectName");

有关详细信息,请参阅http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Environment%20Entries