The API Gateway ssg service is Up, but gatewayOperatingStatus.pl with APMIA agent is showing the Operating Status as 0 (STOPPED reported as 0). The gatewayOperatingStatus.pl should be reporting as 5.
Agent is working fine for Gw 11.0Cr03 version but shows error when monitoring the new Gateway 11.1.2
When running the apmia command lines manually on Gw 11.1.2
1) ps | /opt/SecureSpan/Gateway/config/ssgconfig.sh show status | grep "Node Status =" | cut -f8 -d' '
2) cd /opt/SecureSpan/Gateway/config ; echo "" | java -jar ConfigWizard.jar show status | grep "Node Status =" | sed 's/.*Node Status = //';
3) cd /opt/SecureSpan/Gateway/config ; echo "" | $java_command -jar ConfigWizard.jar show status
shows this error , instead of "RUNNING"
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.sun.xml.bind.v2.runtime.reflect.opt.AccessorInjector.prepare(AccessorInjector.java:83)
at com.sun.xml.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:125)
at com.sun.xml.bind.v2.runtime.reflect.Accessor$GetterSetterReflection.optimize(Accessor.java:399)
at com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty.<init>(SingleElementLeafProperty.java:87)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at com.sun.xml.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:128)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:181)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:523)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:168)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:523)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:542)
at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.<init>(SingleElementNodeProperty.java:105)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at com.sun.xml.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:128)
at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:181)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:523)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:338)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:146)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1169)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:147)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:251)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:240)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:691)
at org.apache.cxf.common.jaxb.JAXBContextCache$2.run(JAXBContextCache.java:345)
at org.apache.cxf.common.jaxb.JAXBContextCache$2.run(JAXBContextCache.java:343)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
at org.apache.cxf.common.jaxb.JAXBContextCache.createContext(JAXBContextCache.java:343)
at org.apache.cxf.common.jaxb.JAXBContextCache.getCachedContextAndSchemas(JAXBContextCache.java:245)
at org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBDataBinding.java:499)
at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:358)
at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:87)
at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:469)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:693)
at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:529)
at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:262)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:199)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:103)
at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:91)
at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:158)
at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:142)
at com.l7tech.gateway.config.client.beans.NodeManagementApiFactory.a(Unknown Source)
at com.l7tech.gateway.config.client.beans.NodeManagementApiFactory.getManagementService(Unknown Source)
at com.l7tech.gateway.config.client.beans.StateConfigurationBeanProvider.a(Unknown Source)
at com.l7tech.gateway.config.client.beans.StateConfigurationBeanProvider.isValid(Unknown Source)
at com.l7tech.gateway.config.client.Main.main(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at com.l7tech.util.ApplicationLauncher.main(Unknown Source)
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @4f933fd1
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:200)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:194)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$1.run(Injector.java:177)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector$1.run(Injector.java:172)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at com.sun.xml.bind.v2.runtime.reflect.opt.Injector.<clinit>(Injector.java:172)
... 63 more
CA API Gateway 11.1.2 OpenJDK Runtime Environment Temurin-17.0.14+7
CA API Gateway 11.0 CR03, OpenJDK Runtime Environment Temurin-11.0.26+4
Layer 7 Precision Monitoring 3.4.101
Apmia versions : apim-1f48773axt284-24.7.1.4 , apim-1f48773axt283-24.5.1.5
Problem related to the new java version defaulting to stronger encapsulation implementation.
1) To mitigate the reported java.lang.ExceptionInInitializerError, the customer may consider adding the jvm option --add-opens=java.base/java.lang=ALL-UNNAMED in to the java command line in their gatewayOperatingStatus.pl under their existing APMIA APIM extension installation similar to the example below: e.g.
2) when editing the gatewayOperatingStatus.pl file , at line # 35 , it shows this syntax
my @ConfigWizard_output = `cd /opt/SecureSpan/Gateway/config ; echo "" | $java_command -jar ConfigWizard.jar show status 2>&1`;
this line must be modified and looks this way :
my @ConfigWizard_output = `cd /opt/SecureSpan/Gateway/config ; echo "" | $java_command --add-opens=java.base/java.lang=ALL-UNNAMED -jar ConfigWizard.jar show status 2>&1`;
3) The command lines to confirm the the syntax for java works fine are the following :
v1) ps | /opt/SecureSpan/Gateway/config/ssgconfig.sh show status | grep "Node Status =" | cut -f8 -d' '
v2) cd /opt/SecureSpan/Gateway/config ; echo "" | java --add-opens=java.base/java.lang=ALL-UNNAMED -jar ConfigWizard.jar show status | grep "Node Status =" | sed 's/.*Node Status = //';
v3) cd /opt/SecureSpan/Gateway/config ; echo "" | java --add-opens=java.base/java.lang=ALL-UNNAMED -jar ConfigWizard.jar show status
ref : articleNumber=280931