org.objectweb.jonas.container
Class EJBServiceImpl

java.lang.Object
  extended by javax.management.NotificationBroadcasterSupport
      extended by org.objectweb.jonas.management.reconfig.emitter.ReconfigEmitter
          extended by org.objectweb.jonas.service.AbsServiceImpl
              extended by org.objectweb.jonas.container.EJBServiceImpl
All Implemented Interfaces:
NotificationBroadcaster, NotificationEmitter, EJBService, EJBServiceImplMBean, Service

public class EJBServiceImpl
extends AbsServiceImpl
implements EJBService, EJBServiceImplMBean

Implementation of the EJB Container Service for jonas. This class works only with jonas_ejb classes.

Author:
Philippe Coq, Jeff Mesnil (Security), Markus Karg (Novell port), Christophe Ney (for making easier Enhydra integration), Adriana Danes (complete management methods), Florent Benoit & Ludovic Bert (Ear service, deployJars, undeployJars), Benjamin Bonnet (max thread pool size), Michel-Ange Anton (JSR77 MBean : EJBModule), Adriana Danes (JSR77)

Field Summary
static String AUTO_GENIC
          Auto-GenIC is enabled or disabled ?
static String AUTO_GENIC_ARGS
          Arguments for the Auto-GenIC
static String AUTOLOADDIR
          autoloaddir property
static String BMP
          BeanManaged Management properties
static String CLASS
          EJB service class
static String CMP
          ContainerManaged Management properties
static String DESCRIPTORS
          descriptors property
protected static String EJBJARS_DIR
          The name of the directory containing the ejb-jar files.
protected static String JONAS_BASE
          The name of the JONAS_BASE directory.
static String JONAS_EJB
          base for properties
static String PARSINGWITHVALIDATION
          parsing with validation property
 
Fields inherited from class org.objectweb.jonas.management.reconfig.emitter.ReconfigEmitter
RECONFIG_TYPE, SAVE_RECONFIG_TYPE
 
Constructor Summary
EJBServiceImpl()
           
 
Method Summary
 void checkGenIC(String fileName, URL[] urls)
          Check that GenIC have been applied on the given ejb-jar file If it was not done, it run GenIC against the file.
 String createContainer(Context ctx)
          Create a JOnAS Container for all the beans that are described in a .xml file, or belong to .jar file.
 String createContainer(String file)
          Create an ejb container for the EJBs contained in a .jar (or .xml) file.
 void deployJars(Context ctx)
          Deploy the given ejb-jars of an ear file with the specified parent classloader (ear classloader).
 void doInit(Context ctx)
          Init the Service.
 void doStart()
          Start the Service Initialization of the service is already done.
 void doStop()
          Stop the service: - Remove all JOnAS Containers.
 List getAutoloadDirectories()
          Return the list of "autoload" directories for EJB containers.
 Container getContainer(String fileName)
          Get the Container by its file name (.xml or .jar)
 String getContainerContextID(String containerFileName)
          Returns the ContextID associated to this container filename.
 Integer getCurrentNumberOfContainer()
          MBean method
 Set getDataSourceDependence(String dsName)
          MBean method
 List getDeployableJars()
          Return the list of installed EJB container ready to deploy.
 List getDeployedJars()
          Return the list of all loaded EJB container.
 List getInstalledJars()
          Return the list of installed EJB containers.
 String getJarsDirectory()
          Return the Ejbjars directory.
 Set getJmsConnectionFactoryDependence(String cfName)
          Management method
 Set getJmsDestinationDependence(String destName)
          Manangement method
 Set getMailFactoryDependence(String mfName)
          Management method
 Timer getTimer(JTimerHandleInfo info)
          Get a new Timer.
 Integer getTotalCurrentNumberOfBeanType()
          MBean method
 Integer getTotalCurrentNumberOfBMPType()
          MBean method
 Integer getTotalCurrentNumberOfCMPType()
          MBean method
 Integer getTotalCurrentNumberOfMDBType()
          MBean method
 Integer getTotalCurrentNumberOfSBFType()
          MBean method
 Integer getTotalCurrentNumberOfSBLType()
          MBean method
 Boolean isJarDeployed(String fileName)
          Test if the specified file is already deployed (if a container is created for this jar).
 boolean isJarDeployedByWorkName(String workFileName)
          Test if the specified jar identified with its work name is already deployed (if a container is created for this jar).
 boolean isJarLoaded(String fileName)
          Test if the specified filename is already deployed or not
 Container[] listContainers()
          List JOnAS container created by EJB Service
 void removeCache(ClassLoader earClassLoader)
          Make a cleanup of the cache of deployment descriptor.
 void removeContainer(Container cont)
          Remove a JOnAS container
 void removeContainer(Container cont, boolean isEarCase)
          Remove the specified container.
 void removeContainer(String fileName)
          Remove EJB container corresponding to a .JAR file.
 Timer restartTimer(JTimerHandleInfo info)
          Restart a Timer given some input infos.
 void syncAllEntities(boolean passivate)
          Synchronized all entity bean containers
 void unDeployJars(URL[] urls)
          Undeploy the given ejb-jars of an ear file.
 
