Fraska Portal

Exploring the WebSphere Commerce world

Subscribe to this list via RSS Blog posts tagged in WebSphere Commerce
WebSphere Commerce v8, toolkit exception, ClassNotFound db2

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.

Posted by on in Store
WebSphere Commerce, ATP migration

When I started to analyze (summer 2015) the possibilities to migrate non-ATP stores to the ATP model the IBM Knowledge Center was claiming the migration was not supported. However, not supported does not mean not possible.

So, I dig it and found a "simple" way to accomplish the migration.

Now (since 2016), finally, the switch of an existing store to the ATP mode is supported again (old version of WCS had even a migration script).

In this brief article I'll report few tips about the "migration" of existing stores to the ATP inventory model.

WebSphere Commerce, the curious life of a front-end catalog request

The life begins in a random internet browser when an unaware user- browsing the Aurora shop- makes a simple request asking for details about the child laptop product. This request can be translated in a Uniform Resource Locator exactly as the following:

http://www.mywcsaurora.com/shop/en/aurora/eletronics/laptops/child-laptop

After just few milliseconds, or maybe few hours mostly depending from the performance of the Aurora shop, the URL assumes the shape of a page, the death of the request:

b2ap3_thumbnail_WCS_liferequest.png 

 

Between the request's birth and its death some many things have happened; I'll try to summarize the "typical life of a catalog request" in a WCS v7 FEP7 "world" marking just the communication "links" between the several components look after the request.

WebSphere Commerce, Performance analysis of few European stores

The performance tuning is one of the most difficult and delicate task for any professional. It could involve virtually any piece of code deployed. It's not even that easy report how a system is performing, most of all because so many variables are involved. However, today I wanted to check the performances of few Store made using WebSphere Commerce; I decided to take as reference the metrics and results provided by:

They should never be considered as the Bible. In fact, they just provide useful advices and a big picture of the performances for a common sense. In many cases, thought, not all the advices can be applied because of the same nature of the platform. However, collecting examples of how few stores perform can tell us more about the possible limit of the platform, in this case WebSphere Commerce.
In addition, although get "optimal" performances is a very personal goal which cannot be defined as any other simple requirement, in the e-commerce slowing down during the loading of a page means loose money and clients.

So, I took a set of 12 stores between big European companies which have adopted WebSphere Commerce Enterprise. Let's see how they performed ...

Posted by on in Administration
WebSphere Commerce, the SOLR extension index

One of the things I like most about the last enhancements- maybe introduced with FEP6, not sure of that- is the possibility to create an extension of the SOLR index. An extension index is, in a nutshell, an index which complements the data provided by the base index. A enlightening explanation is reported in the following IC page: Extending the WebSphere Commerce search base index schema.

According to the Info Center: "... dynamic information such as product inventory or ratings change more frequently. Therefore, it is put into a separate index, where it can be refreshed at different intervals than the base product index". That's awesome and it looks exactly the basic idea under the concept of Inventory Index (introduced with FEP6).

b2ap3_thumbnail_IC_SOLR_extension_index.png

Above is an extraction of the image reported in the IC page already mentioned before.

Using this feature we can finally think to implement re-index strategies with high frequency, pretty useful for dynamic data. The basic bricks used by the WCS team to build up this new feature are- according to my investigation- a custom Search Component (SolrSearchMultipleQueryComponent) and the possibility to make Join between different indexes.

That combination gives to the WCS implementation of SOLR an added value makes the SOLR native Join feature transparent to the developers. Let's review the main things ...

WebSphere Commerce, Review of the Search Navigation Flow

This time I prefer report this fundamental topic just with a schema I draw looking at the following IC pages:

It's the combination of the above documents; the following schema remarks the different interaction WCS runs in order to get Catalog information from SOLR.

I hope you can enjoy!

 

FIRST PART: from Request to Search Expression

SearchRequest_flow_1_20140708-081219_1.png

 

 

SECOND PART: from Expression to Search Response

SearchRequest_flow_2.png

THIRD PART: from Search Response to BOD noun

SearchRequest_flow_3.png

 

 

 

WebSphere Commerce, FEP 7, SOLR index pre-process error

Once the FEP7 installation is done and the starter store is published with some example data, the next step is the SOLR index configuration (setupSearchIndex), pre-process (di-preprocess) and build (di-buildindex).

However, during the pre-process step I faced an interesting exception. In fact, running the following command

di-preprocess.bat <WC_installfolder>\search\pre-processConfig\MC_<catalogId>\DB2

