Sunday, July 27, 2014

Rest service handlers Feature pack 6 vs 7

Representational State Transfer (REST) is a lightweight framework for designing applications that use HTTP to make calls. REST uses HTTP to perform the Create, Read, Update, and Delete (CRUD) operations between client and server. Applications interact with the services using HTTP, POST, PUT, GET, and DELETE operations.
WebSphere Commerce uses Representational State Transfer (REST) services to provide a framework that can be used to develop RESTful applications on several platforms. These platforms can include Web, mobile, kiosks, and social applications. This gives a lot of flexibility and allows commerce applications to create their own front end.

Rest handlers in feature pack 6 out of the box:

com.ibm.commerce.marketing.rest.resources.MarketingSpotData
com.ibm.commerce.giftcenter.rest.resources.GiftList
com.ibm.commerce.rest.inventory.handler.InventoryHandler
com.ibm.commerce.rest.marketing.handler.ESpotDataHandler
com.ibm.commerce.rest.marketing.handler.EventHandler
com.ibm.commerce.rest.member.handler.GuestIdentityHandler
com.ibm.commerce.rest.member.handler.LoginIdentityHandler
com.ibm.commerce.rest.member.handler.LTPAIdentityHandler
com.ibm.commerce.rest.member.handler.PersonContactHandler
com.ibm.commerce.rest.member.handler.UserContextHandler
com.ibm.commerce.rest.member.handler.PersonHandler
com.ibm.commerce.rest.member.handler.PreviewTokenHandler
com.ibm.commerce.rest.member.handler.PersonCheckoutProfileHandler
com.ibm.commerce.rest.order.handler.CartHandler
com.ibm.commerce.rest.order.handler.OrderHandler
com.ibm.commerce.rest.order.handler.PaymentInstructionHandler
com.ibm.commerce.rest.order.handler.ShippingInfoHandler
com.ibm.commerce.rest.store.handler.GeoNodeHandler
com.ibm.commerce.rest.store.handler.StoreHandler
com.ibm.commerce.rest.store.handler.StoreLocatorHandler
com.ibm.commerce.rest.search.handler.CategoryViewHandler
com.ibm.commerce.rest.search.handler.ProductViewHandler
com.ibm.commerce.rest.wishlist.handler.WishlistHandler

Rest handlers in feature pack 7 out of the box: In feature pack 7:
 REST services help facilitate the invocation of classic controller commands and the activation of data beans. They aim to provide a framework that is easy to learn and customize. The framework lets you create custom REST resource handlers that invoke controller commands to perform add, update and delete operations, or activate data beans to retrieve data

com.ibm.commerce.marketing.rest.resources.MarketingSpotData
com.ibm.commerce.giftcenter.rest.resources.GiftList
com.ibm.commerce.rest.inventory.handler.InventoryHandler
com.ibm.commerce.rest.marketing.handler.ESpotDataHandler
com.ibm.commerce.rest.marketing.handler.EventHandler
com.ibm.commerce.rest.marketing.handler.PromotionHandler
com.ibm.commerce.rest.marketing.handler.AssociatedPromotionHandler
com.ibm.commerce.rest.member.handler.GuestIdentityHandler
com.ibm.commerce.rest.member.handler.LoginIdentityHandler
com.ibm.commerce.rest.member.handler.LTPAIdentityHandler
com.ibm.commerce.rest.member.handler.PersonContactHandler
com.ibm.commerce.rest.member.handler.UserContextHandler
com.ibm.commerce.rest.member.handler.PersonHandler
com.ibm.commerce.rest.member.handler.PreviewTokenHandler
com.ibm.commerce.rest.member.handler.PersonCheckoutProfileHandler
com.ibm.commerce.rest.order.handler.CartHandler
com.ibm.commerce.rest.order.handler.OrderHandler
com.ibm.commerce.rest.order.handler.PaymentInstructionHandler
com.ibm.commerce.rest.order.handler.AssignedCouponHandler
com.ibm.commerce.rest.order.handler.AssignedPromotionCodeHandler
com.ibm.commerce.rest.order.handler.ShippingInfoHandler
com.ibm.commerce.rest.store.handler.GeoNodeHandler
com.ibm.commerce.rest.store.handler.StoreHandler
com.ibm.commerce.rest.store.handler.StoreLocatorHandler
com.ibm.commerce.rest.search.handler.CategoryViewHandler
com.ibm.commerce.rest.search.handler.ProductViewHandler
com.ibm.commerce.rest.wishlist.handler.WishlistHandler
com.ibm.commerce.rest.coupon.handler.CouponHandler
com.ibm.commerce.rest.marketing.handler.SegmentHandler
com.ibm.commerce.rest.marketing.handler.SpotHandler
com.ibm.commerce.rest.price.handler.PriceHandler


