Я перевожу старое программное обеспечение в совершенно другую среду,в старом программном обеспечении они использовали библиотеку, которая выбирает переменные, ища их следующим образом: String someName = (String) (new InitialContext().lookup("java:comp/env/SOMENAME"));
И я обязан использовать ту же библиотеку, но в приложении с загрузочной пружиной старое программное обеспечение использовало ее в файле server.xml внутри файла conf, например так:
<Environment name="SOMENAME" value="SOMEVALUE" type="java.lang.String" override="false"/>
я смог сделать следующее:
@Configuration
public class TomcatConfiguration {
@Bean
public TomcatServletWebServerFactory tomcatFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
tomcat.enableNaming();
return super.getTomcatWebServer(tomcat);
}
@Override
protected void postProcessContext(Context context) {
ContextResource resource = new ContextResource();
resource.setName("java:comp/env");
resource.setType(DataSource.class.getName());
resource.setProperty("SOMENAME","SOMEVALUE");
context.getNamingResources().addResource(resource);
super.postProcessContext(context);
}
};
}
@Bean(destroyMethod = "")
public DataSource jndiDataSource() throws IllegalArgumentException, NamingException {
JndiObjectFactoryBean bean = new JndiObjectFactoryBean();
bean.setJndiName("java:comp/env");
bean.setProxyInterface(DataSource.class);
bean.setLookupOnStartup(false);
bean.afterPropertiesSet();
return (DataSource) bean.getObject();
}
}
Библиотека по-прежнему выдает исключение:
javax.naming.NameNotFoundException: Name [SOMENAME] is not bound in this Context. Unable to find [SOMENAME].
at org.apache.naming.NamingContext.lookup(NamingContext.java:816)
Мне не хватает того, что яделаю не так