如何在context.xml中存储字符串值

时间:2013-08-23 13:34:41

标签: java string tomcat jndi context.xml

我想将连接URL存储在我的Tomcat应用程序的JNDI绑定中。由于Tomcat使用context.xml进行JNDI资源定义,因此我需要找出在context.xml中存储String(或多个连接的多个字符串)的属性方法。

我这样做的原因是我可以为不同的环境定义不同的字符串,并通过JNDI加载它们。

通常,我会看到如下条目:

<Context ...>
    <Resource name="someName" auth="Container"
            type="someFullyQualifiedClassName"
            description="Some description."/>
</Context>

这真的很简单:

<Context ...>
    <Resource name="myConnectionURL" auth="Container"
            type="java.lang.String"
            description="A connection URL string."/>
</Context>

如果是这样,我在哪里存储String值?!?!如果它不正确,那么我存储的正确方法是什么,例如“{{1} }“在amqp:5272//blah.example.com&param1=4中,所以我可以这样查看:

context.xml

提前致谢!

2 个答案:

答案 0 :(得分:25)

您可以使用Environment标记:

<Context>
    <Environment name="myConnectionURL" value="amqp:5272//blah.example.com&param1=4" type="java.lang.String"/>
</Context>

你几乎可以按照问题中的规定阅读它:

InitialContext initialContext = new InitialContext();
Context environmentContext = (Context) initialContext.lookup("java:/comp/env");
String connectionURL = (String) environmentContext.lookup("myConnectionURL");

这与使用Parameter标记非常相似,但不需要ServletContext

答案 1 :(得分:9)

您可以通过在此元素中嵌套元素来配置将作为servlet上下文初始化参数对Web应用程序可见的命名值。例如,您可以创建如下的初始化参数:

 <Context>
      ...
     <Parameter name="companyName" value="My Company, Incorporated"
          override="false"/>
       ...
 </Context>

   This is equivalent to the inclusion of the following element in the web application deployment descriptor (/WEB-INF/web.xml):



 <context-param>
       <param-name>companyName</param-name>
       <param-value>My Company, Incorporated</param-value>
 </context-param>

您的java代码如下所示

 ServletContext sc = getServletContext();  

 String companyName = sc.getInitParameter("companyName");  

请参阅参考http://tomcat.apache.org/tomcat-7.0-doc/config/context.html