我们正在使用 Glassfish,我们在其中设置 Map 类型的 JNDI 资源,我们定义了一些 Bean 工厂,之后我们可以在我们的代码中访问(JNDI 查找)这个映射。
我想用 Spring Boot 对嵌入式 Tomcat 测试做同样的事情,但我不知道怎么做。他们到处都在参考如何添加 JNDI 数据源而不是一些 Hashmap。我尝试过这样的事情,但我的猜测是完全错误的。
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有可能吗?