During my first experiments with my new toolkit based on WCS v8 mod pack1, I almost instantly faced an exception just after the startup of the test server:

[4/18/16 15:07:06:039 CEST] 00000216 BusinessObjec W com.ibm.commerce.foundation.server.command.bod.BusinessObjectDocumentProcessor static com.ibm.db2.jcc.am.SqlDataException
                                 java.lang.ClassNotFoundException: com.ibm.db2.jcc.am.SqlDataException
	at java.lang.Class.forNameImpl(Native Method)
	at java.lang.Class.forName(Class.java:256)
	at com.ibm.commerce.foundation.server.command.bod.BusinessObjectDocumentProcessor.<clinit>(BusinessObjectDocumentProcessor.java:141)
	at java.lang.J9VMInternals.initializeImpl(Native Method)
	at java.lang.J9VMInternals.initialize(J9VMInternals.java:235)
	at com.ibm.commerce.marketing.facade.server.MarketingFacadeImpl.processMarketingTrigger(MarketingFacadeImpl.java:107)
	at com.ibm.commerce.marketing.facade.server.EJSLocalStatelessMarketing_0e493592.processMarketingTrigger(EJSLocalStatelessMarketing_0e493592.java:233)
	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 com.ibm.commerce.foundation.internal.client.services.invocation.impl.LocalEJBInvocationBindingImpl.invoke(LocalEJBInvocationBindingImpl.java:211)
	at com.ibm.commerce.foundation.internal.client.services.invocation.InvocationService.invoke(InvocationService.java:113)
	at com.ibm.commerce.foundation.client.facade.bod.AbstractBusinessObjectDocumentFacadeClient.internalSendBusinessObjectDocument(AbstractBusinessObjectDocumentFacadeClient.java:813)
	at com.ibm.commerce.foundation.client.facade.bod.AbstractBusinessObjectDocumentFacadeClient.sendBusinessObjectDocument(AbstractBusinessObjectDocumentFacadeClient.java:529)
	at com.ibm.commerce.marketing.facade.client.AbstractMarketingFacadeClient.processMarketingTrigger(AbstractMarketingFacadeClient.java:487)
	at com.ibm.commerce.marketing.facade.client.MarketingFacadeClient.processMarketingTrigger(MarketingFacadeClient.java:707)
	at com.ibm.commerce.marketing.facade.client.MarketingFacadeClient.processMarketingTrigger(MarketingFacadeClient.java:811)
	at com.ibm.commerce.marketing.internal.runtime.engine.SaveMarketingStatisticsCmdImpl.performExecute(SaveMarketingStatisticsCmdImpl.java:108)
	at com.ibm.commerce.command.ECCommandTarget.executeCommand(ECCommandTarget.java:157)
	at com.ibm.websphere.command.TargetableCommandImpl.execute(TargetableCommandImpl.java:139)
	at com.ibm.websphere.command.CacheableCommandImpl.execute(CacheableCommandImpl.java:139)
	at com.ibm.commerce.command.MeasuredCacheableCommandImpl.execute(MeasuredCacheableCommandImpl.java:68)
	at com.ibm.commerce.command.AbstractECTargetableCommand.execute(AbstractECTargetableCommand.java:199)
	at com.ibm.commerce.component.BaseComponentImpl.executeCommand(BaseComponentImpl.java:202)
	at com.ibm.commerce.component.WebAdapterComponentImpl.executeCommand(WebAdapterComponentImpl.java:46)
	at com.ibm.commerce.component.objimpl.WebAdapterServiceBeanBase.executeCommand(WebAdapterServiceBeanBase.java:58)
	at com.ibm.commerce.component.objects.EJSLocalStatelessWebAdapterService_ce749a4a.executeCommand(EJSLocalStatelessWebAdapterService_ce749a4a.java:31)
	at com.ibm.commerce.component.objects.WebAdapterServiceAccessBean.executeCommand(WebAdapterServiceAccessBean.java:160)
	at com.ibm.commerce.scheduler.SchedulerJob.process(SchedulerJob.java:562)
	at com.ibm.commerce.scheduler.SchedulerSecurityPriviledgedAction.run(SchedulerSecurityPriviledgedAction.java:59)
	at com.ibm.commerce.scheduler.SchedulerJob.run(SchedulerJob.java:1115)
	at com.ibm.commerce.threadmanagement.internal.BaseWork.run(BaseWork.java:139)
	at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1178)
	at com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:199)
	at com.ibm.ws.asynchbeans.CJWorkItemImpl.run(CJWorkItemImpl.java:236)
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1881)

 Investigating a bit I found a possible solution.

Target:

WebSphere Commerce developers & sys admins

Environment:

  • WebSphere Commerce Developer v 8 Mod Pack 1
  • WebSphere Application Server 8.5.5
  • Derby
  • SOLR 4.10.0 (local)

The exception

The exception seems to derive from the class: com.ibm.commerce.foundation.server.command.bod.BusinessObjectDocumentProcessor

In particular, this class makes a check about the existing masked exceptions; the list of values of the masked exceptions is contained in the following file:
N:\IBM\WCDE80\workspace\WC\xml\config\com.ibm.commerce.foundation\wc-component.xml

<_config:configgrouping name="BusinessObjectDocumentProcessor">
    <_config:property name="maskedExceptionClassList" value="java.sql.SQLException,com.ibm.db2.jcc.am.SqlDataException,com.ibm.commerce.foundation.server.services.dataaccess.exception.QueryServiceSystemException"/>
</_config:configgrouping>

The above code contains- in the maskedExceptionClassList property- the class com.ibm.db2.jcc.am.SqlDataException.
However, the system is not using DB2 but Derby, so it's pretty normal an exception is thrown and the class is not found.

 

To fix the issue

 

1) edit the file
N:\IBM\WCDE80\workspace\WC\xml\config\com.ibm.commerce.foundation\wc-component.xml
and change the property maskedExceptionClassList with the following value:
java.sql.SQLException,com.ibm.commerce.foundation.server.services.dataaccess.exception.QueryServiceSystemException


2) restart the test server