Reference: http://www-01.ibm.com/support/knowledgecenter/SSZLC2_7.0.0/com.ibm.commerce.webservices.doc/concepts/cwvrest.htm?lang=en

Attachments | Out of the box are not crawled | enable searching

Once attachments are created in CMC and assigned to respective products, schedule job ScheduledContentManagedFileEARUpdate picks them up and moves them into Stores\\attachments folder. By default this job could be configured to run for 30 minutes so on dev, you will need to configure to run quicker to test.

Out of the box attachments are not picked and hence you pick up the static file below StaticContentSitemap.jsp and add the block below to read all attachments to be crawled

-----------------------------------------------------------------------------------------------------------
<wcbase:useBean id="attachmentBean" classname="com.ibm.commerce.catalog.beans.AttachmentDataBean" scope="page">
<c:set value="${langId}" target="${attachmentBean}" property="languageId"/>
</wcbase:useBean>
<c:forEach var="attachmentAssetDataBean" items="${attachmentBean.attachmentAssets}">
<c:set var="tempURL" value="/${attachmentAssetDataBean.directory}/${attachmentAssetDataBean.attachmentAssetPath}"/>
<c:set var="attachmentURL" value="${fn:replace(tempURL, ' ', '%20')}"/>
<url crawlurl="${attachmentURL}" indexurl="${attachmentURL}">
</c:forEach>
-----------------------------------------------------------------------------------------------------------

You can run the build index and Crawler by running this command: from \bin

di-buildindex.bat -masterCatalogId 10001 -webcontentDelete true

crawler.bat -cfg C:\WCDE_ENT70\search\solr\home\droidConfig.xml



Configure the crawler file for the store : droidConfig.xml
-----------------------------------------------------------------------------------------------------------
<variables> 
<var name="hostname">localhost</var> 
<var name="storePathDirecttory">/WCDE_ENT70/wasprofile/temp/localhost/server1/WC/EliteStorefrontAssetStore</var> 
<var name="langId">-1</var> 
<var name="storeId">10151</var> 
<var name="catalogId">10001</var> 
<var name="language">en</var> 
<var name="localename">en_US</var>
<var name="filterDir">/WCDE_ENT70/search/solr/home</var> 
<var name="port">80</var> 
</variables>
-----------------------------------------------------------------------------------------------------------

Attribute Sequencing | Storefront pages for attribute name and value

Dataloader process should update CATENTRYATTR.SEQUENCE for sequencing attribute names in store front pages and ATTRVALDESC.SEQUENCE for descriptive attribute values.

Attribute name ordering:

ATTR.SEQUENCE is only used for organizing attributes in CMC



Storefront pages use CATENTRYATTR.SEQUENCE for attribute name sequencing

The sequence which you see in storefront are with respect to CATENTRYATTR.SEQUENCE because attributes are associated with specific product


Attribute value Ordering:

For both defining and descriptive value ordering, ATTRVALDESC.SEQUENCE is used.

Friday, July 18, 2014

Error 404: SRVE0190E: File not found: /stores/servlet/home

This could happen due to multiple reasons but a couple of reasons that I have seen prominently and please free to add in your comments.

Debugging 1st approach: WebServer configuration
1.Goto access.log in C:\IBM\HTTPServer\logs  and you will see 127.0.0.1 - -"GET /shop/home HTTP/1.1" 404 60
2. Goto C:\IBM\HTTPServer\conf and make sure the httpd.conf and make sure toolkit is pointing to correct directory.
3. Before you make any modifications, do take a backup of httpd.conf

Debugging 2nd approach:

1. Make sure the WC->properties->Java EE Module dependencies has Stores.war checked.


Tuesday, July 15, 2014

Deploying WebsphereCommerceServerExtensionsData --EJBDeployer had Errors


This happens due to a bug in RAD and RAD goes into an inconsistent state. I would try clean build and close data project but even if this does not work. If you have a working data project copy , try to replace that with the data project from workspace and try doing java EE->prepare deployment.