-
Bug Report
-
Resolution: Fixed
-
L3 - Default
-
None
Environment (Required on creation):
WebSphere Liberty 22.0.0.3
Description (Required on creation; please attach any relevant screenshots, stacktraces, log files, etc. to the ticket):
The Camunda invoice example process application is not deployed correctly on WebSphre Liberty.
Steps to reproduce (Required on creation):
- Place the camunda-invoce-example-*.war in the Liberty apps/ directory.
- In the server.xml reference the Invoce example as a webApplication.
Observed Behavior (Required on creation):
The Invoice example process application is not deployed.
Expected behavior (Required on creation):
The Invoice
Root Cause (Required on prioritization):
The Camunda invoice example is a Camunda process application that extends the ServletProcessApplication class.
Process applications extending the ServletProcessApplication class rely on the ServletContainerInitializer Servlet 3.0 API to get deployed.
WebSphere Liberty has a bug with the implementation of ServletContainerInitializer (ref).
Solution Ideas (Optional):
Adding a web.xml to the WEB-INF/ directory of the invoice example .war makes Liberty pick up & deploy the process application correctly.
Hints (optional):
ServletProcessApplications are not fully supported by Java EE containers (see: https://docs.camunda.org/manual/latest/user-guide/process-applications/the-process-application-class/#using-the-servletprocessapplication-inside-an-ejb-java-ee-container-such-as-wildfly). As a Java EE container, Liberty should use EjbProcessApplications.
Solution:
I am closing this issue since the solution was the following:
ServletProcessApplicationDeployer, the ServletContainerInitializer implementation that deploys ServletProcessApplications. relies on Java SPI.
To enable Java SPI in WAS Liberty, the bells-1.1 Liberty feature needs to be enabled, and the library containing an SPI referrenced (e.g. <bell libraryRef="Camunda"/>) inside the server.xml file.
See this post for more details.