Troubleshooting xUML Services
Cannot Deploy xUML Service
Problem 1
When deploying an xUML service, a tomcat exception occurs, e.g.
type: Exception report
message: Servlet execution threw an exception
description: The server encountered an internal error that prevented it from fulfilling this request.
exception:
javax.servlet.ServletException: Servlet execution threw an exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
ch.e2e.console.base.tools.UploadFilter.doFilter(UploadFilter.java:41)
[...]
Solution 1
If the Bridge has been updated without shutting down the Windows service "E2E Console" (as described on Updating a Bridge, step 2), some unwanted effects may occur. It can happen that not all libraries can be updated by the installer, e.g. if they are in use.
So, check if there are duplicated libraries in folder <Bridge program folder>/servlets/lib. In most cases this affects e2e-xuml-base.lib, others may be affected, too.
There are two ways to solve this problem.
- First you need to shut down Windows service "E2E Console" (as described on Updating a Bridge, step 2).
- Then,
- Remove the elder of each duplicated library from folder <Bridge program folder>/servlets/lib,
or
- run the Installer again.
- Re-start Windows service "E2E Console" (if not fixed by running the installer).
Problem 2
Bridge 7 When deploying an xUML service, the following error is displayed:
For input string: "${global_e2e_configuration_controller_Port}".short(Errorcode:For input string: "${global_e2e_configuration_controller_Port}")
Solution 2
You tried to deploy a service compiled with Builder 7.0.0-beta3 to a Bridge with a version older than 7.0.0-beta3. As of the mentioned version, the Builder features variable port numbers. Builder version and Bridge version must match in this case.
- Update your Bridge to the necessary version, 7.0.0-beta3 or higher.
- Downgrade your Builder to a version older than 7.0.0-beta3.
xUML Service Already Exists
Problem
When deploying an xUML service, an error message is displayed that this service already exists: Instance 'xxx' at node 'yyy' exists!
Solution
If a compiled xUML service is deployed to a node instance, the Bridge will check whether an xUML service with the same name has already been deployed before. If you do not have chosen the option to overwrite the xUML service in the Builder project settings (see Deployment of xUML Services), the xUML Model Compiler will report the error shown above.
xUML Service Startup Fails
Problem
A deployed xUML service fails to start with error: Could not start server!.
The error message is displayed either in the standard log (see section Logging of xUML Services Logging of xUML Services) or in the xUML Model Compiler after deploying the xUML service with option startup selected.
Solution
The problem described above can have the following reasons:
- Another xUML service is already running on the same control port (see Control Port already in use).
- ipv6 is disabled on your server.
- You tried to deploy an xUML service with defined SAP backends, but the required libraries are missing (see SAP Libraries Missing).
- The xUML service uses features that require a specific xUML Runtime version and you are trying to run it on an Bridge with a lower Runtime version (see Starting and Stopping xUML Services).
- The number of running processes and used memory might be limited by the local system account of Windows (see Windows Limitation on the number of startable services).
- The service uses a persistent state database which is not available at startup (see Installing and Configuring Database Access or Troubleshooting Database Access).
Steps:
- Check the bridgeserver log of the xUML service. It contains details about errors that might have occurred (see xUML Service Standard Log).
- Check the start log of the xUML service. It contains the environment variables that were set at startup time and information about errors that might have occurred. For more details, see xUML Service Start Log.
- If ipv6 is disabled on your server, try starting the service with option
--http.service.bind.default-af
set to inet (see xUML Runtime Command Line Options for more). It may be that none of the above mentioned issues apply to your problem and the service logs do not contain any helpful information. To dig further down the problem, you can try starting the service from a system terminal. The terminal shows more logging information and this may help to narrow down the problem.
Use this for debugging purposes only - don't keep a manually started service running! The Bridge will not in all cases recognize this service as running.
The data directory of the Bridge (default location: E2E_BRIDGE_DATA) contains one directory named bridge_<name of the service> for every service. This service directory contains a start script in folder bin (start.bat on Windows systems, start.sh on Unix systems.
Call this start script as follows:
NONEstart.bat <name of the program directory of the Bridge> e.g. in Windows: C:\E2E_BRIDGE_DATA\bridge_TransactionProcessing\bin> start.bat c:\E2E_BRIDGE_PROG
After you have finished analyzing the service startup problems, stop the manually started service with the stop.bat (Windows), stop.sh (Unix) script from the same folder, or press Ctrl-C or stop it in the Bridge.
xUML Service Does Not Start Automatically on Bridge Startup
Problem
A deployed xUML service has option Automatic Startup applied, but does not start automatically on Bridge startup.
Solution
Check the node instance preferences, whether option Disable Automatic Service Startup is checked. This prevents automatic restart for all deployed services.
xUML Service Logs a Warning on Startup
Problem
On xUML service startup, the bridgeserver log reads:
[Warning]
[Internal]
[RESTLM]
[9]
[Sending response failed, socket error: 6 "sockets::Socket::writeLine() end failed. Broken pipe"]
Solution
Update to Bridge 7.2.0 resp. Bridge 6.0.68.
RESTLM/9
is thrown, if a client calls a REST or control port operation and does not wait for the answer. In certain cases, the Bridge itself will do this intentionally. The newer Bridge versions take this into account and will not throw this error anymore.
Control Port Already in Use
Problem
If you deploy an xUML service having the same control port as an xUML service already running, it can be deployed, but it cannot be started. In the xUML service log, the following error message is displayed.
[2010-10-04 10:58:06 +0200][Warning][Internal][NETLM][1][Failed to start listener on 120.110.120.52:22022.]
[2010-10-04 10:58:07 +0200][Warning][Internal][NETLM][1][Could not start all listeners. Probably due to conflicting port numbers.]
[2010-10-04 10:58:07 +0200][Fatal][Internal][CTRLLM][8][Starting the listener failed. Most probably ports are already in use.]
[2010-10-04 10:58:07 +0200][Fatal][Internal][SRVLM][7][Controller is not available, startup failed.]
Solution
A control port can only be used by one running xUML service. Check the control port of each deployed xUML service (see xUML Service Details). Either stop the other xUML service on the Bridge first, or adapt the control port of the current xUML service accordingly and deploy it again.
SOAP Port Already in Use
Problem
If you deploy an ¨xUML service using the same SOAP port as an xUML service already running, it can be deployed, but the SOAP port cannot be reserved. In the xUML service log, the following warning is displayed.
[2010-10-04 11:07:23 +0200][Warning][Internal][NETLM][1][Failed to start listener on 120.110.120.52:12022.]
[2010-10-04 11:07:24 +0200][Warning][Internal][NETLM][1][Could not start all listeners. Probably due to conflicting port numbers.]
Solution
A SOAP port can only be used by one running xUML service. Check the SOAP port of each deployed xUML service (see section Service Instances described in xUML Service Details). Either stop the other xUML service on the Bridge first, or adapt the SOAP port of the current xUML service accordingly and deploy it again.
When stopping one of the two xUML services using the same SOAP port, the other xUML service will reserve the port, which is available again, immediately. This behavior allows a Zero-Downtime-Update.
SAP Libraries Missing
Problem
If a deployed xUML service with defined SAP backend fails to start, you need to check, if the necessary library has been installed.
Solution
In the Bridge, select the node instance, to which the xUML service should be deployed, and switch to the Runtime tab. Check, if the corresponding library SAP has been installed. In the highlighted area of the example below, it is indicated that the SAP library has already been installed.
If you need to install these libraries, refer to Installing SAP Backend Access.
Windows Limitation on the Number of Startable Services
Problem
Some Windows systems restrict the number of processes depending on the available memory and other parameters. Because of that, the problem might arouse, that no additional services can be started from the Bridge.
This concerns:
- Windows 2000
- Windows XP
- Windows Server 2003
- Windows Server 2008 R1
The limitation does not apply to Windows Server 2008 R2.
Solution
- Increase the parameter SharedSection as described in the Microsoft knowledge base.
SharedSection=xxxx,yyyy,zzzz
For 32-bit systems, increase valueyyyy
to 12288 and value zzzz to 1024.
For 64-bit systems, increase valueyyyy
to 20480 and valuezzzz
to 1024. - Monitor the HEAP.
Using the tool dheapmon allows to monitor the HEAP utilization and also the effect of the startup/shutdown of the services to the HEAP.
xUML Service Cannot be Stopped
Problem
An xUML service cannot be stopped via the Bridge.
Solution
In case of a complex xUML service, the shutdown may take longer than usually. Although the error message is displayed that the xUML service could not be stopped, it may still be shutting down. Wait a few seconds and reload the page to refresh the status of the xUML service. If it is still not stopped, you need to kill the corresponding Bridge process.
Check also the stop log of the xUML service. It contains the environment variables that were set during the shutdown and information about errors that might have occurred. For more details, see E2E Composite Service Stop Log.
A detailed description of how to kill an xUML service can be found at Killing xUML Services.
If you need to stop the corresponding Bridge process manually by killing the process via the Windows Task Manager or a kill command (Linux), proceed as follows:
- Identify the Process ID of the xUML service's process
You need to identify the process id of the xUML service process. It can be found in the following file (default location):C:\E2E_BRIDGE_DATA/bridge_<xUML service name>/server.pid
End the Process
On Windows systems, open the Task Manager and switch to the tab Processes. You may have to unhide the column PID. End the process with the corresponding process id.On Linux systems, execute the command kill <process id>.