In RSA Identity Governance & Lifecycle, ServiceNow collectors are failing after upgrading an IBM WebSphere Application Server to 8.5.5.8 and higher. This means that the ServiceNow collectors are no longer able to collect the data from the ServiceNow endpoint.
Image description
The following error can be found in the aveksaServer.log when the ServiceNow collector fails upon testing:
11/02/2018 13:40:51.312 ERROR (SIBJMSRAThreadPool : 2) [com.aveksa.server.utils.NodeMessageBroker] Exception while getting test data from collector
com.aveksa.server.runtime.ServerException: org.apache.cxf.service.factory.ServiceConstructionException.
Caused by javax.xml.bind.JAXBException - with linked exception: [java.lang.reflect.InvocationTargetException].
Caused by java.lang.reflect.InvocationTargetException. Caused by java.lang.ClassCastException: com.aveksa.servicenow.wsdl.user.Update$JaxbAccessorF_accumulatedRoles incompatible with com.sun.xml.internal.bind.v2.runtime.reflect.Accessor
Caused By
Stack
org.apache.cxf.service.factory.ServiceConstructionException
at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:413)
at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:442)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:680)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:505)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:242)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90)
at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:117)
at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:124)
at com.aveksa.collector.servicenow.util.StubCreator.createUserStub(StubCreator.java:126)
at com.aveksa.collector.servicenow.adc.ServiceNowFujiAccountDataReader.testConnection(ServiceNowFujiAccountDataReader.java:47)
at com.aveksa.client.datacollector.collectors.accountdatacollectors.AccountDataCollector.collectData(AccountDataCollector.java:351)
at com.aveksa.client.datacollector.collectors.accountdatacollectors.AccountDataCollector.collect(AccountDataCollector.java:302) Caused by: javax.xml.bind.JAXBException - with linked exception: [java.lang.reflect.InvocationTargetException]
at org.apache.cxf.jaxb.JAXBUtils.createRIContext(JAXBUtils.java:577)
at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:410)
... 25 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
at java.lang.reflect.Method.invoke(Method.java:620)
at org.apache.cxf.jaxb.JAXBUtils.createRIContext(JAXBUtils.java:575)
... 26 more
Caused by: java.lang.ClassCastException: com.aveksa.servicenow.wsdl.user.Update$JaxbAccessorF_accumulatedRoles incompatible with com.sun.xml.internal.bind.v2.runtime.reflect.Accessor
at com.sun.xml.internal.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.instanciate(OptimizedAccessorFactory.java:197)
at com.sun.xml.internal.bind.v2.runtime.reflect.opt.OptimizedAccessorFactory.get(OptimizedAccessorFactory.java:189)
at com.sun.xml.internal.bind.v2.runtime.reflect.Accessor$FieldReflection.optimize(Accessor.java:279)
at com.sun.xml.internal.bind.v2.runtime.property.SingleElementLeafProperty.<init>(SingleElementLeafProperty.java:85)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:86)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:58)
at java.lang.reflect.Constructor.newInstance(Constructor.java:542)
at com.sun.xml.internal.bind.v2.runtime.property.PropertyFactory.create(PropertyFactory.java:126)
at com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.<init>(ClassBeanInfoImpl.java:179)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getOrCreate(JAXBContextImpl.java:498)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:315)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:138)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1140)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:143)
... 31 more
End Stack
at com.aveksa.server.core.DataCollector$TestDataCollectionResult.getBinaryData(DataCollector.java:897)
at com.aveksa.server.core.DataCollector.getTestData(DataCollector.java:684)
at com.aveksa.server.core.DataCollector.getTestDataString(DataCollector.java:689)
at com.aveksa.server.utils.SONDataRequestHandler.handleCollectorTest(SONDataRequestHandler.java:102)
at com.aveksa.server.utils.SONDataRequestHandler.notifyMessage(SONDataRequestHandler.java:50)
at com.aveksa.server.message.MessageSubscriberProvider.distributeMessage(MessageSubscriberProvider.java:78)
at com.aveksa.server.message.SubscriberMDB.onMessage(SubscriberMDB.java:77)
at com.ibm.ejs.container.WASMessageEndpointHandler.invokeJMSMethod(WASMessageEndpointHandler.java:138)
at com.ibm.ws.ejbcontainer.mdb.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.java:1146)
at com.ibm.ws.ejbcontainer.mdb.MessageEndpointHandler.invoke(MessageEndpointHandler.java:844)
at com.sun.proxy.$Proxy28.onMessage(Unknown Source)
at com.ibm.ws.sib.api.jmsra.impl.JmsJcaEndpointInvokerImpl.invokeEndpoint(JmsJcaEndpointInvokerImpl.java:258)
at com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:919)
at com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSingleProcessListener.java:597)
at com.ibm.ejs.j2c.work.WorkProxy$RunWork.run(WorkProxy.java:281)
at java.security.AccessController.doPrivileged(AccessController.java:422)
at javax.security.auth.Subject.doAs(Subject.java:494)
at com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:133)
at com.ibm.ejs.j2c.work.WorkProxy$RunWork.run(WorkProxy.java:284)
at java.security.AccessController.doPrivileged(AccessController.java:396)
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:65)
at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:666)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1892)
For WebSphere, the aveksaServer.log may be found in a directory similar to the following, (where the specific node name would be different) /home/oracle/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/vm-support-11Node01Cell/aveksa.ear/aveksa.war/log.
There is a missing required JVM argument.
For IBM WebSphere Application Server 8.5.5.8 and higher, we have to add a new JVM argument below:
-Djavax.xml.bind.JAXBContext=com.sun.xml.internal.bind.v2.ContextFactory
The argument is shown below:
Image description
Use the following steps to add the new JVM argument in IBM WebSphere Application Server 8.5.5.8 and higher:
- Logon to the IBM WebSphere Admin console. The admin URL will be <host-name>:9060/ibm/console with the valid credentials.
- Go to Servers > Server Types > WebSphere Application Servers > server1.
- On the right pane, expand Java Process and Management and click Process Definition.
- Under Additional Properties, click Java Virtual Machine.
- Scroll down to find the Generic JVM Arguments textbox and append the following values to the existing string.
-Djavax.xml.bind.JAXBContext=com.sun.xml.internal.bind.v2.ContextFactory
- Click Apply and then click Save.
- Login to RSA Identity Governance & Lifecycle's WebSphere machine using SSH client such as PuTTy.
- Run the following commands:
- Stop AFX:
/home/oracle/AFX/afx stop
- Stop the WebSphere Application Server:
/path/to/websphere/AppServer/bin/stopServer.sh server1
- Start the WebSphere Application Server:
/path/to/websphere/AppServer/bin/startServer.sh server1
- Start FX:
/home/oracle/AFX/afx start
You will also need to add the certificate chain in JVM of IBM WebSphere. To add the certificates in the JVM for IBM Websphere, refer to the Steps mentioned in the RSA Identity Governance and Lifecycle ServiceNow Application Guide.