Как сохранить строковые значения в файле context.xml

Я хотел бы сохранить URL-адреса соединений в привязке JNDI для моего приложения Tomcat. Поскольку Tomcat использует context.xml для определения ресурса JNDI, мне нужно выяснить способ правильного хранения String (или нескольких строк для нескольких подключений) в 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>

Если да, , где я действительно храню значение String?!?! И если это не так, то каков правильный способ хранения, например, "amqp:5272//blah.example.com&param1=4", в context.xml, чтобы я мог выглядеть так:

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

Спасибо заранее!

Ответы

Ответ 1

Вы можете настроить именованные значения, которые будут отображаться в веб-приложении как параметры инициализации контекста сервлетов, вставляя элементы внутри этого элемента. Например, вы можете создать параметр инициализации следующим образом:

 <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

Ответ 2

Вы можете использовать тег 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, но без необходимости <<24 > .