Methods inherited from class org.objectweb.jonas.service.AbsServiceImpl
getDomainName, getJonasServerName, getName, init, isStarted, setName, start, stop
 
Methods inherited from class org.objectweb.jonas.management.reconfig.emitter.ReconfigEmitter
initLogger, sendReconfigNotification, sendSaveNotification
 
Methods inherited from class javax.management.NotificationBroadcasterSupport
addNotificationListener, getNotificationInfo, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.objectweb.jonas.service.Service
getName, init, isStarted, setName, start, stop
 

Field Detail

AUTO_GENIC

public static final String AUTO_GENIC
Auto-GenIC is enabled or disabled ?

See Also:
Constant Field Values

AUTO_GENIC_ARGS

public static final String AUTO_GENIC_ARGS
Arguments for the Auto-GenIC

See Also:
Constant Field Values

JONAS_BASE

protected static final String JONAS_BASE
The name of the JONAS_BASE directory.


EJBJARS_DIR

protected static final String EJBJARS_DIR
The name of the directory containing the ejb-jar files.


JONAS_EJB

public static final String JONAS_EJB
base for properties

See Also:
Constant Field Values

AUTOLOADDIR

public static final String AUTOLOADDIR
autoloaddir property

See Also:
Constant Field Values

PARSINGWITHVALIDATION

public static final String PARSINGWITHVALIDATION
parsing with validation property

See Also:
Constant Field Values

DESCRIPTORS

public static final String DESCRIPTORS
descriptors property

See Also:
Constant Field Values

CLASS

public static final String CLASS
EJB service class

See Also:
Constant Field Values

BMP

public static final String BMP
BeanManaged Management properties

See Also:
Constant Field Values

CMP

public static final String CMP
ContainerManaged Management properties

See Also:
Constant Field Values
Constructor Detail

EJBServiceImpl

public EJBServiceImpl()
Method Detail

doInit

public void doInit(Context ctx)
            throws ServiceException
Init the Service. Configuration information is passed thru a Context object.

Specified by:
doInit in class AbsServiceImpl
Parameters:
ctx - EJB service initialization context
Throws:
ServiceException - Problem with EJB service initialization

doStart

public void doStart()
             throws ServiceException
Start the Service Initialization of the service is already done.

Specified by:
doStart in class AbsServiceImpl
Throws:
ServiceException - service start-up failed

doStop

public void doStop()
Stop the service: - Remove all JOnAS Containers. - Unbinds all the EJBHome names from JNDI

Specified by:
doStop in class AbsServiceImpl

createContainer

public String createContainer(Context ctx)
                       throws Exception
Create a JOnAS Container for all the beans that are described in a .xml file, or belong to .jar file.

Specified by:
createContainer in interface EJBService
Parameters:
ctx - JNDI context in which is found the container configuration.
Returns:
The ObjectName of the MBean associated to the container (i.e. to the deployed module)
Throws:
Exception - if an error occur during the creation of the container.

getContainer

public Container getContainer(String fileName)
Get the Container by its file name (.xml or .jar)

Parameters:
fileName - given file name on which
Returns:
Container

removeContainer

public void removeContainer(Container cont)
Remove a JOnAS container


listContainers

public Container[] listContainers()
List JOnAS container created by EJB Service


syncAllEntities

public void syncAllEntities(boolean passivate)
Synchronized all entity bean containers

Specified by:
syncAllEntities in interface EJBService
Specified by:
syncAllEntities in interface EJBServiceImplMBean
Parameters:
passivate - passivate instances after synchronization.

