我正在将现有的VMS tomcat项目迁移到aks。在vm中,我们使用server.xml提供环境变量,使用 <Environment .../>
标签。对于kubernetes,我使用 env:
字段来替换这些值。
项目中有代码config.java:
private Object getObject(String key) {
try {
log.debug("looking up key: " + key + " in environment context.");
Object rtn = getEnvContext().lookup(key);
log.debug("Found property for " + key + ": " + rtn);
return rtn;
} catch (NamingException e) {
log.debug("Unable to find key: " + key);
return null;
}
}
private Context getEnvContext() throws NamingException {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
return envCtx;
}
从什么是java:comp/env?可以看出java:comp/env是jndi树中的节点,您可以在其中找到当前JavaEE组件的属性。
以下是我的问题。
tomcat启动时是否使用server.xml <Environment .../>
标记以在jndi树的节点中创建属性(因此,当 .getObject(someString)
调用时,它可以获取在server.xml中定义的值)
如果我想用helm-chart-env字段替换server.xml,这些属性(在helm中定义)会在jndi树的节点中定义吗?或者我需要在jndi.xml中将这些bean定义为jndiobjectfactorybean吗?
如果我在这里没有任何意义,我很抱歉。我对tomcat以及jndi和jndi树的概念非常陌生。如果我需要澄清,请告诉我。
暂无答案!
目前还没有任何答案,快来回答吧!