public class EjbProcessApplication extends AbstractProcessApplication
Common base class for writing EJB process applications.
An EJB Process Application exposes itself as a Session Bean Component inside the EJB container.
This determines the invocation semantics when invoking code from the process application and the
nature of the ProcessApplicationReference held by the process engine.
In order to add a custom EJB process application to your application, extend this class and configure it as follows:
@ProcessApplication("my process application")
@Singleton
@Startup
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class DefaultEjbProcessApplication extends EjbProcessApplication {
@PostConstruct
public void deploy() {
super.deploy();
}
@PreDestroy
public void undeploy() {
super.undeploy();
}
}
(the same Metadata can of course be provided using an XML-based ejb-jar.xml
deployment descriptor
This allows the process engine as well as other applications to invoke this EJB Process
Application and get EJB invocation semantics for the invocation. For example, if your
process application provides a JavaDelegate implementation, the process engine
will call the EjbProcessApplication's
execute(java.util.concurrent.Callable) Method and from that method invoke
the JavaDelegate. This makes sure that
JavaDelegate may take advantage of the EjbProcessApplication's invocation context
and resolve resources from the component's Environment (such as a java:comp/BeanManager).
Big pile of EJB interceptors
|
| +--------------------+
| |Process Application |
invoke v | |
ProcessEngine ----------------OOOOO--> Java Delegate |
| |
| |
+--------------------+
When the process application registers with a process engine
(see ManagementService.registerProcessApplication(String, ProcessApplicationReference),
the process application passes a reference to itself to the process engine. This reference allows the
process engine to reference the process application. The EjbProcessApplication takes advantage
of the Ejb Containers naming context and passes a reference containing the EJBProcessApplication's
Component Name to the process engine. Whenever the process engine needs access to process application,
the actual component instance is looked up and invoked.
| Modifier and Type | Field and Description |
|---|---|
protected static String |
EJB_CONTEXT_PATH |
protected static String |
JAVA_APP_APP_NAME_PATH |
protected static String |
MODULE_NAME_PATH |
defaultDeployToEngineName, isDeployed, processApplicationBeanElResolver, processApplicationElResolver, processApplicationScriptEnvironment, variableSerializers| Constructor and Description |
|---|
EjbProcessApplication() |
| Modifier and Type | Method and Description |
|---|---|
protected String |
autodetectProcessApplicationName()
Override this method to autodetect an application name in case the
ProcessApplication annotation was used but without parameter. |
protected void |
ensureInitialized() |
<T> T |
execute(Callable<T> callable)
The default implementation simply modifies the Context
ClassLoader |
protected Class<? extends ProcessApplicationInterface> |
getBusinessInterface()
allows subclasses to provide a custom business interface
|
ProcessApplicationReference |
getReference()
Returns a globally sharable reference to this process application.
|
protected String |
lookupEeApplicationName()
determine the ee application name based on information obtained from JNDI.
|
protected ProcessApplicationInterface |
lookupSelfReference()
lookup a proxy object representing the invoked business view of this component.
|
createDeployment, deploy, execute, getBeanElResolver, getDefaultDeployToEngineName, getElResolver, getEnvironmentScripts, getExecutionListener, getName, getProcessApplicationClassloader, getProcessApplicationScriptEnvironment, getProperties, getRawObject, getScriptEngineForName, getTaskListener, getVariableSerializers, initProcessApplicationElResolver, setDefaultDeployToEngineName, setVariableSerializers, undeployprotected static String MODULE_NAME_PATH
protected static String JAVA_APP_APP_NAME_PATH
protected static String EJB_CONTEXT_PATH
public ProcessApplicationReference getReference()
ProcessApplicationInterfaceReturns a globally sharable reference to this process application. This reference may be safely passed to the process engine. And other applications.
protected String autodetectProcessApplicationName()
AbstractProcessApplicationProcessApplication annotation was used but without parameter.autodetectProcessApplicationName in class AbstractProcessApplicationprotected Class<? extends ProcessApplicationInterface> getBusinessInterface()
public <T> T execute(Callable<T> callable) throws ProcessApplicationExecutionException
ProcessApplicationInterfaceClassLoaderexecute in interface ProcessApplicationInterfaceexecute in class AbstractProcessApplicationcallable - to be executed "within" the context of this process application.ProcessApplicationExecutionExceptionprotected void ensureInitialized()
protected ProcessApplicationInterface lookupSelfReference()
protected String lookupEeApplicationName()
Copyright © 2022. All rights reserved.