getCurrentNumberOfContainer

public Integer getCurrentNumberOfContainer()
MBean method

Specified by:
getCurrentNumberOfContainer in interface EJBServiceImplMBean
Returns:
Integer Total Number of Container currently in JOnAS

getTotalCurrentNumberOfBeanType

public Integer getTotalCurrentNumberOfBeanType()
MBean method

Specified by:
getTotalCurrentNumberOfBeanType in interface EJBServiceImplMBean
Returns:
Integer Total Number of Bean Type currently in JOnAS

getTotalCurrentNumberOfBMPType

public Integer getTotalCurrentNumberOfBMPType()
MBean method

Specified by:
getTotalCurrentNumberOfBMPType in interface EJBServiceImplMBean
Returns:
Integer Total Number of Bmp Type currently in JOnAS

getTotalCurrentNumberOfCMPType

public Integer getTotalCurrentNumberOfCMPType()
MBean method

Specified by:
getTotalCurrentNumberOfCMPType in interface EJBServiceImplMBean
Returns:
Integer Total Number of Cmp Type currently in JOnAS

getTotalCurrentNumberOfSBFType

public Integer getTotalCurrentNumberOfSBFType()
MBean method

Specified by:
getTotalCurrentNumberOfSBFType in interface EJBServiceImplMBean
Returns:
Integer Total Number of Sbf Type currently in JOnAS

getTotalCurrentNumberOfSBLType

public Integer getTotalCurrentNumberOfSBLType()
MBean method

Specified by:
getTotalCurrentNumberOfSBLType in interface EJBServiceImplMBean
Returns:
Integer Total Number of Sbl Type currently in JOnAS

getTotalCurrentNumberOfMDBType

public Integer getTotalCurrentNumberOfMDBType()
MBean method

Specified by:
getTotalCurrentNumberOfMDBType in interface EJBServiceImplMBean
Returns:
Integer Total Number of Mdb Type currently in JOnAS

removeContainer

public void removeContainer(String fileName)
                     throws Exception
Remove EJB container corresponding to a .JAR file. This method is called by the J2EESererver MBean's undeployJar(fileName) and by the Adm.removeBeans(fileName).

Specified by:
removeContainer in interface EJBService
Parameters:
fileName - name of the file containing the JAR module
Throws:
Exception - when the EjbJar cannot be undeployed.

createContainer

public String createContainer(String file)
                       throws Exception
Create an ejb container for the EJBs contained in a .jar (or .xml) file.

Specified by:
createContainer in interface EJBService
Parameters:
file - Name of the file to be deployed
Returns:
The ObjectName of the MBean associated to the container (to the deployed module)
Throws:
Exception - when the EjbJar cannot be deployed.

isJarDeployed

public Boolean isJarDeployed(String fileName)
Test if the specified file is already deployed (if a container is created for this jar).

Specified by:
isJarDeployed in interface EJBService
Parameters:
fileName - the name of the jar file
Returns:
true if the jar was deployed, false otherwise

isJarDeployedByWorkName

public boolean isJarDeployedByWorkName(String workFileName)
Test if the specified jar identified with its work name is already deployed (if a container is created for this jar).

Specified by:
isJarDeployedByWorkName in interface EJBService
Parameters:
workFileName - the internal name of the jar file (working copy)
Returns:
true if the jar was deployed, false otherwise

getDataSourceDependence

public Set getDataSourceDependence(String dsName)
MBean method

Specified by:
getDataSourceDependence in interface EJBServiceImplMBean
Returns:
the ObjectName of all the ejbs using this datasource.

getJmsDestinationDependence

public Set getJmsDestinationDependence(String destName)
Manangement method

Specified by:
getJmsDestinationDependence in interface EJBServiceImplMBean
Returns:
the ObjectName of all the ejb using this destination.

getJmsConnectionFactoryDependence

public Set getJmsConnectionFactoryDependence(String cfName)
Management method

Specified by:
getJmsConnectionFactoryDependence in interface EJBServiceImplMBean
Returns:
the ObjectName of all the ejb using this Connection Factory.

getMailFactoryDependence

public Set getMailFactoryDependence(String mfName)
Management method

Specified by:
getMailFactoryDependence in interface EJBServiceImplMBean
Returns:
the ObjectName of all the ejb using a given Mail Factory.

