タイプ Map の JNDI リソースを設定する Glassfish を使用しています。いくつかの Bean ファクトリを定義した後、コードでこのマップにアクセス (JNDI ルックアップ) できます。
Spring Boot を使用した埋め込み Tomcat テストでも同じことをしたいのですが、方法がわかりません。どこでも、ハッシュマップではなくJNDIデータソースを追加する方法を参照しているだけです。私はこのようなことを試みましたが、それは完全に間違っていると思います。
public TomcatEmbeddedServletContainerFactory tomcatFactory() {
return new TomcatEmbeddedServletContainerFactory() {
@Override
protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(
Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatEmbeddedServletContainer(tomcat);
}
@Override
protected void postProcessContext(Context context) {
ContextResource resource = new ContextResource();
resource.setName("jndiname");
resource.setType(Map.class.getName());
// for testing only
resource.setProperty("testproperty", "10");
context.getNamingResources().addResource(resource);
}
};
}
@Bean(destroyMethod="")
public Map jndiDataSource() throws IllegalArgumentException, NamingException {
JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
bean.setJndiName("jndiname");
bean.setProxyInterface(Map.class);
bean.setLookupOnStartup(false);
bean.setResourceRef(true);
bean.afterPropertiesSet();
return (Map)bean.getObject();
}
オブジェクト ファクトリのどこに渡せばよいかわかりません。組み込みのTomcatでそれはまったく可能ですか?