web-dev-qa-db-ja.com

weblogicで外部プロパティファイルを使用する

以前にJBOSSでデプロイしていたJ2eeアプリケーションをWeblogic10.3.1.0にデプロイする作業をしています。外部プロパティファイルで問題が発生しています。 Jbossでは、プロパティファイルを$ JBOSS_HOME/server/default/confに置くだけで、システムのクラスパスにロードされ、問題なくアクセスできます。共有ライブラリを$ MIDDLEWAREHOME/user_projects/domains/mydomain/libに配置でき、問題なくシステムクラスパスに読み込まれましたが、プロパティファイルを読み込めません。

Weblogicに外部プロパティファイルを含める方法を知っている人はいますか?

ありがとう、

17
broschb

私はこれを理解し、期待通りに機能しました。まず、上記の提案を試しました。クラスパスにフォルダーを追加した場合、またはクラスパス上のフォルダーにプロパティファイルを配置した場合、ファイル内のjarは取得されましたが、プロパティファイルは取得されませんでした。プロパティファイルをjarに入れ、クラスパスのフォルダーに配置すると、すべてが機能します。しかし、変更が加えられるたびにファイルをjarしたくありませんでした。以下は私の環境で動作します。

プロパティファイルを%WEBLOGIC_HOME%/ user_projects/domains/MYDOMAINに配置すると、jarファイルに配置しなくても、プロパティファイルが取得されます。

16
broschb

Javaでプロパティファイルを読み取る方法があります。

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

Two(ユーザー定義の場所からのプロパティファイル):このアプローチの利点は、プロパティファイルがJARまたはEARファイルの外部に存在し、便利に変更できることです。

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);

    //Note that the propFilePath is a -Dparam defined below in the setDomainEnv
    prop.load(iStream);
    prop.getProperty(“dbuser”);

  } catch (FileNotFoundException e) {

    e.printStackTrace();

  } catch (IOException e) {

    e.printStackTrace();

  }
}
}

Weblogic setDomainEnv(binの下)=>では、プロパティファイルの場所を-D argumentからJava_OPTIONSとして渡す必要があります。

set Java_OPTIONS=%Java_OPTIONS% -DpropFileLocation =/dev/file/properties/some.properties
2
Rahul Thotakura

Weblogicでは、jarはlibからロードされ、jar以外のファイルはドメインフォルダからロードされます。

2
suresh

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

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

    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");

お役に立てれば。

1
net user

少し余分な労力がかかるかもしれませんが、ファイルをそのlibディレクトリにドロップする前にJARに入れると、うまくいくはずです。

0
Adam Batkin

ドメインファイルのsetDomainEnv.cmd(Windows)またはsetDomainEnv.sh(Unix/Linux)スクリプトを調べて、ドメインのCLASSPATHに追加されている場所を確認できます。次に、1つのフォルダーを選択し、そこにプロパティファイルを配置します。プロパティファイルの特定の場所が必要な場合は、スクリプトを編集するだけです。

0
victor hugo

それが私の解決策でした:

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        InputStream is = null;

        String urlExte = System.getenv("DOMAIN_HOME")+"/properties/SmsBalanceadoWS/";


        org.springframework.core.io.Resource resource = ctx.getResource( "file:"+urlExte+"/application.properties");
        try {
            is = resource.getInputStream();
        } catch (IOException e) {
            LOGGER.debug("ERROR"+ e.getMessage());
        }
0
user2522715

最も柔軟な方法は、weblogicデプロイメントプランとGeneric FileLoadingオーバーライドを使用することです。

Weblogicを含む外部プロパティファイル

http://docs.Oracle.com/cd/E21764_01/web.1111/e13702/config.htm#DEPGD188

0
Kalpesh Soni