Tomcat 6 を使用して JAX-RS Web サービスを提供しています。Guice を使用してリソースを注入し、サーブレットを作成しています。
間違いなくメモリ リークが発生しました。これは、リクエストの終了またはアプリのシャットダウンを処理していないためだと思います。
サービスに対する要求を継続的に更新すると、Tomcat のメモリ使用量が増加し、Tomcat をリサイクルするまで減少しないことがわかります。
RTFM を試みましたが、ライフサイクルを理解していません。
を使用してサーブレットを作成します
public class RadWebServiceServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new JerseyServletModule() {
@Override
protected void configureServlets() {
// Must configure at least one JAX-RS resource or the
// server will fail to start.
bind(Crags.class);
bind(IDataFacade.class).to(DataFacade.class);
bind(IRepository.class).to(Repository.class);
//filter all requests to log
filter("/*").through(LoggingFilter.class);
// Route all requests through GuiceContainer
Map<String, String> params = new HashMap<String, String>();
params.put("com.sun.jersey.spi.container.ContainerRequestFilters",
"com.sun.jersey.api.container.filter.GZIPContentEncodingFilter");
params.put("com.sun.jersey.spi.container.ContainerResponseFilters",
"com.sun.jersey.api.container.filter.GZIPContentEncodingFilter");
serve("/*").with(GuiceContainer.class, params);
}
});
}
}
それで私はばかげているのですか?リクエストまたはアプリ コンテキストの終了はどこでキャッチできますか?