如何在上下文中存储字符串值.xml

2022-09-01 22:51:16

我想将连接 URL 存储在我的 Tomcat 应用程序的 JNDI 绑定中。由于Tomcat用于JNDI资源定义,我需要找出在中存储字符串(或多个连接的多个字符串)的适当方法。context.xmlcontext.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>

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

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

提前致谢!


答案 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");

这与使用标记大致相同,但不需要 .ParameterServletContext


答案 2

您可以通过将元素嵌套在 Web 应用程序内部来配置命名值,这些值将作为 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