getInstalledJars

public List getInstalledJars()
                      throws Exception
Return the list of installed EJB containers. The JAR files or the directories with expanded EJB container are searched in JONAS_BASE/ejbjars and all ejbjar directories 'autoload'.

Specified by:
getInstalledJars in interface EJBServiceImplMBean
Returns:
The list of JAR files or the directories with expanded EJB container found
Throws:
Exception - if the list can't be retrieved

deployJars

public void deployJars(Context ctx)
                throws ServiceException
Deploy the given ejb-jars of an ear file with the specified parent classloader (ear classloader). (This method is only used for the ear applications, not for the ejb-jar applications).

Specified by:
deployJars in interface EJBService
Parameters:
ctx - the context containing the configuration to deploy the ejbjars.
This context contains the following parameters :
- earRootUrl the root of the ear application.
- earURL filename of the EAR.
- earClassLoader the ear classLoader of the ear application.
- ejbClassLoader the ejb classLoader for the ejbjars.
- jarURLs the list of the urls of the ejb-jars to deploy.
- roleNames the role names of the security-role.
Throws:
ServiceException - if an error occurs during the deployment.

unDeployJars

public void unDeployJars(URL[] urls)
Undeploy the given ejb-jars of an ear file. (This method is only used for the ear applications, not for the ejb-jar applications).

Specified by:
unDeployJars in interface EJBService
Parameters:
urls - the list of the urls of the ejb-jars to undeploy.

removeContainer

public void removeContainer(Container cont,
                            boolean isEarCase)
Remove the specified container.

Parameters:
cont - the container to remove.
isEarCase - true if only if the removeContainer method is called in the ear case, false otherwise.

removeCache

public void removeCache(ClassLoader earClassLoader)
Make a cleanup of the cache of deployment descriptor. This method must be invoked after the ear deployment by the EAR service. the deployment of an ear by .

Specified by:
removeCache in interface EJBService
Parameters:
earClassLoader - the ClassLoader of the ear application to remove from the cache.

isJarLoaded

public boolean isJarLoaded(String fileName)
Test if the specified filename is already deployed or not

Specified by:
isJarLoaded in interface EJBServiceImplMBean
Parameters:
fileName - the name of the jar file.
Returns:
true if the jar is deployed, else false.

getDeployedJars

public List getDeployedJars()
Return the list of all loaded EJB container.

Specified by:
getDeployedJars in interface EJBServiceImplMBean
Returns:
The list of deployed EJB container

getDeployableJars

public List getDeployableJars()
                       throws Exception
Return the list of installed EJB container ready to deploy.

Specified by:
getDeployableJars in interface EJBServiceImplMBean
Returns:
The list of deployable EJB container
Throws:
Exception - when cannot get installed jars list

getAutoloadDirectories

public List getAutoloadDirectories()
Return the list of "autoload" directories for EJB containers.

Returns:
The list of all "autoload" directories

getJarsDirectory

public String getJarsDirectory()
Return the Ejbjars directory.

Specified by:
getJarsDirectory in interface EJBServiceImplMBean
Returns:
The Ejbjars directory

checkGenIC

public void checkGenIC(String fileName,
                       URL[] urls)
Check that GenIC have been applied on the given ejb-jar file If it was not done, it run GenIC against the file.

Specified by:
checkGenIC in interface EJBService
Parameters:
fileName - given EJB-JAR file.
urls - Array of URLs used as CLASSPATH during EJB compilation

getContainerContextID

public String getContainerContextID(String containerFileName)
Returns the ContextID associated to this container filename. Used by the EARService for security purpose.

Specified by:
getContainerContextID in interface EJBService
Parameters:
containerFileName - container filename
Returns:
Returns the ContextID associated to this container filename.

getTimer

public Timer getTimer(JTimerHandleInfo info)
Get a new Timer.

Specified by:
getTimer in interface EJBService
Parameters:
info - JTimerHandleInfo instance used for Timer creation.
Returns:
a newly created Timer

restartTimer

public Timer restartTimer(JTimerHandleInfo info)
Restart a Timer given some input infos.

Specified by:
restartTimer in interface EJBService
Parameters:
info - JTimerHandleInfo instance used for Timer restart.
Returns:
a newly restarted Timer.


Copyright © 2007 OW2 Consortium. All Rights Reserved.