Best suitable ProcessApplication for Weblogic Application Server

I need inputs to choose best suitable Process Application class for Weblogic Application Server.

We can delegate the bootstrapping of the process engine and process deployment to a process application class.

  • ServletProcessApplication
  • EjbProcessApplication
  • EmbeddedProcessApplication
  • SpringProcessApplication

Example: ServletProcessApplication can be used for process applications in a servlet container like Apache Tomcat.

From above four environment-specific sub classes, which is best suitable for Weblogic Application Server ?

Please suggest.

@jvm, The Process Application class constitutes the interface between your application and the process engine. There are different base classes you can extent to reflect different environments (e.g. Servlet vs. EJB Container).

ServletProcessApplication:

  • To be used for Process Applications is a Servlet Container like Apache Tomcat.

  • In a Servlet 3.0 container it is sufficient adding a custom subclass of ServletProcessApplication annotated with @ProcessApplication to your application or you can directly extend the ServletProcessApplication.


EjbProcessApplication:

  • To be used in a Java EE application server like JBoss, Glassfish or WebSphere Application Server or Weblogic server.

  • An EJB Process Application exposes itself as a Session Bean Component inside the EJB container. To add a custom EJB process application to your application, extend this class and configure it. EjbProcessApplication takes advantage of the Ejb Containers naming context and passes a reference containing the EJBProcessApplication’s Component Name to the process engine. An EJB process application is an EJB Session Bean that can be looked up in JNDI.


EmbeddedProcessApplication:

  • To be used when embedding the process engine is an ordinary Java SE application.

  • An embedded process application is a ProcessApplication that uses an embedded process engine. An embedded process engine is loaded by the same classloader as the process application which usually means that the camunda-engine.jar is deployed as a web application library (in case of WAR deployments) or as an application library (in case of EAR deployments).


SpringProcessApplication:

  • To be used for bootstrapping the process application from a Spring Application Context.

  • This implementation is meant to be bootstrapped by a Spring Application Context. You can either reference the bean in a Spring application-context XML file or use spring annotation-based bootstrapping from a subclass.

HINT: If your application is a Web Application, consider using the SpringServletProcessApplication

If you are using SpringBoot, then use like below:

@SpringBootApplication
@EnableProcessApplication
public class EnterpriseWebappExampleApplication {

  public static void main(String... args) {
    SpringApplication.run(EnterpriseWebappExampleApplication.class, args);
  }
}

Finally, for your usecase i can recommend to use EjbProcessApplication.

@thorben @tmetzke @Niall correct me if i’m wrong.