Class JNDI


  • public final class JNDI
    extends Object

    Utility class for simplifying some web related tasks that use JNDI under the hood, such as getting the <env-entry> from web.xml.

    Note that the Faces spec defines one parameter that can optionally be defined via an env entry instead of the typical context/init parameter; ProjectStage.PROJECT_STAGE_JNDI_NAME. Mojarra defines an additional proprietary one: "java:comp/env/ClientStateSavingPassword".

    Since:
    1.6
    Author:
    Arjan Tijms
    • Field Detail

      • JNDI_NAMESPACE_PREFIX

        public static final String JNDI_NAMESPACE_PREFIX
        JNDI namespace prefix, including the colon: java:
        Since:
        3.9
        See Also:
        Constant Field Values
      • JNDI_NAMESPACE_COMPONENT

        public static final String JNDI_NAMESPACE_COMPONENT
        JNDI namespace to lookup components: java:comp
        Since:
        3.9
        See Also:
        Constant Field Values
      • JNDI_NAMESPACE_GLOBAL

        public static final String JNDI_NAMESPACE_GLOBAL
        JNDI namespace to lookup all enterprise beans: java:global
        Since:
        3.9
        See Also:
        Constant Field Values
      • JNDI_NAMESPACE_MODULE

        public static final String JNDI_NAMESPACE_MODULE
        JNDI namespace to lookup local enterprise beans within the same module: java:module
        Since:
        3.9
        See Also:
        Constant Field Values
      • JNDI_NAMESPACE_APPLICATION

        public static final String JNDI_NAMESPACE_APPLICATION
        JNDI namespace to lookup local enterprise beans within the same application: java:app
        Since:
        3.9
        See Also:
        Constant Field Values
      • JNDI_NAME_PREFIX_ENV_ENTRY

        public static final String JNDI_NAME_PREFIX_ENV_ENTRY
        JNDI name prefix for environment entries: java:comp/env
        Since:
        3.9
        See Also:
        Constant Field Values
      • PATTERN_EJB_INTERFACE_SUFFIX

        public static final Pattern PATTERN_EJB_INTERFACE_SUFFIX
        Pattern for local or remote suffix in EJB interface name.
    • Method Detail

      • getEnvEntry

        public static <T> T getEnvEntry​(String name)
        Returns the named environment entry for the deployment component from where this is called. From within the web module this returns the <env-entry-value> of a <env-entry> in web.xml associated with the given <env-entry-name>.

        Note that the name used here is relative to "java:comp/env", which is exactly as it appears in web.xml.

        Example:

        web.xml

         <env-entry>
            <cont>org.omnifaces.TEST_INTEGER</env-entry-name>
            <env-entry-type>java.lang.Integer</env-entry-type>
            <env-entry-value>10</env-entry-value>
         </env-entry>
         

        Lookup in Java using relative name

         Integer test = JNDI.getEnvEntry("org.omnifaces.TEST_INTEGER");
         

        Lookup in Java using full JNDI name

         Integer test = JNDI.lookup("java:comp/env/org.omnifaces.TEST_INTEGER");
         

        Note that even the "full JNDI name" is relative to the "deployment component" from which the lookup is done. To use a true global JNDI name an additional <lookup-name> should be specified in web.xml.

        Environment entries can also be injected using Resource.

        Type Parameters:
        T - The expected return type.
        Parameters:
        name - the environment entry name relative to "java:comp/env".
        Returns:
        The environment entry value associated with the given name, or null if there is none.
        Throws:
        ClassCastException - When T is of wrong type.
        Since:
        1.6
        See Also:
        InitialContext.lookup(String)
      • lookup

        public static <T> T lookup​(String name)
        Returns the named object from the default JNDI instance.
        Type Parameters:
        T - The expected return type.
        Parameters:
        name - the name of the object to be retrieved
        Returns:
        the named object, or null if there is none.
        Throws:
        ClassCastException - When T is of wrong type.
        Since:
        1.6
        See Also:
        InitialContext.lookup(String)
      • guessJNDIName

        public static String guessJNDIName​(Class<?> beanClass)
        Guess JNDI name of given bean class, which can be a local or remote EJB.
        Parameters:
        beanClass - The bean class to guess JNDI name for.
        Returns:
        The guessed JNDI name of the given bean class.
        Since:
        3.9
      • guessJNDIName

        public static String guessJNDIName​(String className)
        Guess JNDI name of given fully-qualified class name.
        Parameters:
        className - The fully-qualified class name to guess JNDI name for.
        Returns:
        The guessed JNDI name of the given fully-qualified class name.
        Since:
        3.9