Можно ли добавить переменные окружения способом JNDI с помощью весенней загрузки v2.0.3? - PullRequest
0 голосов
/ 17 октября 2019

Я перевожу старое программное обеспечение в совершенно другую среду,в старом программном обеспечении они использовали библиотеку, которая выбирает переменные, ища их следующим образом: 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)

Мне не хватает того, что яделаю не так

...