TomcatアプリケーションのJNDIバインディングに接続URLを保存したいのですが。 TomcatはJNDIリソースの定義にcontext.xml
を使用するため、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¶m1=4
」を保存する適切な方法は何ですか? context.xml
なので、次のように調べることができます。
Context ctx = new InitialContext();
String connectionURL = (String)ctx.lookup("myConnectionURL");
前もって感謝します!
この要素内に要素をネストすることにより、サーブレットコンテキスト初期化パラメーターとして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
Environment
tagを使用できます:
<Context>
<Environment name="myConnectionURL" value="amqp:5272//blah.example.com¶m1=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
は必要ありません。