2

/META-INF/groupid-dir/artifactid-dir/ の下にある pom.properties を含む Jboss Web コンテナーに .war をデプロイして読み取ることができました。

ファイルにアクセスするために、同じ戦争で JSP 内で次のコードを使用しました。

ServletContext servletContext = getServletConfig().getServletContext(); 
InputStream in = servletContext.getResourceAsStream("META-INF/maven/groupid-dir/artifactid-dir/pom.properties");

これはうまくいきます。しかし、コンテナーにデプロイされたすべての .war から pom.propertes を動的に読み取れるようにしたいと考えています。これは可能ですか、それとも私は jsp の 1 つの war ホルダーのコンテキストにしかアクセスできませんか?

-mb

4

5 に答える 5

0

JBossMBeanを通過するようなトリッキーなことをしなければならない可能性があります。これは漠然としていると思いますが、そのアプローチを検討することを検討してください。これは、JBoss内のアプリケーションからMBeanサーバーを取得する方法に関するリンクです(http://を追加)www.jboss.org/community/wiki/FindMBeanServer(Stackoverflowがリンクの貼り付けを妨げています)。Jboss Web mbeanを見つけ、すべてのWebアプリケーションmbeanをはがし、それぞれにクラスローダーを要求してから、すでに述べたことを実行できると思います。

于 2009-05-20T14:33:43.317 に答える
0

WARファイルがフォルダーとして展開されている場合、使用できるはずです

String basePath=getServletContext().getRealPath("/");

WAR ファイルがアーカイブ形式の場合、このアプローチは機能しない可能性があります

于 2012-04-18T12:14:38.423 に答える
0

zip の読み取りや jboss mbean の使用が正しい方法だとは思いません。トリッキーではないと思います。あなたは を使用して正しい軌道に乗っていましたServletContext.getResourceAsStream

ServletContext.getResourcePathsサブディレクトリのグループ ID とアーティファクト ID を識別するために、おそらく を使用できますが、何度か使用するようです。何かのようなもの

servletContext.getResourceAsStream(servletContext.getResourcePaths(
    (String) servletContext.getResourcePaths("/META-INF/maven/")
               .iterator().next())
  .iterator().next() + "pom.properties")

また

servletContext.getResourceAsStream(servletContext.getResourcePaths(
    (String) servletContext.getResourcePaths("/META-INF/maven/")
               .iterator().next())
  .iterator().next() + "pom.xml")

pom.xml の場合

于 2009-07-23T21:51:31.210 に答える
0

現在のクラスパスでのみリソースを探すことができます。Web コンテナの通常の操作は、コンテナにデプロイされた他のアーティファクトにアクセスせずに、デプロイされたアーティファクトごとに特定のクラスパスを作成することです。

これは、成果物 B でデプロイされた foo-0.9.jar を誤って使用しないように、foo-1.0.jar を使用する成果物 A を回避するために非常に重要です。

したがって、コンテナに助けを求める必要があります。これは、そのためにコンテナ固有のコードを記述する必要があることを意味します。これにより、ベンダーに依存するようになります-それは望ましくないかもしれません。

于 2012-09-16T08:42:54.387 に答える
0

基本的に、アプリケーションは JBoss コンテナーと同じマシン上で実行されているため、ローカル ファイルシステム上のファイルへのアクセスは、独自の .properties ファイルへのアクセスとほぼ同じ方法で可能になるはずです。私はあなたがこれを行うのを妨げるものに精通していません.

war ファイル内のファイルにアクセスする場合、war ファイルはもちろん通常の zip ファイルであるため、java.util.zip パッケージを使用する必要があります。フレンドリーなリマインダーです。

于 2009-05-14T21:33:35.093 に答える