@SpringBootApplication
public class SampleTomcatJndiApplication {
public static void main(String[] args) {
SpringApplication.run(SampleTomcatJndiApplication.class, args);
}
@Bean
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("jdbc/myDataSource");
resource.setType(DataSource.class.getName());
resource.setProperty("driverClassName", "your.db.Driver");
resource.setProperty("url", "jdbc:yourDb");
context.getNamingResources().addResource(resource);
ContextEnvironment contextEnv = new ContextEnvironment();
contextEnv.setName("test/value");
contextEnv.setType("java.lang.String");
contextEnv.setOverride(false);
contextEnv.setValue("testing");
context.getNamingResources().addEnvironment(contextEnv);
}
};
}
@Bean(destroyMethod="")
public DataSource jndiDataSource() throws IllegalArgumentException, NamingException {
JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
bean.setJndiName("java:comp/env/jdbc/myDataSource");
bean.setProxyInterface(DataSource.class);
bean.setLookupOnStartup(false);
bean.afterPropertiesSet();
return (DataSource)bean.getObject();
}
In dem obigen Code ist es eine Möglichkeit, dass ich den Test/Wert aus einer Bohne (Wie Datasource Bean Works) zugreifen kann ???Frühling Boot - JNDI Wert Lookup
Ich habe viele Ansätze versucht, aber nichts scheint zu funktionieren. Ich kann auf den Test/Wert von einem Controller mit (new InitialContext().lookup("java:comp/env/test/value")
) zugreifen.
Warum möchten Sie sogar JNDI verwenden? Wenn Sie einen eingebetteten Container verwenden, können Sie dasselbe erreichen, indem Sie die Datenquelle als einfache Bean anstelle von JNDI deklarieren. IMHO machen Sie die Dinge komplexer als nötig. –