В моем весеннем веб-приложении, созданном с использованием maven, есть следующий файл main/resources/jndi.properties
.
java.naming.security.authentication=simple
java.naming.provider.url=ldap://192.168.0.22:389/dc=company,dc=in
java.naming.security.principal=cn=admin,dc=company,dc=in
java.naming.security.credentials=1234
java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
У меня есть 2 метода c.
Метод getMongodbConfig()
использует жестко заданные спецификации среды:
public static MongodbConfig getMongodbConfig() throws NamingException {
// jndi.properties file though getting properly loaded in standalone application, it is not getting loaded by default in java ee containers
Hashtable<String, String> env = new Hashtable<>();
env.put("java.naming.security.authentication","simple");
env.put("java.naming.provider.url","ldap://192.168.0.22:389/dc=company,dc=in");
env.put("java.naming.security.principal","cn=admin,dc=company,dc=in");
env.put("java.naming.security.credentials","1234");
env.put("java.naming.factory.initial","com.sun.jndi.ldap.LdapCtxFactory");
DirContext ctx = new InitialDirContext(env);
// lookup the object in the naming service
MongodbConfig retrievedMongodbConfig = lookup(ctx, MONGODB_CONFIG_DISTINGUISH_NAME);
logger.info("Host: {}, port: {}", retrievedMongodbConfig.getHost(), retrievedMongodbConfig.getPort());
ctx.close();
return retrievedMongodbConfig;
}
Метод getMongodbConfigFromJNDIProperties()
пытается использовать спецификации среды из файла jndi.properties
.
public static MongodbConfig getMongodbConfigFromJNDIProperties() throws NamingException {
// jndi.properties file though getting properly loaded in standalone application, it is not getting loaded by default in java ee containers
DirContext ctx = new InitialDirContext();
// lookup the object in the naming service
MongodbConfig retrievedMongodbConfig = lookup(ctx, MONGODB_CONFIG_DISTINGUISH_NAME);
logger.info("Host: {}, port: {}", retrievedMongodbConfig.getHost(), retrievedMongodbConfig.getPort());
ctx.close();
return retrievedMongodbConfig;
}
Оба вышеупомянутых метода успешно работают, когда я запускаю эти методы как автономное приложение. Но когда я собираю .war и развертываю как веб-приложение, getMongodbConfig()
работает нормально, но я получаю следующее исключение при использовании getMongodbConfigFromJNDIProperties()
javax.naming.NameNotFoundException: Name [cn=mongodbConfig,cn=production,cn=environment,cn=config,cn=tech] is not bound in this Context. Unable to find [cn=mongodbConfig,cn=production,cn=environment,cn=config,cn=tech]
Итак, как мне сделать мой getMongodbConfigFromJNDIProperties()
даже в мое веб-приложение?
Редактировать: я создаю .war-файл своего проекта и развертываю в каталоге webapps
tomcat 8, на всякий случай, если эта информация критична.