WebSphere Commerce Developer

Troubleshooting: Developing using service-oriented architecture (SOA)

You might experience the following problems when you develop applications using SOA.

Error CMN0203E when working with Struts configuration files

You might encounter an error similar to the following when working with Struts configuration files:

000000e5 WC_SERVER     3 -673d4df:1235cd8ecc0:-7fff com.ibm.commerce.struts.BaseAction.executeView actionName=JspView
000000e5 WC_SERVER     3 -673d4df:1235cd8ecc0:-7fff com.ibm.commerce.struts.BaseAction.executeView unknown view from path info

The name of the command specified cannot be resolved to an implementation. The WebSphere Commerce server attempted to resolve a URL request to a command implementation or the command interface specified cannot be resolved to an implementation.

To resolve this issue, follow these general guidelines:
  • Ensure that the specified command has been defined in the appropriate configuration files.
  • If the command is a view command, ensure the Struts configuration for this view is defined as a forward configuration with the correct view name, store ID and device ID.
  • If the command is a controller command or URL request, ensure the Struts configuration files contain an action configuration between the URL and the command interface name that represents that URL.
  • If the command cannot be resolved based on the command interface name, update the CMDREG table to contain a mapping between the interface name and the command implementation.
  • If the changes were made to the configuration files while the server is running, the registries may need to be refreshed. Refreshing the registries can be done using the WebSphere Commerce Administration Console by navigating to Configuration > Registry and updating either the Struts or command registry.
  • If the command is a view name defined in the <global-forwards> section of the configuration file, ensure a corresponding action with the same path name and of type com.ibm.commerce.struts.BaseAction is defined in the configuration file.

Error CNTR0020E when attempting to run service

You might encounter an error similar to the following when attempting to run your service:

000000a5 RemoteExcepti E   CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "your_method" 
on bean "BeanId(WC#your_server.jar#your_service_impl, null)". Exception data: java.lang.RuntimeException: 
org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Package with uri 'http://services.your_hostname.com/
your_directory' not found. (, 1, 255)
	at com.your_hostname.commerce.your_component.facade.server.your_service_impl.
your_method(your_service_impl.java:27)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:599)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeMethod(JavaDispatcher.java:178)
	at com.ibm.ws.webservices.dispatchers.ejb.J2ee14EJBDispatcher.invokeMethod(J2ee14EJBDispatcher.java:269)
	at com.ibm.ws.webservices.engine.dispatchers.java.JavaDispatcher.invokeOperation(JavaDispatcher.java:141)
To resolve this issue, ensure that you have deployed your xml/config/your_component to your server.

Invalid column definition when running generated unit tests

You might encounter an error similar to the following when attempting to run your generated unit tests:

Invalid column definition: column "your_column" does not exist in table "your_table".
This error can occur when the Java Emitter Template (JET) pattern makes assumptions about the physical schema. It assumes certain table and column names and builds a query, and returns an error when the table and column names do not match.

To resolve this issue, update the query template files to match your specific physical schema.

Custom Business Object Mediators fail because the getRootEClass() method is not implemented to return the root physical SDO object

You might encounter an error similar to the following when working with custom Business Object Mediators:

00000033 bod           1 
com.ibm.commerce.foundation.server.command.bod.BusinessObjectDocumentProcessor
processBusinessObjectDocument(BusinessObjectDocumentType, String) catch throwable
  Current exception:
Message:
  null
Stack trace:
com.ibm.websphere.command.CommandException
	at com.ibm.commerce.foundation.server.command.bod.BusinessObjectCommandTargetImpl.executeCommand(BusinessObjectCommandTargetImpl.java:137)
	at com.ibm.websphere.command.TargetableCommandImpl.execute(TargetableCommandImpl.java:139)
	at com.ibm.websphere.command.CacheableCommandImpl.execute(CacheableCommandImpl.java:138)
	at com.ibm.commerce.foundation.server.command.bod.BusinessObjectDocumentProcessor.processBusinessObjectDocument
      (BusinessObjectDocumentProcessor.java:198)
	at com.bec.commerce.order.becorderservicemodule.facade.server.BECOrderServiceModuleFacadeImpl.getBECHoliday
      (BECOrderServiceModuleFacadeImpl.java:33)
	at com.bec.commerce.order.becorderservicemodule.facade.server.BECOrderServiceModuleServicesImpl.getBECHoliday
      (BECOrderServiceModuleServicesImpl.java:22)
To resolve this issue, update the Data Service configuration of the CustomAppProperties-Server project:
  1. Open the CustomAppPropertiesMetadata class.
  2. Implement the getRootEClass() method to return the root physical SDO object. Replace the body of the getRootEClass() method with the following snippet:
    
    return
    com.redbooks.commerce.customappproperties.facade.server.entity.datat
    ypes.impl.CustomAppPropertiesEntityPackageImpl.eINSTANCE.getCustomAp
    pPropertiesRoot();
    
  3. Find the line following line:
    
    private static final String PACKAGE_NAME = "";
    
  4. Replace it with the following line:
    
    private static final String PACKAGE_NAME =
    "com.redbooks.commerce.customappproperties.facade.server.entity.data
    types.impl.CustomAppPropertiesEntityPackageImpl";
    
  5. Save your changes and close the file.

Exception handling when working with Web services

You might encounter issues with exception handling when working with Web services.

For example, in the following scenario:

Using Web services locally from inside the EAR, complete a register and logon (MemberFacadeClient) flow. A TransactionRollBack is encountered when an exception occurs, however, the typical flow continues without an active transaction.

To resolve this issue, ensure that you can recover from transaction failures and handle errors effectively.