1

アップデート

ここで説明する方法を使用して、「classpath:」と「classpath*:」の両方から得られた Java クラスパスを出力し、以下を取得しましたが、jms.properties ファイルで定義されたプロパティの PPC から BeanDefinitionStoreException をまだ取得しています。何を与える!?

[main] INFO - .......Loading........
[main] INFO - printing normal classpath
[main] INFO - class path resource [conf/dev/jgroups.properties]
[main] INFO - printing wildcard classpath
[main] INFO - URL [jar:file:/filepath/StandaloneProject.jar!/conf/dev/jgroups.properties]
[main] INFO - URL [jar:file:/filepath/DependencyProject.jar!/conf/dev/jdbc.properties]
[main] INFO - URL [jar:file:/filepath/DependencyProject.jar!/conf/dev/jms.properties]

私のWindowsマシンでは問題なく動作します。私の開発用Linuxボックスでは失敗しますか??? 実際の答えがなくても、何が起こっているのかをデバッグする方法を教えてくれれば、それも役に立ちます。

アップデート #2

私も追加してみました

<property name="ignoreUnresolvablePlaceholders" value="true" />

私の EncryptablePropertyPlaceholderConfigurer のプロパティリストに追加しましたが、まだ BeanDefinitionStoreException を取得しています:(

バックグラウンド

別のプロジェクトを依存関係として含むスタンドアロンの Java Maven プロジェクトを使用しています。含まれているプロジェクトはクラスのコア セットであり、各環境のプロパティ ファイルがあります。

これらのファイルは、依存関係 jar にパックされる前に main/resources/conf/[env] に格納されます (これを DependencyProject と呼びます)。このプロジェクトには、Spring 2.5.6 PropertyPlaceholderConfigurer が含まれており、プロパティを Bean に自動的にロードします。

今、私がやろうとしているのは、jGroups を使用して、アプリケーションを複数のサーバーにクラスター化することです。これには、DependencyProject のプロパティに加えて、env 固有のプロパティ ファイルを StandaloneProject に追加する必要があるため、jGroups は、各環境で通信する必要があるアドレスとポートを認識します。これらのプロパティは依存関係に属しません。一貫性を保つために、同じフォルダー名で StandaloneProject の下の構成パスにそれらを配置すると思います。誰もが一貫性が好きですよね?

したがって、これまでに取得したのは、次のようなフォルダーです。

DependencyProject/src/main/resources/conf/[env]
(これらのフォルダーには、jms.properties、jdbc.properties などのファイルが含まれます)

StandaloneProject/src/main/resources/conf/[env]
(これらのフォルダーには jgroups.properties ファイルが含まれています)

DependencyProject は、PropertyPlaceholderConfigurer で次の場所を宣言します。

<value>classpath*:conf/${implementation.env}/*.properties</value>

jGroups プロパティ ファイルを Spring でロードするつもりはありません。私は、アプリケーションの実行において昔ながらの方法でそれを行っています。

問題

conf/[env] のディレクトリ パスが重複しているという単純な事実がどこかで衝突を引き起こし、DependencyProject のプロパティが読み込まれません。「classpath:」の代わりに「classpath*:」を追加しようとしましたが、効果がありません。IgnoreUnresolvablePlaceholders も試してみましたが、それが正しい解決策かどうかはわかりません。

2 つのパスが互いにミラーリングされないようにフォルダーを挿入でき、すべてが正常に機能するため、特にフォルダー構造と関係があることはわかっています。

DependencyProject/src/main/resources/conf/[env] StandaloneProject/src/main/resources/conf/folder/[env]

何か案は?

4

1 に答える 1

0

conf フォルダーの下に jgroups フォルダーを配置するだけになりました。一部のプロパティを /conf に、一部を /conf/jgroups に配置するのではなく、すべてを /conf ディレクトリに配置したかったのですが、これは機能します。

于 2013-04-10T17:35:14.530 に答える