Reproduced intermittently with the standard and standalone topologies on dev so far.
org.springframework.remoting.RemoteAccessException: Could not access HTTP invoker remote service at [http://xxxx:9060/decisioncenter/remoting/session?__dcsid=2ed102755c6b758f07f2f12037e0f97c]; nested exception is org.apache.http.NoHttpResponseException: xxxx:9060 failed to respond
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:143)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:165)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:167)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
at org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor.executeHttpPost(HttpComponentsHttpInvokerRequestExecutor.java:354)
at org.springframework.remoting.httpinvoker.HttpComponentsHttpInvokerRequestExecutor.doExecuteRequest(HttpComponentsHttpInvokerRequestExecutor.java:245)
at org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor.executeRequest(AbstractHttpInvokerRequestExecutor.java:136)
at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:202)
at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:184)
at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:150)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy10.getElementDetailsForThisHandle(Unknown Source)
at ilog.rules.teamserver.model.impl.IlrAbstractSession.getElementDetails(IlrAbstractSession.java:1050)
at ilog.rules.teamserver.model.impl.IlrAbstractCachingSession.getElementDetails(IlrAbstractCachingSession.java:80)
at ilog.rules.teamserver.model.impl.IlrAbstractSession.getElementDetails(IlrAbstractSession.java:1037)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at ilog.rules.teamserver.client.IlrSessionInvocationHandler.invoke(IlrSessionInvocationHandler.java:43)
at com.sun.proxy.$Proxy11.getElementDetails(Unknown Source)
at com.ibm.odm.cloud.mat.tests.remoteconnection.RemoteConnectionBase.createAndRunTestSuite(RemoteConnectionBase.java:415)
at com.ibm.odm.cloud.mat.tests.remoteconnection.DecisionCenterTestSuiteTest.testCreateAndRunDecisionCenterTestSuite(DecisionCenterTestSuiteTest.java:27)
In the RES console log for the standard topology, we have the following error:
decisionserverconsole_1 | [ERROR ] CWWKF0042E: A feature definition cannot be found for the concurrent-1.0 feature. Try running the command, bin/installUtility install concurrent-1.0, to install the feature. Alternatively, you can run the command, bin/installUtility install defaultServer, to install all features that are referenced by this configuration.
It sounds like we are declaring an executor service for the RES console whereas it should only be done for the decision runner.
We get a connection failed when clicking on Test for the Decision Runner on the Manage Servers view but the URL is working if we load it directly in a browser tab.
DecisionRunner does not work on the Standalone Topology of ODM on Docker (it is fine on the Standard and Clustered topologies).
Example stack trace:
com.ibm.rules.cdi.core.service.output.ScenarioSuiteException: Error occurred while starting the job
at com.ibm.rules.cdi.runtime.DecisionRunnerController.startJob(DecisionRunnerController.java:494)
at com.ibm.rules.cdi.server.rest.api.DecisionRunnerAPIImplV1.processPostRequest(DecisionRunnerAPIImplV1.java:194)
at com.ibm.rules.cdi.server.servlet.DecisionRunnerRestServlet.handleRequest(DecisionRunnerRestServlet.java:293)
at com.ibm.rules.cdi.server.servlet.DecisionRunnerRestServlet.doPost(DecisionRunnerRestServlet.java:256)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:778)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:475)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1161)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:82)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:928)
at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:262)
at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:955)
at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:341)
at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:471)
at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:405)
at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:285)
at com.ibm.ws.http.channel.internal.inbound.HttpICLReadCallback.complete(HttpICLReadCallback.java:66)
at com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:504)
at com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:574)
at com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:929)
at com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1018)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.lang.Thread.run(Thread.java:785)
Caused by: com.ibm.rules.cdi.runtime.batch.BatchException: Error occurred when starting the job
at com.ibm.rules.cdi.runtime.batch.BatchService.startJob(BatchService.java:88)
at com.ibm.rules.cdi.runtime.DecisionRunnerController.startJob(DecisionRunnerController.java:490)
... 25 more
Caused by: com.ibm.rules.cdi.runtime.BatchFailedRuntimeException
at com.ibm.rules.cdi.runtime.batch.services.JNDIDelegatingThreadPoolServiceImpl.getExecutorService(JNDIDelegatingThreadPoolServiceImpl.java:108)
at com.ibm.rules.cdi.runtime.batch.services.JNDIDelegatingThreadPoolServiceImpl.executeTask(JNDIDelegatingThreadPoolServiceImpl.java:75)
at com.ibm.jbatch.container.impl.BatchKernelImpl.startJob(BatchKernelImpl.java:135)
at com.ibm.rules.cdi.runtime.batch.BatchService.startJob(BatchService.java:82)
... 26 more
Caused by: com.ibm.rules.cdi.runtime.BatchExecutionException: Error occurred while retrieving com.ibm.rules.cdi.runtime.batch.services.JNDIDelegatingThreadPoolServiceImpl batch thread pool service
at com.ibm.rules.cdi.runtime.batch.services.JNDIDelegatingThreadPoolServiceImpl.getExecutorService(JNDIDelegatingThreadPoolServiceImpl.java:106)
... 29 more
Caused by: javax.naming.NamingException: CWNEN1001E: The object referenced by the java:comp/env/concurrent/drExecutorService JNDI name could not be instantiated. If the reference name maps to a JNDI name in the deployment descriptor bindings for the application performing the JNDI lookup, make sure that the JNDI name mapping in the deployment descriptor binding is correct. If the JNDI name mapping is correct, make sure the target resource can be resolved with the specified name relative to the default initial context. [Root exception is com.ibm.wsspi.injectionengine.InjectionException: CWNEN0030E: The server was unable to obtain an object instance for the java:comp/env/concurrent/drExecutorService reference. The exception message was: CWNEN1004E: The server was unable to find the concurrent/drExecutorService default binding with the java.util.concurrent.ExecutorService type for the java:comp/env/concurrent/drExecutorService reference.]
at com.ibm.ws.injectionengine.osgi.internal.naming.InjectionJavaColonHelper.newCannotInstantiateObjectException(InjectionJavaColonHelper.java:183)
at com.ibm.ws.injectionengine.osgi.internal.naming.InjectionJavaColonHelper.getObjectInstance(InjectionJavaColonHelper.java:118)
at com.ibm.ws.jndi.url.contexts.javacolon.internal.JavaURLContext.lookup(JavaURLContext.java:333)
at com.ibm.ws.jndi.url.contexts.javacolon.internal.JavaURLContext.lookup(JavaURLContext.java:371)
at org.apache.aries.jndi.DelegateContext.lookup(DelegateContext.java:161)
at javax.naming.InitialContext.lookup(InitialContext.java:428)
at com.ibm.rules.cdi.runtime.batch.services.JNDIDelegatingThreadPoolServiceImpl.getExecutorService(JNDIDelegatingThreadPoolServiceImpl.java:104)
... 29 more
Caused by: com.ibm.wsspi.injectionengine.InjectionException: CWNEN0030E: The server was unable to obtain an object instance for the java:comp/env/concurrent/drExecutorService reference. The exception message was: CWNEN1004E: The server was unable to find the concurrent/drExecutorService default binding with the java.util.concurrent.ExecutorService type for the java:comp/env/concurrent/drExecutorService reference.
at com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObject(InjectionBinding.java:1458)
at com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObject(InjectionBinding.java:1389)
at com.ibm.ws.injectionengine.osgi.internal.naming.InjectionJavaColonHelper.getObjectInstance(InjectionJavaColonHelper.java:116)
... 34 more
Caused by: com.ibm.wsspi.injectionengine.InjectionException: CWNEN1004E: The server was unable to find the concurrent/drExecutorService default binding with the java.util.concurrent.ExecutorService type for the java:comp/env/concurrent/drExecutorService reference.
at com.ibm.ws.injectionengine.osgi.internal.IndirectJndiLookupObjectFactory.getObjectInstance(IndirectJndiLookupObjectFactory.java:193)
at com.ibm.ws.injectionengine.osgi.internal.IndirectJndiLookupObjectFactory.getObjectInstance(IndirectJndiLookupObjectFactory.java:99)
at com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObjectInstance(InjectionBinding.java:1556)
at com.ibm.wsspi.injectionengine.InjectionBinding.getInjectionObject(InjectionBinding.java:1433)
... 36 more
You get the following error when using Retrieve HTDS Description File and then Show HTDS Options and when you get this error, you have to close the browser if you want to continue to use the RES console:
Exception thrown by application class 'javax.faces.webapp.FacesServlet.service:154'
javax.servlet.ServletException: SESN0008E: A user authenticated as anonymous has attempted to access a session owned by user:customRealm/resAdmin.
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:154)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290)
at [internal classes]
at ilog.rules.res.console.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:76)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:207)
at [internal classes]
Caused by: com.ibm.websphere.servlet.session.UnauthorizedSessionRequestException: SESN0008E: A user authenticated as anonymous has attempted to access a session owned by user:customRealm/resAdmin.
at com.ibm.ws.webcontainer.session.impl.HttpSessionContextImpl.checkSecurity(HttpSessionContextImpl.java:751)
at [internal classes]
at org.apache.myfaces.context.servlet.SessionMap.getSession(SessionMap.java:75)
at org.apache.myfaces.context.servlet.SessionMap.getAttribute(SessionMap.java:46)
at org.apache.myfaces.context.servlet.AbstractAttributeMap.get(AbstractAttributeMap.java:91)
at org.apache.myfaces.portlet.PortletUtil.isPortletRequest(PortletUtil.java:64)
at org.apache.myfaces.lifecycle.RestoreViewExecutor.deriveViewId(RestoreViewExecutor.java:107)
at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:57)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
... 5 more
How to reproduce:
NB: The test was performed using Chrome. The error can be reproduced in the standard and cluster topologies.
In the RES console, click Explorer.
In the tree, select the miniloan ruleset.
On the ruleset view, click Retrieve HTDS Description File.
Select REST then click View. It opens a new tab next to the RES console tab in the browser.
Click on the RES console tab in the browser, then click Show HTDS Options. You get an unauthorized exception "A user authenticated as anonymous has attempted to access a session owned by user:customRealm/resAdmin" and when you get this exception, you cannot use the RES console anymore. You have to close the browser and load the RES console again.
Currrently the sample DB for DC contains server definitions that do not work. It would be better to add servers for DecisionRunner and RES that work. Note, that we should have different server URLS for the standalone and the standard/cluster topologies (see the URLs in #26).
The Decision Runner and the RES console are not running on the same host. So we should set the RES_URL otherwise the XOM deployment from Decision Center for testing and simulation does not work.
The RES Console Diagnostic raise warning beacause no xu is available. We need to configure the console to avoid this warning. I have take a look in the code and it's seem we need to introduce a new behavior in the console near the one as ZOS (except that the htds is available).
When we start the DC container, we get the following warnings. We should check whether it is normal or not to get these warnings. In the best world, it would be better to not have warnings.
decisioncenter_1 | [WARNING ] CWWKG0033W: The value [decisioncenter-libraries] specified for the reference attribute [commonLibraryRef] was not found in the configuration.
decisioncenter_1 | [WARNING ] CWWKG0033W: The value [decisioncenter-libraries] specified for the reference attribute [commonLibraryRef] was not found in the configuration.
decisioncenter_1 | [WARNING ] Couldn't add files from /tmp/solr_config7046266713554902815.dir/lib to classpath: /tmp/solr_config7046266713554902815.dir/lib
decisioncenter_1 | [WARNING ] [dc] Solr index directory '/tmp/decisioncenter-solr-dir/dc/index' doesn't exist. Creating new index...
decisioncenter_1 | [WARNING ] Cannot write to config directory /tmp/solr_config7046266713554902815.dir/configsets/shared/conf; switching to use InMemory storage instead.
decisioncenter_1 | [WARNING ] Starting optimize... Reading and rewriting the entire index! Use with care.
rename the repo in lowercase to be able to use the name in the build script
ability to git clone the repo directly in ODM_INSTALL instead of the .zip
change the script to replace docker-compose by odm-ondocker
in docker-compose.yml add the image tag to name the docker image. Because by default, it creates dockercompose-decisioncenter.
`version: '2'
services:
dbserver:
build:
context: ./
dockerfile: ./derby-server-db/Dockerfile
image: odm-dbserver:8.8.1.1
ports:
The DecisionRunner and RES servers are now created by default but they do not have a user name and password. We still have to set the user name and password by hand. It would be better if they could also be created automatically.
The docker-compose yml files do not have the same naming conventions. We should name them either "docker-compose-(standard/standalone/cluster).yml" or odm-(standard/standalone/cluster).yml".
odm-cluster.yml and docker-compose-cluster.yml are duplicated?
It would be better to not rely on the existing value of a given variable to replace it.
=> Ensure that the current replacements work whatever the value is.
For example the following replacement will work whatever the value for com.ibm.rules.decisioncenter.setup.configuration-file is:
perl -i -p0e 's/(com.ibm.rules.decisioncenter.setup.configuration-file</param-name>.?)(.?)(</param-value>)/\1/config/decisioncenter-configuration.properties\3/s' /config/apps/decisioncenter.war/WEB-INF/web.xml
The following replacement only works if the value is false:
perl -i -p0e 's/(ForceDatabaseTableCreation</param-name>.*?)(false)(</param-value>)/\1true\3/s' /config/apps/DecisionRunner.war/WEB-INF/web.xml
When building the dbserver image this error appear:
ERROR: Service 'dbserver' failed to build: lstat derby-server-db/data.tar.gz: no such file or directory
This error occurs notably when we use two decision runner instances and we execute some requests with a given instance of CDIClient and not all the requests go to the same instance of decision runner. To prevent this error from occurring, we have to use the same ltpa.keys file in all the liberty server instances.
decisioncenter_1 | [WARNING ] [Report - 2017-08-21_03-32-29-645] nullilog.rules.teamserver.model.IlrTestingException: http://localhost:9070/DecisionRunner is not a valid Decision Runner URL. CDIHttpClient cannot be created.
decisioncenter_1 | Connect to localhost:9070 [localhost/127.0.0.1] failed: Connection refused (Connection refused)
decisioncenter_1 | Connection refused (Connection refused)
decisioncenter_1 | at ilog.rules.teamserver.ejb.service.validation.IlrTestSuiteService.createDecisionRunnerClient(IlrTestSuiteService.java:557)
decisioncenter_1 | at ilog.rules.teamserver.ejb.service.validation.IlrTestSuiteService.asynchronousPrepare(IlrTestSuiteService.java:213)
decisioncenter_1 | at ilog.rules.teamserver.ejb.service.validation.PrepareArchiveThreadService.run(PrepareArchiveThreadService.java:57)
decisioncenter_1 | at com.google.common.util.concurrent.AbstractExecutionThreadService$1$2.run(AbstractExecutionThreadService.java:66)
decisioncenter_1 | at com.google.common.util.concurrent.Callables$4.run(Callables.java:122)
decisioncenter_1 | at java.lang.Thread.run(Thread.java:785)
decisioncenter_1 | Caused by: java.lang.IllegalArgumentException: http://localhost:9070/DecisionRunner is not a valid Decision Runner URL. CDIHttpClient cannot be created.
decisioncenter_1 | at com.ibm.rules.cdi.client.CDIClientServiceFactory.createHTTPClient(CDIClientServiceFactory.java:125)
decisioncenter_1 | at com.ibm.rules.cdi.client.CDIClientServiceFactory.createHTTPClient(CDIClientServiceFactory.java:103)
decisioncenter_1 | at ilog.rules.teamserver.model.validation.ValidationHelper.createDecisionRunnerClient(ValidationHelper.java:75)
decisioncenter_1 | at ilog.rules.teamserver.ejb.service.validation.IlrTestSuiteService.createDecisionRunnerClient(IlrTestSuiteService.java:555)
decisioncenter_1 | ... 5 more
decisioncenter_1 | Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:9070 [localhost/127.0.0.1] failed: Connection refused (Connection refused)
decisioncenter_1 | at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:158)
decisioncenter_1 | at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
decisioncenter_1 | at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
decisioncenter_1 | at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
decisioncenter_1 | at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
decisioncenter_1 | at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
decisioncenter_1 | at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
decisioncenter_1 | at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
decisioncenter_1 | at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
decisioncenter_1 | at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
decisioncenter_1 | at com.ibm.rules.cdi.client.CDIClientServiceFactory.isDecisionRunner(CDIClientServiceFactory.java:147)
decisioncenter_1 | at com.ibm.rules.cdi.client.CDIClientServiceFactory.createHTTPClient(CDIClientServiceFactory.java:121)
decisioncenter_1 | ... 8 more
decisioncenter_1 | Caused by: java.net.ConnectException: Connection refused (Connection refused)
decisioncenter_1 | at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:380)
decisioncenter_1 | at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:236)
decisioncenter_1 | at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:218)
decisioncenter_1 | at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
decisioncenter_1 | at java.net.Socket.connect(Socket.java:666)
decisioncenter_1 | at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:74)
decisioncenter_1 | at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:141)
decisioncenter_1 | ... 19 more
decisioncenter_1 |
The goal of this enhencement is to deliver a Docker image that allow a customer to install Rule Designer from their Docker images.
The concept of operation will be :
1- User download a compatible ODM Eclipse version
2- User Retrieve the URL from the container that host rd
3- User Add an install site with this URL.
Derby is not seen as a production DB. The goal of this enhancement is to migrate from Derby to another DB that is more Cloud friendly.
We need to have a look at the offering in AWS / Azur / GCloud to see what is the best choice.
In the server.xml, it would be more simply to have only the default groups and users.
See the default groups that are listed in the decisioncenter-configuration.properties file.
We currently have different versions for some features in standalone, standard and cluster. For example, we have servlet-3.0 in standalone whereas we have servlet-3.1 in decisionserverconsole.