私の問題は、あなたが非常に一般的だと思う問題ですが、これまでソリューションを見つけることができませんでした。ClassLoaderメソッドを使用して、クラス内のすべてのリソースを入力ストリームとして取得します。
Tomcat 5.5の下でJava Webアプリケーションをビルドします(ただし、WebLogic環境のようにどこにでもデプロイできるという要件があります)。リソースファイルは、WEB-INF/classesの下に配置され、ClassLoaderのgetResourceAsStream()メソッドを使用してロードされていることが賢明です。あなたがロードしたいリソースの名前を知っていれば、大丈夫です。
私の問題は、クラスのサブディレクトリにあるすべてのもの(空でないサブディレクトリに再帰的に含む)をロードする必要があることです。
folderX/folderY
folderX/folderY/fileA.properties
:私が持っている場合
ので、例えば、WEB-INF /クラスの下に、次のfolderX/fileB.properties
ファイルが必要ですロードするA.propertiesクラスとfileB.propertiesクラスを、アプリケーションが起動する前に実際に名前を知らなくても(つまり、WEB-INF/classesの下の任意のディレクトリからリソースを任意にロードする必要がある)
これを行う最もエレガントな方法は何ですか?必要な情報(それぞれの必要なリソースへのリソースパス)を見つけるために、どのようなオブジェクトを調べることができますか?可能であれば、サーブレット以外の特定のソリューションがベストです(可能であればクラスローディングフレームワーク内にすべて保持してください)。
ありがとうございます!
ウェブサーバーが自分自身を指し示すhttpプロトコルを返すことはできませんでしたか?私は少なくとも、このようなアプローチは、すべてのターゲットWebサーバー上でテストして、動作することを確認する必要があります。 – Yishai
Sun Jersey REST実装では、このアプローチを使用して、パッケージ名に基づいて特定のクラスを検索します(特定の注釈を持つクラスを探す)。 –
展開されていないWARデプロイメントに関するWebLogicの制限事項について教えてください。 Fileオブジェクトをインスタンス化して調べると、WebLogicでは問題が発生しませんか? – ubermensch