2012-08-23 14 views
8

私はこのようなWEB-INF/web.xml何かにfile.propertiesからいくつかの値を含める必要があります。私は現在、これで働いている.propertiesファイルからweb.xmlに値を含めるには?

<param-name>uploadDirectory</param-name> 
<param-value>myFile.properties['keyForTheValue']</param-value> 

  • のJBoss
  • JEE5
+0

[web.xmlでのプロパティの使用](http://stackoverflow.com/questions/2948992/using-properties-in-web-xml) – imgx64

答えて

13

このクラスを追加すると、ファイルのすべてのプロパティをJVMに追加できます。あなたは

System.getProperty(...) 

またはweb.xml内を使用してプロジェクトにし、web.xmlにweb.xml

public class InitVariables implements ServletContextListener 
{ 

    @Override 
    public void contextDestroyed(final ServletContextEvent event) 
    { 
    } 

    @Override 
    public void contextInitialized(final ServletContextEvent event) 
    { 
     final String props = "/file.properties"; 
     final Properties propsFromFile = new Properties(); 
     try 
     { 
     propsFromFile.load(getClass().getResourceAsStream(props)); 
     } 
     catch (final IOException e) 
     { 
      // can't get resource 
     } 
     for (String prop : propsFromFile.stringPropertyNames()) 
     { 
     if (System.getProperty(prop) == null) 
     { 
      System.setProperty(prop, propsFromFile.getProperty(prop)); 
     } 
     } 
    } 
} 

になりまし

<listener>  
     <listener-class> 
     com.company.InitVariables 
     </listener-class> 
    </listener> 

あなたはすべてのプロパティを取得することができますし、コンテキスト・リスナーのようにこのクラスを追加

<param-name>param-name</param-name> 
<param-value>${param-name}</param-value> 
+0

ありがとう、これは私が探していたソリューションです – lancha90

+0

私はcouldn Jettyが相対パスとgetResourceAsStreamを使用してリソースを検索するようにしますが、絶対パスとFileInputStreamは動作するように見えます。 – jsh

+0

これ用のユーティリティはありませんか? – user447607

3

上記の容認された解決策に関する注意の言葉。

contextInitialized()メソッドは、web.xmlがロードされるまで呼び出されないため、システムプロパティへの変更は適時に反映されません。不思議なことに、これは、webappを(jbossを再起動せずに)再配備すると、プロパティが最後に配備されてから生き残り、動作するように見えることを意味します。

代わりに使用するソリューションは、jbossにパラメータをjavaコマンドライン経由で渡すことです。 -Dparameter1=value1 -Dparameter2=value2

+1

もっと良い解決策(jboss 7では動作しません)は、properties.service.xmlを使用することです。あなたはその場でプロパティをマップすることができます。 – gebuh

+0

これは良い考えです(これは、システム管理者がシステムプロパティを保持することを好みます)。私は 'server/default/deploy'と' server/all/deploy'の下でproperties.services.xmlを更新しようとしましたが、いずれの場合もweb.xmlには反映されません – dannyclark

関連する問題