Gathering license metrics fails with a NoClassDefFoundError message

If the lifecycle rule for gathering license metrics fails with a NoClassDefFoundError error message, you must check the server trace file.

About this task

If the server trace file contains an entry such as the following entry, perform the task that follows.
<Trace Level="MIN">
<Time Millis="1380725218925"> 2013.10.02 10:46:58.925-04:00</Time>
<Server Format="IP">markdb.tivlab.raleigh.ibm.com</Server>
<ProductId>CTGIM</ProductId>
<Component>com.ibm.itim.messaging.mdb</Component>
<ProductInstance>markdb</ProductInstance>
<LogText><![CDATA[Caught exception handling message:
  JMSMessage class: jms_text
  JMSType:          null
  JMSDeliveryMode:  2
  JMSExpiration:    0
  JMSPriority:      6
  JMSMessageID:     ID:0b675c3fe4bad77ef5d0f8ae110a134f0000000000000001
  JMSTimestamp:     1380725218566
  JMSCorrelationID: null
  JMSDestination:   queue://itim_wf?busName=itim_bus
  JMSReplyTo:       null
  JMSRedelivered:   false
    JMSXDeliveryCount: 1
    JMSXAppID: Service Integration Bus
    JMS_IBM_System_MessageID: 20DC611C593112D9_3052074
    JMSXUserID: isimsystem
H4sIAAAAAAAAAFvzloG1uIhBJzk/Vy8zCYhLMnP1yvOLstNy8sv1UvPSM/NS9RyTSzLLMksqnfPz
SlIrSg4nJ4SoP81/ysTA7M ..., rolling back transaction.]]></LogText>
<Source FileName="com.ibm.itim.messaging.mdb.TransactedMessageListenerBean" Method="onMessage"/>
<Thread>SIBJMSRAThreadPool : 43</Thread>
<Exception><![CDATA[javax.ejb.TransactionRolledbackLocalException:  
; nested exception is: com.ibm.ws.exception.WsEJBException: 
nested exception is: java.lang.NoClassDefFoundError: com.ibm.license.metric.MetricPersistenceException
	at java.lang.J9VMInternals.verifyImpl(Native Method)
	at java.lang.J9VMInternals.verify(J9VMInternals.java:93)
	at java.lang.J9VMInternals.initialize(J9VMInternals.java:170)
	at java.lang.Class.forNameImpl(Native Method)
	at java.lang.Class.forName(Class.java:179)
	at com.ibm.itim.workflow.engine.ApplicationActivityExecutor.execute(ApplicationActivityExecutor.java:90)
	at com.ibm.itim.workflow.engine.WorkflowEngine.executeActivity(WorkflowEngine.java:2750)
	at com.ibm.itim.workflow.engine.WorkflowEngine.processMessage(WorkflowEngine.java:571)
	at com.ibm.itim.workflow.engine.ExecutionContext.processMessage(ExecutionContext.java:1044)
	at com.ibm.itim.workflow.engine.MessageRouter.onMessage(MessageRouter.java:54)
	at com.ibm.itim.messaging.mdb.MessageHandlerBean.handleMessage(MessageHandlerBean.java:134)
	at com.ibm.itim.messaging.mdb.EJSLocalStatelessenroleejb_ContainerManagedMessag_ae956b4e.handleMessage(Unknown Source)
	at com.ibm.itim.messaging.mdb.TransactedMessageListenerBean.handleMessage(TransactedMessageListenerBean.java:240)
	at com.ibm.itim.messaging.mdb.TransactedMessageListenerBean.onMessage(TransactedMessageListenerBean.java:165)
	at com.ibm.ejs.container.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.java:1164)
	at com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:843)
	at com.sun.proxy.$Proxy57.onMessage(Unknown Source)
	at com.ibm.ws.sib.api.jmsra.impl.JmsJcaEndpointInvokerImpl.invokeEndpoint(JmsJcaEndpointInvokerImpl.java:233)
	at com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:901)
	at com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSingleProcessListener.java:592)
	at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:608)
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1815)
Caused by: com.ibm.ws.exception.WsEJBException: nested exception is: 
java.lang.NoClassDefFoundError: com.ibm.license.metric.MetricPersistenceException
	at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapException(LocalExceptionMappingStrategy.java:276)
	at com.ibm.ejs.container.LocalExceptionMappingStrategy.mapCSITransactionRolledBackException
(LocalExceptionMappingStrategy.java:565)
	at com.ibm.ejs.container.EJSDeployedSupport.mapCSITransactionRolledBackException(EJSDeployedSupport.java:751)
	at com.ibm.ejs.container.EJSContainer.postInvokeRolledbackException(EJSContainer.java:5315)
	at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:5086)
	... 11 more
Caused by: java.lang.NoClassDefFoundError: com.ibm.license.metric.MetricPersistenceException
	at java.lang.J9VMInternals.verifyImpl(Native Method)
	at java.lang.J9VMInternals.verify(J9VMInternals.java:93)
	at java.lang.J9VMInternals.initialize(J9VMInternals.java:170)
	at java.lang.Class.forNameImpl(Native Method)
	at java.lang.Class.forName(Class.java:179)
	at com.ibm.itim.workflow.engine.ApplicationActivityExecutor.execute(ApplicationActivityExecutor.java:90)
	at com.ibm.itim.workflow.engine.WorkflowEngine.executeActivity(WorkflowEngine.java:2750)
	at com.ibm.itim.workflow.engine.WorkflowEngine.processMessage(WorkflowEngine.java:571)
	at com.ibm.itim.workflow.engine.ExecutionContext.processMessage(ExecutionContext.java:1044)
	at com.ibm.itim.workflow.engine.MessageRouter.onMessage(MessageRouter.java:54)
	at com.ibm.itim.messaging.mdb.MessageHandlerBean.handleMessage(MessageHandlerBean.java:134)
	... 11 more
Caused by: java.lang.ClassNotFoundException: com.ibm.license.metric.MetricPersistenceException
	at java.net.URLClassLoader.findClass(URLClassLoader.java:434)
	at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:204)
	at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:688)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:667)
	at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:650)
	at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
	at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
	at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:616)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:650)
	... 22 more
]]></Exception>
</Trace>

Procedure

  1. Log in to the administrative console of WebSphere.
  2. Expand Environment.
  3. Click Shared libraries.
  4. On the Shared Libraries page, click ITIM_LIB.
  5. On the ITIM LIB page, add ${IM_HOME}/lib/license_metric_logger_1.0.0.201303060931.jar to the Classpath field.
  6. Click OK, and then click Save to save the changes directly to the master configuration.
  7. Log out of the administrative console.
  8. Restart WebSphere for the changes to take effect.