【问题标题】:How to store string values in context.xml如何在 context.xml 中存储字符串值
【发布时间】:2013-08-23 13:34:41
【问题描述】:

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

我这样做的原因是为了可以为不同的环境定义不同的字符串,并通过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>

如果是这样,我在哪里实际存储字符串值?!?!如果它不正确,那么我存储的正确方法是什么,例如,“amqp:5272//blah.example.com&amp;param1=4”在context.xml,所以我可以像这样查找它:

Context ctx = new InitialContext();
String connectionURL = (String)ctx.lookup("myConnectionURL");

提前致谢!

【问题讨论】:

    标签: java string tomcat jndi context.xml


    【解决方案1】:

    您可以使用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。

    【讨论】:

    • 文件名应该是context.xml,存放在哪里?
    • @gkiko:在 Tomcat 中,它被称为 context.xml,并且应该已经在你的 Tomcat 安装的 conf 目录中,在 *nix 上通常位于 /usr/share/tomcat/conf/context.xml。其他 Web 服务器有其他文件和约定。
    【解决方案2】:

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

     <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

    【讨论】:

    • 这不会回答所提出的问题,即使它被标记为答案并且可能已经帮助了原始问题提交者。对于那些来到这篇文章寻找已发布问题的解决方案的人,请参阅@Stoffe 提供的答案
    猜你喜欢
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多