Class SessionManager


  • public class SessionManager
    extends java.lang.Object

    Purpose: Global session location.

    Description: This allows for a global session local which can be accessed globally from other classes. This is needed for EJB data stores as they must have a globally accessible place to access the session. This can be by EJB session beans, BMP beans and CMP beans as well as Servlets and other three-tier services.

    Responsibilities:

    • Store a global session.
    • Allow the storage of alternative sessions as well.
    Author:
    James Sutherland
    Since:
    TOPLink/Java 3.0
    • Constructor Summary

      Constructors 
      Constructor Description
      SessionManager()
      PUBLIC: The default constructor to create a new session manager.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addSession​(java.lang.String sessionName, Session session)
      ADVANCED: add an named session to the hashtable.
      void addSession​(Session session)
      INTERNAL: Add an named session to the hashtable.
      void destroy()
      PUBLIC: Destroy current session manager instance.
      void destroyAllSessions()
      INTERNAL: Destroy all sessions held onto by this manager.
      void destroySession​(java.lang.String sessionName)
      INTERNAL: Destroy the session defined by sessionName on this manager.
      static java.util.Collection<SessionManager> getAllManagers()
      ADVANCED: Return all session managers.
      Session getDefaultSession()
      PUBLIC: Return the default session.
      org.eclipse.persistence.internal.sessions.factories.model.SessionConfigs getInternalMWConfigObjects​(java.lang.String resourceName, java.lang.ClassLoader objectClassLoader)
      INTERNAL: This method is to be used to load config objects for the Mapping Workbench only.
      org.eclipse.persistence.internal.sessions.factories.model.SessionConfigs getInternalMWConfigObjects​(java.lang.String resourceName, java.lang.ClassLoader objectClassLoader, boolean validate)
      INTERNAL: This method is to be used to load config objects for the Mapping Workbench only.
      static SessionManager getManager()
      PUBLIC: Return the session manager for current context.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName)
      PUBLIC: Return the session by name.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName, boolean shouldLoginSession)
      PUBLIC: Return the session by name.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName, boolean shouldLoginSession, boolean shouldRefreshSession)
      PUBLIC: Return the session by name.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName, java.lang.ClassLoader objectClassLoader)
      PUBLIC: Return the session by name.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName, java.lang.Object objectBean)
      PUBLIC: Return the session by name, using the classloader of the Object specified.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName, java.lang.String filename)
      PUBLIC: Return the session by name, in the file specified.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName, java.lang.String filename, java.lang.ClassLoader classLoader)
      PUBLIC: Return the session by name, in the file specified, using the class loader to find the resource.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(XMLSessionConfigLoader loader)
      PUBLIC: Return the session by name, loading the configuration from the file specified in the loader, using the loading options provided on the loader.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(XMLSessionConfigLoader loader, java.lang.String sessionName, java.lang.ClassLoader objectClassLoader)
      PUBLIC: Return the session by name, loading the configuration from the file specified in the XMLSessionConfigLoader.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(XMLSessionConfigLoader loader, java.lang.String sessionName, java.lang.ClassLoader objectClassLoader, boolean shouldLoginSession, boolean shouldRefreshSession)
      PUBLIC: Return the session by name, loading the configuration from the file specified in the loader.
      org.eclipse.persistence.internal.sessions.AbstractSession getSession​(XMLSessionConfigLoader loader, java.lang.String sessionName, java.lang.ClassLoader objectClassLoader, boolean shouldLoginSession, boolean shouldRefreshSession, boolean shouldCheckClassLoader)
      PUBLIC: Return the session by name, loading the configuration from the file specified in the loader.
      java.util.concurrent.ConcurrentMap<java.lang.String,​Session> getSessions()
      INTERNAL: Return a hashtable on all sessions.
      protected static SessionManager initializeManager()
      INTERNAL: Initialize the singleton session manager.
      void setDefaultSession​(Session defaultSession)
      PUBLIC: Set the default session.
      static void setManager​(SessionManager theManager)
      INTERNAL: Set the singleton session manager.
      void setSessions​(java.util.concurrent.ConcurrentMap sessions)
      INTERNAL: Set a hashtable of all sessions
      static void setShouldUseSchemaValidation​(boolean useSchemaValidation)
      PUBLIC: Set if schema validation will be used when parsing the 10g (10.1.3) sessions XML.
      static boolean shouldUseSchemaValidation()
      PUBLIC: Return if schema validation will be used when parsing the 10g (10.1.3) sessions XML.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • shouldUseSchemaValidation

        protected static boolean shouldUseSchemaValidation
        Allow for usage of schema validation to be configurable.
      • defaultSession

        protected org.eclipse.persistence.internal.sessions.AbstractSession defaultSession
      • sessions

        protected java.util.concurrent.ConcurrentMap<java.lang.String,​Session> sessions
      • shouldPerformDTDValidation

        protected static boolean shouldPerformDTDValidation
    • Constructor Detail

      • SessionManager

        public SessionManager()
        PUBLIC: The default constructor to create a new session manager.
    • Method Detail

      • shouldUseSchemaValidation

        public static boolean shouldUseSchemaValidation()
        PUBLIC: Return if schema validation will be used when parsing the 10g (10.1.3) sessions XML.
        Returns:
        true if schema validation will be used when parsing the 10g (10.1.3) sessions XML, false otherwise
      • setShouldUseSchemaValidation

        public static void setShouldUseSchemaValidation​(boolean useSchemaValidation)
        PUBLIC: Set if schema validation will be used when parsing the 10g (10.1.3) sessions XML. By default schema validation is on, but can be turned off if validation problems occur, or to improve parsing performance.
        Parameters:
        useSchemaValidation - true if schema validation should be used when parsing the 10g (10.1.3) sessions XML, false otherwise
      • addSession

        public void addSession​(Session session)
        INTERNAL: Add an named session to the hashtable. Session must have a name prior to setting into session manager.
        Parameters:
        session - session to be added to the session manager
      • addSession

        public void addSession​(java.lang.String sessionName,
                               Session session)
        ADVANCED: add an named session to the hashtable.
        Parameters:
        sessionName - session name
        session - session to be added to the session manager
      • getDefaultSession

        public Session getDefaultSession()
        PUBLIC: Return the default session. The session configuration is stored in a sessions.xml file in a directory on your classpath. Other sessions are supported through the getSession by name API.
        Returns:
        default session
      • destroy

        public void destroy()
        PUBLIC: Destroy current session manager instance.
      • destroySession

        public void destroySession​(java.lang.String sessionName)
        INTERNAL: Destroy the session defined by sessionName on this manager.
        Parameters:
        sessionName - name of the session to be destroyed
      • destroyAllSessions

        public void destroyAllSessions()
        INTERNAL: Destroy all sessions held onto by this manager.
      • getInternalMWConfigObjects

        public org.eclipse.persistence.internal.sessions.factories.model.SessionConfigs getInternalMWConfigObjects​(java.lang.String resourceName,
                                                                                                                   java.lang.ClassLoader objectClassLoader)
        INTERNAL: This method is to be used to load config objects for the Mapping Workbench only. Do not call this method.
        Parameters:
        resourceName - resource to load
        objectClassLoader - ClassLoader used to load the resource
        Returns:
        parsed session configuration
      • getInternalMWConfigObjects

        public org.eclipse.persistence.internal.sessions.factories.model.SessionConfigs getInternalMWConfigObjects​(java.lang.String resourceName,
                                                                                                                   java.lang.ClassLoader objectClassLoader,
                                                                                                                   boolean validate)
        INTERNAL: This method is to be used to load config objects for the Mapping Workbench only. Do not call this method.
        Parameters:
        resourceName - resource to load
        objectClassLoader - ClassLoader used to load the resource
        validate - whether to validate the resource passed in
        Returns:
        parsed session configuration
      • getManager

        public static SessionManager getManager()
        PUBLIC: Return the session manager for current context. This allow global access to a set of named sessions.
        Returns:
        the session manager for current context
      • getAllManagers

        public static java.util.Collection<SessionManager> getAllManagers()
        ADVANCED: Return all session managers. This allows global access to all instances of SessionManager.
        Returns:
        all SessionManager instances
      • initializeManager

        protected static SessionManager initializeManager()
        INTERNAL: Initialize the singleton session manager.
        Returns:
        initialized session manager
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName)
        PUBLIC: Return the session by name.
        Parameters:
        sessionName - session name
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName,
                                                                                    boolean shouldLoginSession)
        PUBLIC: Return the session by name. Log the session in only if specified.
        Parameters:
        sessionName - session name
        shouldLoginSession - whether the session should be logged in
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName,
                                                                                    boolean shouldLoginSession,
                                                                                    boolean shouldRefreshSession)
        PUBLIC: Return the session by name. Log the session in only if specified. Refresh the session only if specified.
        Parameters:
        sessionName - session name
        shouldLoginSession - whether the session should be logged in
        shouldRefreshSession - whether the session should be refreshed
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName,
                                                                                    java.lang.Object objectBean)
        PUBLIC: Return the session by name, using the classloader of the Object specified. This method is used in older versions of BMP support This method will cause the class loader of the provided object to be compared with the classloader used to load the original session of this name, with this classloader. If they are not the same then the session will be refreshed.
        Parameters:
        sessionName - session name
        objectBean - object to get the ClassLoader from
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName,
                                                                                    java.lang.String filename)
        PUBLIC: Return the session by name, in the file specified. Login the session.
        Parameters:
        sessionName - session name
        filename - file name containing session definition
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName,
                                                                                    java.lang.String filename,
                                                                                    java.lang.ClassLoader classLoader)
        PUBLIC: Return the session by name, in the file specified, using the class loader to find the resource. This method will cause the class loader to be compared with the classloader used to load the original session of this name. If they are not the same then the session will be refreshed.
        Parameters:
        sessionName - session name
        filename - file name containing session definition
        classLoader - ClassLoader used to load the original session
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(java.lang.String sessionName,
                                                                                    java.lang.ClassLoader objectClassLoader)
        PUBLIC: Return the session by name. Provide the class loader for loading the project, the configuration file and the deployed classes. E.g. SessionManager.getManager().getSession("mySession", MySessionBean.getClassLoader()); This method will cause the class loader to be compared with the classloader used to load the original session of this name. If they are not the same then the session will be refreshed.
        Parameters:
        sessionName - session name
        objectClassLoader - ClassLoader used to load the original session
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(XMLSessionConfigLoader loader,
                                                                                    java.lang.String sessionName,
                                                                                    java.lang.ClassLoader objectClassLoader)
        PUBLIC: Return the session by name, loading the configuration from the file specified in the XMLSessionConfigLoader. Provide the class loader for loading the project, the configuration file and the deployed classes. This method will cause the class loader to be compared with the classloader used to load the original session of this name. If they are not the same then the session will be refreshed.
        Parameters:
        loader - XMLSessionConfigLoader containing session configuration
        sessionName - session name
        objectClassLoader - ClassLoader used to load the original session
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(XMLSessionConfigLoader loader,
                                                                                    java.lang.String sessionName,
                                                                                    java.lang.ClassLoader objectClassLoader,
                                                                                    boolean shouldLoginSession,
                                                                                    boolean shouldRefreshSession)
        PUBLIC: Return the session by name, loading the configuration from the file specified in the loader. Provide the class loader for loading the project, the configuration file and the deployed classes. Pass in true for shouldLoginSession if the session returned should be logged in before returned otherwise false. Pass in true for shouldRefreshSession if the XMLSessionConfigLoader should reparse the configuration file for new sessions. False, will cause the XMLSessionConfigLoader not to parse the file again.
        Parameters:
        loader - XMLSessionConfigLoader containing session configuration
        sessionName - session name
        objectClassLoader - ClassLoader used to load the original session
        shouldLoginSession - whether the session should be logged in
        shouldRefreshSession - whether the session should be refreshed
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(XMLSessionConfigLoader loader,
                                                                                    java.lang.String sessionName,
                                                                                    java.lang.ClassLoader objectClassLoader,
                                                                                    boolean shouldLoginSession,
                                                                                    boolean shouldRefreshSession,
                                                                                    boolean shouldCheckClassLoader)
        PUBLIC: Return the session by name, loading the configuration from the file specified in the loader. Provide the class loader for loading the project, the configuration file and the deployed classes. Pass in true for shouldLoginSession if the session returned should be logged in before returned otherwise false. Pass in true for shouldRefreshSession if the XMLSessionConfigLoader should reparse the configuration file for new sessions. False, will cause the XMLSessionConfigLoader not to parse the file again. Pass true for shouldCheckClassLoader will cause the class loader to be compared with the classloader used to load the original session of this name. If they are not the same then the session will be refreshed, this can be used for re-deployment.
        Parameters:
        loader - XMLSessionConfigLoader containing session configuration
        sessionName - session name
        objectClassLoader - ClassLoader used to load the original session
        shouldLoginSession - whether the session should be logged in
        shouldRefreshSession - whether the session should be refreshed
        shouldCheckClassLoader - whether to compare class loaders used to load given session
        Returns:
        session with given session name
      • getSession

        public org.eclipse.persistence.internal.sessions.AbstractSession getSession​(XMLSessionConfigLoader loader)
        PUBLIC: Return the session by name, loading the configuration from the file specified in the loader, using the loading options provided on the loader.
        Parameters:
        loader - XMLSessionConfigLoader containing session configuration
        Returns:
        session with given session name
      • setSessions

        public void setSessions​(java.util.concurrent.ConcurrentMap sessions)
        INTERNAL: Set a hashtable of all sessions
        Parameters:
        sessions - sessions for this session manager
      • getSessions

        public java.util.concurrent.ConcurrentMap<java.lang.String,​Session> getSessions()
        INTERNAL: Return a hashtable on all sessions.
        Returns:
        all sessions known by this session manager
      • setDefaultSession

        public void setDefaultSession​(Session defaultSession)
        PUBLIC: Set the default session. If not set the session configuration is stored in a sessions.xml file in a TopLink directory on your classpath. Other sessions are supported through the getSession by name API.
        Parameters:
        defaultSession - default session
      • setManager

        public static void setManager​(SessionManager theManager)
        INTERNAL: Set the singleton session manager. This allows global access to a set of named sessions.
        Parameters:
        theManager - session manager for current context