私はJavaでTomcatサーバーを使用しており、キャッシュされたDataSourceオブジェクトにアクセスするために(mysql接続をプールするために)レストレットリソースからServletContextにアクセスできるようにしたいと考えていました。org.restlet.resource.ResourceにはContextオブジェクトが付属していますが、これはServletContextとはまったく関係ありません。それで、いくつかのグーグルの後で、私は以下を見つけました:
final String contextKey = "org.restlet.ext.servlet.ServletContext";
final String poolKey = "MyCachedDBPool";
final Map<String, Object> attrs = getContext().getAttributes();
final ServletContext ctx = (ServletContext) attrs.get(contextKey);
if (ctx == null) {
throw new Exception("Cannot find ServletContext: " + contextKey);
}
final DataSource ds = (DataSource) ctx.getAttribute(poolKey);
if (ds == null) {
throw new DetourQAException("DataSource not stored in context"
+ poolKey + "attr");
}
ただし、ServletContextに対してはnullを返します。誰かがレストレットリソース内からServletContextに正常にアクセスしましたか?どのようにアクセスしましたか?
これが接続プールを行うための推奨される方法ではない場合、レストレットで接続プールを行うための最良の方法は何ですか?