以前にJBOSSでデプロイしていたJ2eeアプリケーションをWeblogic10.3.1.0にデプロイする作業をしています。外部プロパティファイルで問題が発生しています。 Jbossでは、プロパティファイルを$ JBOSS_HOME/server/default/confに置くだけで、システムのクラスパスにロードされ、問題なくアクセスできます。共有ライブラリを$ MIDDLEWAREHOME/user_projects/domains/mydomain/libに配置でき、問題なくシステムクラスパスに読み込まれましたが、プロパティファイルを読み込めません。
Weblogicに外部プロパティファイルを含める方法を知っている人はいますか?
ありがとう、
私はこれを理解し、期待通りに機能しました。まず、上記の提案を試しました。クラスパスにフォルダーを追加した場合、またはクラスパス上のフォルダーにプロパティファイルを配置した場合、ファイル内のjarは取得されましたが、プロパティファイルは取得されませんでした。プロパティファイルをjarに入れ、クラスパスのフォルダーに配置すると、すべてが機能します。しかし、変更が加えられるたびにファイルをjarしたくありませんでした。以下は私の環境で動作します。
プロパティファイルを%WEBLOGIC_HOME%/ user_projects/domains/MYDOMAINに配置すると、jarファイルに配置しなくても、プロパティファイルが取得されます。
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
Weblogicでは、jarはlibからロードされ、jar以外のファイルはドメインフォルダからロードされます。
クラスパスにディレクトリを設定し、カスタムプロパティファイルをそのフォルダ/ディレクトリに配置できます。そのため、ディレクトリ全体とプロパティファイルがクラスパス上にあります。 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");
お役に立てれば。
少し余分な労力がかかるかもしれませんが、ファイルをそのlib
ディレクトリにドロップする前にJARに入れると、うまくいくはずです。
ドメインファイルのsetDomainEnv.cmd
(Windows)またはsetDomainEnv.sh
(Unix/Linux)スクリプトを調べて、ドメインのCLASSPATHに追加されている場所を確認できます。次に、1つのフォルダーを選択し、そこにプロパティファイルを配置します。プロパティファイルの特定の場所が必要な場合は、スクリプトを編集するだけです。
それが私の解決策でした:
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());
}
最も柔軟な方法は、weblogicデプロイメントプランとGeneric FileLoadingオーバーライドを使用することです。
http://docs.Oracle.com/cd/E21764_01/web.1111/e13702/config.htm#DEPGD188