the process ended with the exception:

SEVERE: Exception message: CWFDIH0001: Data Import encountered a generic error. The error is null. , stack trace: com.ibm.commerce.foundation.dataimport.exception.DataImportSystemException: CWFDIH0001: Data Import encountered a generic error. The error is null. 
	at com.ibm.commerce.foundation.dataimport.preprocess.DataImportPreProcessorMain.processDataConfig(DataImportPreProcessorMain.java:957)
	at com.ibm.commerce.foundation.dataimport.preprocess.DataImportPreProcessorMain.execute(DataImportPreProcessorMain.java:802)
	at com.ibm.commerce.foundation.dataimport.preprocess.DataImportPreProcessorMain.main(DataImportPreProcessorMain.java:289)
Caused by: java.lang.NullPointerException
	at com.ibm.commerce.foundation.dataimport.preprocess.StaticAttributeDataPreProcessor.process(StaticAttributeDataPreProcessor.java:299)
	at com.ibm.commerce.foundation.dataimport.preprocess.DataImportPreProcessorMain.processDataConfig(DataImportPreProcessorMain.java:919)
	... 2 more
WebSphere Commerce, FEP7, Development validation issues in the Aurora starter store

Once the FEP7 is installed and new new Aurora is published you could face validation errors in the JSP of the store.

I collected few examples and reported a possible way to fix them.

WebSphere Commerce, the "dark side" of the interactions between SOLR delta index and the DataLoad - Part 2

 

This article reports another example of interaction between SOLR delta index and data load process.

In particular, If we have to introduce the delta index- in place of the full- and the data load is already set up, or we have to plan from scratch the data load process, we should keep in mind that the data load operations, the order they are executed and the delta updates recorded in the temporary delta tables (TI_DELTA_CATENTRY and TI_DELTA_CATGROUP) are strictly connected; we should not consider the data load a black box respect to the SOLR index, when we need to update the system through the delta mode. The SOLR index and the Data Load are unfortunately tied in a way we cannot think to build a loading process without knowing in which way they interact.

I report two specific cases: 

  1. delete bundles (reported in the previous article);
  2. delete sales categories;
WebSphere Commerce, Data Load and SOLR Delta Index

One of the most annoying thing with the previous version of WCS (until de v7 FEP5) was the impossibility to perform a delta build of SOLR index after a data load process also for few line changes  ... basically a wast of time and resources.

However, FEP5 has finally introduced the possibility to make it works. In fact, new mediators have been implemented to load the data load changes in the temporary index tables and than execute successfully a Delta build reindex.

To test this interesting and very useful feature I realized a specific use case with Aurora on Windows platform, WCS Toolkit Enterprise v7 FEP6, DB2 and SOLR.

The test case:

  1. Create a simple CSV file with the introduction of a new product: "Fancy Laptop"
  2. Configure the data load (not using the new mediators) to load this product
  3. Run the data load
    • test: the product does not appear in the Front End
  4. Run a DELTA rebuild of the SOLR index
    • test: the product does not appear in the Front End
  5. Run a FULL rebuild of the SOLR index
    • test: the product appears in the Front End
  6. Update data load configuration (adding the use of the new mediators and properties)
  7. Change the product's name in the CSV ("New Fancy Laptop")
  8. Run the data load
  9. Run a DELTA rebuild of the SOLR index
    • test: the product appears in the Front End

Suggested reading: Definitions of Thread, Pool, DeadLock and Hung in WebSphere Application Server 

How to investigate deadlock issues

  1. Collect javacores;
  2. Look for deadlock messages
  3. Look for threads in waiting status
  4. Look for threads owns monitor lock
  5. Compare threads and compare monitors

 

Most Popular Post

WebSphere Commerce, the SOLR extension index
Administration
Rate this blog entry:
4
WebSphere Commerce, Data Load and SOLR Delta Index
Data Load
Rate this blog entry:
0
WebSphere Commerce, FEP 7, SOLR index pre-process error
Administration
Rate this blog entry:
0

Latest Blogs

WebSphere Commerce, CommandLevelAuthorizationCache
Cache
Rate this blog entry:
0
WebSphere Commerce v8, toolkit exception, ClassNotFound db2
Administration
Rate this blog entry:
1
WebSphere Commerce, ATP migration
Store
Rate this blog entry:
0
WebSphere Commerce, the curious life of a front-end catalog request
Core
Rate this blog entry:
5
WebSphere Commerce, Performance analysis of few European stores
Performance
Rate this blog entry:
0