2013-08-23 6 views
17

Tomcatアプリケーション用のJNDIバインディングに接続URLを格納したいとします。 TomcatはJNDIリソースの定義にcontext.xmlを使用しているので、context.xmlに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> 

はどこ私は実際に文字列値を格納していますか?!?!そして、それは正しくない場合は、そのように私はそのようにようにそれを見ることができる私はcontext.xmlで、例えば、「amqp:5272//blah.example.com&param1=4」を格納するための適切な方法です:事前に

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

ありがとう!

答えて

6

この要素の中に要素を入れ子にすることで、サーブレットコンテキストの初期化パラメータとして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

+3

これは、回答としてマークされており、元の質問提出者に役立つ可能性がありますが、これは質問された質問には答えません。投稿された質問の解決策を探している人のために、@ Suffeによって提供された答えを参照してください。 – loesak

18

あなたはEnvironmentタグを使用することができます参照してください。

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

あなたはyとほとんど読むことができます質問に指定されたOU:

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

これは非常Parameterタグを使用するのと同じですが、ServletContextを必要とせずに。

+0

ファイル名は 'context.xml'で、どこに格納されますか? – gkiko

+0

@gkiko:Tomcatでは、これは 'context.xml'と呼ばれ、Tomcatのインストールの' conf'ディレクトリにあります。* nixは通常/ usr/share/tomcat/conf/context.xmlにあります。他のWebサーバーには、他のファイルと表記規則があります。 – Stoffe

関連する問題