2011-07-12 21 views
7

Weblogic 10.3サーバーにデプロイするアプリケーションで外部プロパティファイルを使用する最良の方法を探しています。私はサイト上のいくつかの記事を読んでいるが、プロパティファイルへのパスをハードコードしたり、ドメイン/ mydomainフォルダにファイルを置いたりしたくない。Weblogicを使用した外部プロパティファイル

これを行う動的な方法はありますか?アプリケーションをデプロイするときに、プロパティファイルもdeployionsフォルダの下にインストールされ、そこから読み込まれますか?

感謝

答えて

5

他の場所にファイルを置く必要はありません。別の方法アプリケーションは、それが汎用ファイルロードオーバーライドを使用することです読みます http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/config.htm#i1066493

これはのはFooApplication.earとFooWeb.warを持ってFooApplicationそれを呼びましょう、あなたの展開のルートディレクトリになりますディレクトリを作成する必要があります。これは、アプリケーションインストールディレクトリと呼ばれます。あなたのアプリケーションは、アーカイブ(.ear、.war、jarのような)でも、それらのアーカイブの展開されたバージョンでも、FooApplication/appサブディレクトリに入ります。オプションのデプロイメントプラン(この機能を使用する必要があります。これは、config-root要素の指定を超えたプランでも、ドキュメンテーションの説明どおりの値でも構いません)がFooApplication/planにあります。 FooApplication/plan/AppFileOverridesディレクトリ構造のアプリケーションにあるプロパティを上書きしたいプロパティを置くことができます。 http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/deployunits.htm#sthref9

展開のそのスタイルが完了したら、あなたはあなたのアプリケーションから、このようなコードを書いて、myApp.propertiesの内容はFooApplication /計画から読みます/ AppFileOverrides/FooWeb.war/myApp.properties実際になりますファイルが読み込まれます。

これは、ドキュメントに説明されているようにアプリケーションにクラスローダーを追加することで実現します。初期設定は面倒かもしれませんが、オリジナルの質問を直接満たし、その特定のアプリケーションのみを満たす機能です。

1

アプローチ#1

は、JVMにシステム変数の下方を通過するようにサーバーの起動スクリプトを更新します(以下のWindows OS上の例である)

call "%DOMAIN_HOME%\bin\startWebLogic.cmd" "-Dcom.mycompany.myapp.EXTERNAL_CONFIG_PATH=/mycompany/myapp/config" %* 

この変数を使用しています設定ディレクトリを指し、そこから設定を読み込みます。この設定は、アプリケーションを配備する各サーバーで行う必要があります。

0

アプローチ#2

使用WebLogicが

http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/libraries.html

共有ライブラリ以下のフォローが

  • ビルドプロセス中に別のJARとして、すべてのコンフィギュレーションの展開を

    • パッケージステップ構成J共有ライブラリとしてAR
    • あなたのEAR/WARからの共有ライブラリ上で参考
    • 展開EAR/WAR(構成はクラスパスで利用できるようになります)
  • +0

    wlst/jythonのcreateプロパティを使用してコンフィグレーションJARを共有ライブラリとしてオフラインでデプロイするにはどうすればよいですか? – sloven

    1

    「サイトの記事を数多く読み込んでいますが、プロパティファイルのパスをハードコードしたくありません」と言えば、あなたのサイトでハードコードしたくないJavaコード。それがそうであるならば、ここでの回答

    の下に参照してください。

    プロパティは、WebLogicクラスパスからJavaでファイルを読み込むための方法があります

    ワン(WebLogicドメインにあるプロパティファイル):プロパティをドロップドメインディレクトリ内のファイル。こうすることで、プロパティファイルがweblogicクラスパスに自動的に追加され、resourceAsStreamを使用してJavaから読み込むことができます。

    2つ(ユーザー定義の場所からのプロパティファイル):この方法の利点は、プロパティファイルがJARファイルまたはEARファイルの外に存在することができ、便利に変更できることです。我々はJAVA_OPTIONS

    セットJAVA_OPTIONS =%JAVA_OPTIONS%-DpropFileLocation =は/ dev /ファイル/へ-D引数としてプロパティファイルの場所を通過する必要がある(ビン下)は、WebLogicのsetDomainEnvで

    package com.test; 
    
    import java.io.FileNotFoundException; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.util.Properties; 
    
    public class PropertyFileExample { 
    
    private static Properties prop; 
    
    public static void myMethod() { 
    
    InputStream is = null; 
    
    try { 
    
    prop = new Properties(); 
    
    String propFilePath = System.getProperty(“propFileLocation“); 
    
    InputStream iStream = PropertyFileExample.class.getClassLoader().getResourceAsStream(propFilePath); 
    
    prop.load(iStream); 
    prop.getProperty(“dbuser”); 
    
    } catch (FileNotFoundException e) { 
    
    e.printStackTrace(); 
    
    } catch (IOException e) { 
    
    e.printStackTrace(); 
    
    } 
    
    } 
    } 
    

    プロパティ/ some.properties

    希望する!

    3

    クラスパスにディレクトリを設定し、カスタムプロパティファイルをそのフォルダ/ディレクトリに配置できます。そのため、ディレクトリ全体がプロパティファイルと共にクラスパス上にあります。 %DOMAIN_HOME%\config\フォルダにフォルダを作成したWebLogic 10.3.xの

    • にクラスパス上のディレクトリを設定するには 。例appConfig
    • ディレクトリ/フォルダappConfigにカスタムプロパティファイル(例:config.properties)を配置します。
    • 次のように変数(この変数がすでにsetDomainEnv.cmdファイルで定義されている)EXT_POST_CLASSPATHに値として%DOMAIN_HOME%\config\appConfigを設定することにより、クラスパスにappConfigを含めることsetDomainEnv.cmd(Windows)を変更します。

      set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig 
      

    することができますそのファイルにあなたのJavaコードでアクセスしてください:

    InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream ("config.properties"); 
        Properties prop = new Properties(); 
        prop.load(inputStream); 
        String value = prop.getProperty("key"); 
    

    希望します。

    関連する問題