10

GlassFish で実行される Web サービスを作成しており、いくつかのカスタム プロパティが必要です。このために、Propertiesクラスを使用しています。私が使用しているコードは次のとおりです。

Properties p=new Properties();
File f=new File(System.getProperty("user.dir"), "settings.properties");
p.load(new FileInputStream(f));  

settings.propertiesしかし、config ディレクトリにある -fileを取得するにはどうすればよいでしょうか?

クラスパスは NetBeans と GlassFish によって管理されているため、よくわかりません。.warデプロイ時に -file がクラスパスに追加されると仮定します...

私は独自の解決策を追加しましたが、誰かがより良い解決策を思い付くことができれば、それは大歓迎です...

4

8 に答える 8

11

プロパティ ファイルを<glassfish-install-dir>/glassfish/domains/<domain-name>/lib/classesディレクトリに配置すると、 ResourceBundleクラスを介してアプリケーション内からアクセスできるようになります。たとえば、settings.propertiesという名前のプロパティ ファイルをこのディレクトリに追加し、次のようにファイルから値にアクセスします。

ResourceBundle.getBundle("設定").getString("my-property-key");

于 2013-01-07T13:16:19.480 に答える
5

機能するソリューションは、実際には非常に単純です。

URL url =  this.getClass().getResource("/package/name/file.properties");
p = new Properties();
p.load(new FileInputStream(new File(url.getFile())));

なぜ誰もこれを持って来なかったのですか?

于 2009-03-19T09:35:32.280 に答える
3

代替案:

asadmin create-system-propertiesドメインの構成方法によっては、コマンド ラインから使用できる場合があります。詳細については、実行/参照asadmin create-system-properties --helpしてください。

または、Glassfish 管理インターフェースを介してシステム プロパティを管理することもできます。デフォルトのリンクは次のとおりです: http://localhost:4848/configuration/systemProperties.jsf?configName=server-config

于 2009-03-17T19:50:57.683 に答える
1

クラスパスからプロパティ ファイルを読み取る方法については、こちらを参照してください。

URL url =  ClassLoader.getSystemResource("test.properties");
Properties p = new Properties();
p.load(new FileInputStream(new File(url.getFile())));

次に、構成ディレクトリをクラスパスに追加するだけです。

上記のコードの使用に問題がある場合は、ServletContext.getResourceを試してください。

于 2009-02-10T09:36:23.753 に答える
0

プロパティファイルをweb/WEB-INF/classesパスにコピーします

Properties p=new Properties();
p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("myproperty.properties"));
于 2012-08-10T08:26:49.147 に答える
0

クラスパスに入れるための+1。

Spring を使用している場合 (多くの理由からまだ使用していない場合は使用することを強くお勧めします)、次のようなプロパティ ファイルをロードできます。

database.username=scott
database.password=tiger

次のように、アプリケーションコンテキストに参照を配置します。

<property name="username" value="${database.username}"/>

(プロパティ コンフィギュレーターを構成していると仮定します) ファイルを読み込めないか、プロパティが存在しない場合はエラーが発生します。アプリケーションの起動に失敗します。これは実際には良いことです。これにより、問題を非常に迅速に見つけることができ、時には壊滅的な影響を与える可能性のある黙って失敗するよりもはるかに優れています。

于 2009-02-10T10:57:31.727 に答える