Salesforce

PASOE instance fails to start after enabling JMXLifecycle

« Go Back

Information

 
TitlePASOE instance fails to start after enabling JMXLifecycle
URL NamePASOE-instance-fails-to-start-after-enabling-JMXLifecycle
Article Number000228903
EnvironmentProduct: OpenEdge
Version: 11.7.20, 12.2.8 and later, 12.6 and later
OS: All supported platforms
Other: PASOE
Question/Problem Description
A PASOE instance fails to start after enabling the JMXLifecycle feature.

The catalina.<date>.log file contains the following error:

2023-02-06T12:31:13.583+01:00 ERROR [main] o.a.tomcat.util.digester.Digester.startElement - Begin event threw exception
java.lang.ClassNotFoundException: org.apache.catalina.mbeans.JmxRemoteLifecycleListener
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:102)
    at org.apache.catalina.startup.ListenerCreateRule.begin(ListenerCreateRule.java:68)
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1277)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:510)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1377)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2710)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
    at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1535)
    at org.apache.catalina.startup.Catalina.parseServerXml(Catalina.java:617)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:709)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:746)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:305)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)
2023-02-06T12:31:13.589+01:00 WARN  [main] org.apache.catalina.startup.Catalina.parseServerXml - Unable to load server configuration from [<PASOE Instance Path>\conf\server.xml]
org.xml.sax.SAXParseException: Error at line [69] column [64]: [org.apache.catalina.mbeans.JmxRemoteLifecycleListener]
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1966)
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1998)
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1280)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:510)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1377)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2710)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
    at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216)
    at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1535)
    at org.apache.catalina.startup.Catalina.parseServerXml(Catalina.java:617)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:709)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:746)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:305)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:475)
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.mbeans.JmxRemoteLifecycleListener
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:102)
    at org.apache.catalina.startup.ListenerCreateRule.begin(ListenerCreateRule.java:68)
    at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1277)
    ... 21 common frames omitted
2023-02-06T12:31:13.591+01:00 ERROR [main] org.apache.catalina.startup.Catalina.start - Cannot start server, server instance is not configured


 
Steps to Reproduce
Clarifying Information
The JMXLifecycle feature is enabled in one of the following ways:
  • Through the tcman / pasman command. For example: <pas instance>\bin\tcman.bat feature JMXLifecycle=on
  • By manually uncommenting the relevant section in the <pas instance>\conf\server.xml file. For example:
  <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
            rmiRegistryPortPlatform="${psc.as.jmxregistry.port}" 
            rmiServerPortPlatform="${psc.as.jmxserver.port}" />  
  • Within OpenEdge Management (OEM) / OpenEdge Explorer (OEE) through the JMX page of the PASOE instance. For example:
image.png
Error Messagejava.lang.ClassNotFoundException: org.apache.catalina.mbeans.JmxRemoteLifecycleListener

[main] org.apache.catalina.startup.Catalina.parseServerXml - Unable to load server configuration from [<PASOE Instance Path>\conf\server.xml]
org.xml.sax.SAXParseException: Error at line [69] column [64]: [org.apache.catalina.mbeans.JmxRemoteLifecycleListener]
Defect NumberOCTA-44310, OCTA-52221, OCTA-66784
Enhancement Number
Cause
The JmxRemoteLifecycleListener class has been removed in Tomcat 8.5.75 and Tomcat 9.0.57 as the features it provides are now available in the remote JMX capability included with Java.

The Tomcat version used by PASOE has been upgraded in OpenEdge 11.7.20, 12.2.8, 12.6 and later releases. So the latest OpenEdge releases do not support the JmxRemoteLifecycleListener class anymore.
Resolution
Disable the JMXLifecycle feature and follow the steps from the following KB article to enable JMX:
How to remotely monitor PASOE with JConsole
Workaround
Notes
Keyword Phrase
Last Modified Date9/26/2024 8:27 AM

Powered by