1

I am in the process of migrating existing VMSS tomcat project to AKS. In VM, we use server.xml to provide environment variables using <Environment .../> tags. For Kubernetes, I am using env: field to replace these values.

In the project, there is code 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;
    }

From what is java:comp/env?, it says that java:comp/env is the node in the JNDI tree where you can find properties for the current Java EE component.

Here are my questions.

  1. When tomcat starts, does it use server.xml <Environment .../> tag to create properties in the node in the JNDI tree? (thus, when .getObject(someString) is called, it can get the value defined in server.xml)

  2. If I want to replace server.xml with Helm chart env field, will these properties (defined in Helm) be defined in the node in the JNDI tree? or do I need to define these beans in jndi.xml as JndiObjectFactoryBean?

I am sorry if I am not making sense at all here. I am very new to tomcat and concept of JNDI and JNDI tree. Please let me know if I need to clarify myself.

Jonathan Hagen
  • 580
  • 1
  • 6
  • 29

0 Answers0