IBM WebSphere Application Server にデプロイされた JAX-RS と AngularJS を使用して、単純なレポート Web アプリケーションを作成しています。非常にシンプルなので、依存関係をできるだけ少なくするようにしています。そのため、サーバー側で派手なフレームワークは使用していません。
静的リソースを提供するために、このコントローラーを作成しました。フォルダに保管していsrc/main/resources
ます。
@Path("/")
public class Assets {
@GET
@Path("{path:.*\\.js}")
public Response javascript(@PathParam("path") String resourceName) {
return serveResource(resourceName, "application/javascript");
}
private Response serveResource(String resourceName, String contentType) {
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream(resourceName);
return Response.ok(inputStream)
.header(HttpHeaders.CONTENT_TYPE, contentType)
.build();
}
}
ここまでは順調ですね。
いくつかの JavaScript ライブラリ (jQuery、Underscore.js、AngularJS) を使用しているため、 WebJarsを利用したいと考えました。webjars.orgのドキュメントによると:
Servlet 3 と互換性のあるコンテナでは、ディレクトリ内の WebJars
WEB-INF/lib
が自動的に静的リソースとして利用可能になります。これが機能するのMETA-INF/resources
は、JAR 内のディレクトリにあるものはすべてWEB-INF/lib
、静的リソースとして自動的に公開されるためです。
対応する WebJars を に入れるとpom.xml
、動作が停止しました。これは私がこれまでに見つけたものです:
- もちろん、WebJar は、結果の
.war
パッケージのWEB-INF/lib
フォルダーに存在します。 ClassLoader
私のserveResource
メソッドクレームで使用されているクラスパスには、すべての WebJars があります。- の
ClassLoader
実装はcom.ibm.ws.classloader.CompoundClassLoader
. META-INF/resources
フォルダ内の WebJars に存在するリソースはどれも に表示されませんClassLoader
。なし。
クラスローダーに WebJars のリソースを表示させるにはどうすればよいですか?