HealthServlet gives an error Servlet.init() for servlet [HealthServlet] threw exception

book

Article ID: 185474

calendar_today

Updated On:

Products

CA Service Desk Manager

Issue/Introduction

Type Exception Report

Message Servlet.init() for servlet [HealthServlet] threw exception

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: Servlet.init() for servlet [HealthServlet] threw exception
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.lang.Thread.run(Unknown Source)

Root Cause

java.lang.NullPointerException
	com.ca.ServicePlus.slump.SLUMP.logobj(SLUMP.java:377)
	com.ca.ServicePlus.slump.SLUMP.register_msg(SLUMP.java:804)
	com.ca.ServicePlus.health.SlumpThread.registerMonitors(Unknown Source)
	com.ca.ServicePlus.health.SlumpThread.logon(Unknown Source)
	com.ca.ServicePlus.health.SlumpThread.init(Unknown Source)
	com.ca.ServicePlus.health.HealthServlet.init(Unknown Source)
	javax.servlet.GenericServlet.init(GenericServlet.java:158)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.lang.Thread.run(Unknown Source)

Note The full stack trace of the root cause is available in the server logs.

Cause

JHealth.log in CATALINA_HOME\logs folder has an error like this:
03/03 07:31:05.662 [http-nio-28080-exec-6] INFO  TCP_port 169 Created standard port 2100 for SDMHostName with id 1583249465662 
03/03 07:31:05.662 [http-nio-28080-exec-6] ERROR SLUMP 519 Killing slump connection for existing HEALTH_MONITOR-SDMHostName due to loginUnconditional() 

This normally indicates that the slump already has another HealthServlet on the same node. Only 1 HealthServlet instance is allowed on a given SDM server (meaning, on a given APP server, you can have only 1 health monitor).

Resolution

Identify any Tomcat (or another Java Web App Server) engines where another instance of HealthServlet is running, Stop that, delete the HealthServlet there and restart it.

Additional Information

https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/ca-enterprise-software/business-management/ca-service-management/17-2/administering/configure-ca-service-desk-manager/configure-the-ca-sdm-environment/deploy-the-health-servlet-on-the-application-server.html  contains the steps to deploy HealthServlet.