WebSphere Integration Developer: a correction on Filter inputs in XML Transformations

When developing XML Transform in WebSphere Integration Developer (WID), you provide conditions on either “Condition” or “Filter Inputs” tabs of the transform properties. Condition tab usage is straightforward: you enter an XPath expression that is evaluated at runtime to a true or false. Filter Inputs, however, plays a trick on you. Help text above the tab indicates that you should enter a condition and the transform would apply to the input elements for which the condition evaluates to true.

But if you enter a condition that evaluates to boolean, a runtime error results, claiming this:

Can not convert #BOOLEAN to a NodeList!

This is your clue that help prompt and documentation are incorrect and you need to enter an XPath that evaluates to the list of nodes for which you want the transform to apply, and not the condition. Quick inspection of the generated XSLT conforms this finding: the value you enter into “Filter Inputs” is inserted directly into the select attribute of xsl:for-each element, e.g. if you enter Filter Inputs expression "$Status[Lev:Level='Error' or Lev:Level='Warn']", XSLT will contain this:

<xsl:for-each select="$Status[Lev:Level='Error' or Lev:Level='Warn']">
<xsl:copy-of select="."/>
</xsl:for-each>

Advertisements

WPS: Multiple database lookup primitives in a mediation flow = XA

In IBM WebSphere Process Server, mediation flow is one of the two most used high-level building blocks (Process is another). And one of standard building blocks of a mediation flow is a Database Lookup primitive. It enriches your message by referencing a user-supplied database table.

One interesting fact is that if your mediation flow navigates through more then one database lookup against different databases, you must use XA data sources. The reason for this is that mediation flow runs in a single implicit transaction. When Database Lookup primitive executes, it first attempts to obtain a connection from configured data source. Transaction Manager attempts to enlist the data source into transaction. If this implicit transaction already has a resource (data source) enlisted, a different resource may only be enlisted if it supports XA. If it does not, your Database Lookup will fail right on this spot, unable to obtain a connection from data source. It is a little puzzling because you do not attempt to drive a transaction against the data source – you just want to perform a read-only lookup, but that’s how the primitive is coded.

Just to be clear, I’m talking this specific scenario: your mediation flow actually navigates through 2 database lookups that use different data sources – then you must use XA. If you have multiple Database Lookups in different branches of the flow that are not reached in the same invocation – no problem.

WID tips: limit amount of Java code in snippets

When you need to add custom functionality to an application you develop in WebSphere Integration Developer or extend its capabilities, you use Java. There are several ways to do this and at least one is available in each context:

  • on the module/assembly diagram level – create a Java component
  • inside a mediation flow – write your Java in a Custom Mediation primitive
  • in a BPEL process – use Snippet activity
  • in a BO map – use Custom transform

Best practice: only trivial code should go into Snippets and Custom Transform. Refactor more complex code into a utility Java class.

To promote code clarity and simplify maintenance, troubleshooting and debugging, I strongly urge limiting the amount of code you put in Custom Primitive, Snippet and Custom Transform to. Only trivial code should go there. Please do not implement complex or business-relevant logic there. These Java usages are not easily accessible (hidden behind layers of components), difficult to code-review and more cumbersome to step through when using a debugger. If you need to execute something more complex, refactor the logic into a separate utility class and limit your snippet (or custom transform) to a simple method call on the utility class. This approach adheres to many architectural best practices: separation of concerns (Information Expert pattern), promotion of reusability. Code quality improves and your application is easier to understand and maintain.

WPS: Querying human tasks with multiple custom properties

Suppose you have a human task application running on WebSphere Process Server. Your application requires creating, manipulating and assigning tasks based on certain criteria that are not exposed by HTM interface. Naturally, you add a custom property to your tasks to hold this “side” information. This process is described in this developerWorks article.

As an example, your query might look like this:
resultSet = htm.query(
"DISTINCT TASK.TKIID, TASK.NAME, TASK_CPROP.NAME",
"TASK_CPROP.NAME = 'branch'", …)

But what if you have more then 1 custom property? This Infocenter article gives an example where clause:
"TASK_CPROP1.NAME = 'prop1' AND " TASK_CPROP1.STRING_VALUE = 'v1' AND
TASK_CPROP2.NAME = 'prop2' AND " TASK_CPROP2.STRING_VALUE = 'v2'"

When do you need to add these ordinal numbers (like 1 and 2 in the example above) to the TASK_CPROP table name? Does the number has anything to do with the order in which the properties are defined on the task?

Rule:

  1. If you only use a single custom property in a query, reference TASK_CPROP table without ordinal number.
    You should not use TASK_CPROP1, TASK_CPROP2 or 3,4,5…9 in this case.
  2. If you use more then one custom property in a query, differentiate between them by adding a number to TASK_CPROP table name. You can pick any numbers you want, but be consistent within each query: use TASK_CPROP1 for one parameter, TASK_CPROP2 for another and so on.
    The number has no relationship with the order in which parameters are defined on the task.

    For example, your task may have 3 properties defined in the following order: propcount, branch, costCenter.

    Task with 3 properties: propcount, branch, costCenter

    And the following query referencing “branch” as #1 and “costCenter” as #2 will be perfectly valid:
    htm.query("DISTINCT TASK.TKIID, TASK.NAME, TASK_CPROP1.STRING_VALUE, TASK_CPROP2.STRING_VALUE",
    "TASK_CPROP1.NAME='branch' and TASK.CPROP2.NAME='costCenter'", ...)

Explanation:
Underlying data for custom properties of human tasks is stored in database table TASK_INST_PROP_T and exposed through a database view TASK_CPROP. Both the table and the view are agnostic of property number. The view is documented here. The view contains only 4 columns: TKIID, NAME, DATA_TYPE and STRING_VALUE. There is only one table/view for custom properties and it has no room to store property’s ordinal number. TASK_CPROP1, TASK_CPROP2 and so on are aliases created in the FROM clause of the query, which is auto-generated behind the scenes based on SELECT and WHERE clauses. So this query:
htm.query("DISTINCT TASK.TKIID, TASK.NAME, TASK_CPROP1.STRING_VALUE, TASK_CPROP2.STRING_VALUE",
"TASK_CPROP1.NAME='branch' and TASK.CPROP2.NAME='costCenter'", ...)

may be translated into SQL resembling this (my reconstruction, not actual SQL from WPS product):

SELECT
DISTINCT TASK.TKIID, TASK.NAME, TASK_CPROP1.STRING_VALUE, TASK_CPROP2.STRING_VALUE
FROM
TASK INNER JOIN TASK_CPROP as TASK_CPROP1 ON TASK.TKIID=TASK_CPROP1.TKIID
INNER JOIN TASK_CPROP as TASK_CPROP2 ON TASK.TKIID=TASK_CPROP2.TKIID
WHERE
TASK_CPROP1.NAME='branch'
and TASK.CPROP2.NAME='costCenter'

Same logic applies, mutatis mutandis, to task templates (TASK_TEMPL_CPROP view) and escalations (ESCALATION_CPROP view)

WESB listening on multiple IDoc basic types from SAP

IBM redbook named “Connect WebSphereService-Oriented Middleware to SAP” covers steps necessary for receiving IDocs from SAP using WebSphere adapter. But what if your ESB solution requires receiving and processing several IDocs basic types, such as Orders02 and Invoice01? Do you simply create another adapter module? That’s correct, but you will also need to make the following changes.

1) Each mediation modules should listen on a single IDoc basic type. Configure each module to use separate RFC Program ID. If you neglect this, SAP will have no way of determining which module to send each IDoc to and IDocs will be routed to random modules. This is certainly not the behavior you desired

2) Configure destinations in SAP for these RFC Program IDs. Please note that additional configuration is required on SAP side. Use the redbook as your guide

3) Each of the mediation modules you created in step 1 will use SAP adapter in inbound mode. Adapter should be deployed with the module.

Practitioner’s note: I had trouble getting this configuration to work correctly when SAP adapter is also installed at node level (“deployed on the server”) in WESB 6.1.2. SystemOut log entries showed that each IDoc was processed by correct adapter instance (deployed with module), but adapter behaved as if it were server-wide instance. It was unable to find method binding to process inbound IDocs in many cases. It is probably a bug, but you don’t have to wait for a fix. Simple workaround is not to mix up server- and module-packaged SAP adapter instances. In other words, when you need to listen on multiple IDoc basic types from SAP, DO NOT deploy adapter on the server level.

WID tips: Use Unicode in SAP Connection

Here’s another error scenario in integration development using WID.
Problem: You set up your WebSphere ESB, Process Server or WID Test Environment to communicate with SAP using WebSphere adapter for SAP software. You prepare connection on SAP side, enter all connectivity parameters, but when you actually attempt to send or receive data, connection fails. You receive an interesting error message referring to a server function, but function name appears to be garbage:
JCO.Server could not find server function '剆䍟偉乇'
Solution: You forgot to configure SAP connection to use Unicode. This is how your connection is configured (WRONG):

WRONG

WRONG

Just change connection type to Unicode (RIGHT):

RIGHT

RIGHT

JCO library underpinning the adapter requires use of Unicode connection.

If you want to learn more about using SAP adapter, this developerWorks article is very hepful.

WID tips 1: the magic of Clorox

In the coming days, I will share a series of tips on working with WebSphere Integration Developer, IBM’s IDE for Business Integration and SOA targeting WebSphere Process Server and it’s little sibling, WebSphere ESB. These are mostly simple items that that cost me some time and aggravation. Hopefully knowing the answers will save somebody else’s time.

Tip 1: Make it clean.

When developing SCA modules in WID, I occasionally run into mild but annoying stability issue. A seemingly innocuous change, usually in an Export or Import, breaks the module.That’s when you start seeing MDB or missing resource errors in Test Environment. Exported EAR file would not install because of resource errors. There is a simple and effective remedy for this situation: clean the module and all nested projects using Project -> Clean. For example, if your SCA module is called MessageReceiver, you’d clean projects MessageReceiver, MessageReceiverApp, MessageReceiverEJB (and MessageReceiverWeb if it exists):

Clean Projects

Clean Projects

This cleaning helps for problems with MDBs that look like this:

[10/23/08 13:52:59:924 EDT] 0000000a SystemErr R Caused by: com.ibm.ws.exception.RuntimeWarning: com.ibm.ejs.container.ContainerException: Bean class could not be found or loaded; nested exception is:
com.ibm.ejs.container.ContainerException: MDB export.SAPInboundInterfaceListenerImpl must implement interface javax.jms.MessageListener
at com.ibm.ws.runtime.component.EJBContainerImpl.processBean(EJBContainerImpl.java:1836)
at com.ibm.ws.runtime.component.EJBContainerImpl.install(EJBContainerImpl.java:2860)
at com.ibm.ws.runtime.component.EJBContainerImpl.start(EJBContainerImpl.java:3720)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1303)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1138)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:569)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:817)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:949)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2122)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
Caused by: com.ibm.ejs.container.ContainerException: Bean class could not be found or loaded; nested exception is:
com.ibm.ejs.container.ContainerException: MDB export.SAPInboundInterfaceListenerImpl must implement interface javax.jms.MessageListener
at com.ibm.ejs.container.BeanMetaData.completeInitialization(BeanMetaData.java:2297)
at com.ibm.ws.runtime.component.EJBContainerImpl.createBeanMetaData(EJBContainerImpl.java:2001)
at com.ibm.ws.runtime.component.EJBContainerImpl.processBean(EJBContainerImpl.java:1807)
... 10 more
Caused by: com.ibm.ejs.container.ContainerException: MDB export.SAPInboundInterfaceListenerImpl must implement interface javax.jms.MessageListener
at com.ibm.ejs.container.BeanMetaData.completeInitialization(BeanMetaData.java:1761)
... 12 more

… and for resource reference problems that look like this:

[10/13/08 17:26:01:009 EDT] 00000042 ExceptionUtil E CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "getResource" on bean "BeanId(SAP_DeliveriesFromSAPApp#SAP_DeliveriesFromSAPEJB.jar#Module, null)". Exception data: javax.naming.NameNotFoundException: Name comp/env/sca not found in context "java:".
at com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1767)
at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1083)
at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:991)
at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1263)
at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:384)
at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:204)
at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:144)
at javax.naming.InitialContext.lookup(InitialContext.java:363)
at com.ibm.ws.sca.internal.ejb.util.EJBLocator$JndiLocator.locate(EJBLocator.java:464)
at com.ibm.ws.sca.internal.ejb.util.EJBLocator.locate(EJBLocator.java:442)
at com.ibm.ws.sca.internal.ejb.util.JndiAdapter.(JndiAdapter.java:44)
at com.ibm.ws.sca.internal.ejb.util.JndiAdapterFactory.createAdapter(JndiAdapterFactory.java:39)
at org.eclipse.emf.common.notify.impl.AdapterFactoryImpl.adaptNew(AdapterFactoryImpl.java:112)
at org.eclipse.emf.common.notify.impl.AdapterFactoryImpl.adapt(AdapterFactoryImpl.java:98)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.getResource(ModuleSessionBean.java:232)
at com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.getResource(EJSLocalStatelessModule_43132892.java:437)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ws.sca.internal.scdl.impl.ManagedModuleImpl.lookupResource(ManagedModuleImpl.java:104)
at com.ibm.ws.sca.internal.jms.AbstractJMSImportHandler.lookupConnectionFactory(AbstractJMSImportHandler.java:450)
at com.ibm.ws.sca.internal.jms.AbstractJMSImportHandler.getConnectionFactory(AbstractJMSImportHandler.java:434)
at com.ibm.ws.sca.internal.jms.AbstractJMSImportHandler.processMessage(AbstractJMSImportHandler.java:237)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1297)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.processUOWMessage(ModuleSessionBean.java:338)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.transactionSupportsActivitySessionSupports(ModuleSessionBean.java:262)
at com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.transactionSupportsActivitySessionSupports(EJSLocalStatelessModule_43132892.java:403)
at com.ibm.ws.sca.internal.uow.handler.UOWStrategyImpl.transactionAnyActivitySessionAny(UOWStrategyImpl.java:486)
at com.ibm.ws.sca.internal.uow.handler.JoinUOWHandler.processMessage(JoinUOWHandler.java:151)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1297)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.processUOWMessage(ModuleSessionBean.java:338)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.transactionSupportsActivitySessionNotSupported(ModuleSessionBean.java:270)
at com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.transactionSupportsActivitySessionNotSupported(EJSLocalStatelessModule_43132892.java:335)
at com.ibm.ws.sca.internal.uow.handler.UOWStrategyImpl.deliverAsyncAtCommit(UOWStrategyImpl.java:535)
at com.ibm.ws.sca.internal.uow.handler.DeliverAsyncAtUOWHandler.processMessage(DeliverAsyncAtUOWHandler.java:76)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1297)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.SCAInvocationAction.invokeAsyncOneWay(SCAInvocationAction.java:481)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.RetryControl.invokeByStyle(RetryControl.java:331)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.RetryControl.invokeWithRetry(RetryControl.java:221)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.OneWayInvocation.complete(OneWayInvocation.java:116)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.FlowActionFactoryImpl.complete(FlowActionFactoryImpl.java:1012)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.FlowActionFactoryImpl.create(FlowActionFactoryImpl.java:497)
at com.ibm.ws.sibx.scax.mediation.engine.SCACalloutElement.invoke(SCACalloutElement.java:198)
at com.ibm.ws.sibx.scax.mediation.engine.MediationPrimitive.invokeConnections(MediationPrimitive.java:311)
at com.ibm.ws.sibx.scax.mediation.engine.JavaMediationPrimitive.fireOutputTerminals(JavaMediationPrimitive.java:419)
at com.ibm.ws.sibx.scax.mediation.engine.JavaMediationPrimitive.performInvocation(JavaMediationPrimitive.java:345)
at com.ibm.ws.sibx.scax.mediation.engine.JavaMediationPrimitive.invoke(JavaMediationPrimitive.java:217)
at com.ibm.ws.sibx.scax.mediation.engine.MediationPrimitive.invokeConnections(MediationPrimitive.java:311)
at com.ibm.ws.sibx.scax.mediation.engine.Input.invoke(Input.java:137)
at com.ibm.ws.sibx.scax.mediation.engine.RequestFlow.invokeFlow(RequestFlow.java:132)
at com.ibm.ws.sibx.scax.mediation.engine.MediationFlow.invokeRequestFlow(MediationFlow.java:135)
at com.ibm.wsspi.sibx.mediation.flow.ejb.MediationFlowBean.invokeRequestFlow(MediationFlowBean.java:230)
at com.ibm.wsspi.sibx.mediation.flow.ejb.EJSLocalStatelessMediationFlow_f5ad87fe.invokeRequestFlow(EJSLocalStatelessMediationFlow_f5ad87fe.java:127)
at com.ibm.ws.sibx.scax.mediation.component.ejb.EJBMediationFlowComponentImpl.invokeRequestFlow(EJBMediationFlowComponentImpl.java:223)
at com.ibm.ws.sibx.scax.runtime.handler.MFCImplementationHandler.processMessage(MFCImplementationHandler.java:199)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1286)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.processUOWMessage(ModuleSessionBean.java:338)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.transactionRequiredActivitySessionSupports(ModuleSessionBean.java:303)
at com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.transactionRequiredActivitySessionSupports(EJSLocalStatelessModule_43132892.java:301)
at com.ibm.ws.sca.internal.uow.handler.UOWStrategyImpl.transactionGlobalActivitySessionAny(UOWStrategyImpl.java:336)
at com.ibm.ws.sca.internal.uow.handler.JoinUOWHandler.processMessage(JoinUOWHandler.java:168)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1297)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.ws.sca.internal.async.impl.AbstractAsyncInboundHandler.processMessage(AbstractAsyncInboundHandler.java:117)
at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean.processMessage(ServiceSIBusMessageBean.java:285)
at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean.access$000(ServiceSIBusMessageBean.java:53)
at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean$1.onMessage(ServiceSIBusMessageBean.java:77)
at com.ibm.wbiserver.manualrecovery.ejb.RecoveryMDBHandler.processMessage(RecoveryMDBHandler.java:126)
at com.ibm.wbiserver.manualrecovery.ejb.RecoveryMDBHandler.onMessage(RecoveryMDBHandler.java:82)
at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean.onMessage(ServiceSIBusMessageBean.java:135)
at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ejs.container.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.java:1018)
at com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:747)
at $Proxy16.onMessage(Unknown Source)
at com.ibm.ws.sib.ra.inbound.impl.SibRaEndpointInvokerImpl.invokeEndpoint(SibRaEndpointInvokerImpl.java:156)
at com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:768)
at com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSingleProcessListener.java:584)
at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:419)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
Wrapped by:
com.ibm.websphere.sca.ServiceRuntimeException: Resource java:comp/env/sca/resource/import/Import1_CF cannot be resovled.: caused by: javax.naming.NameNotFoundException: Name comp/env/sca not found in context "java:".
at com.ibm.ws.sca.internal.ejb.util.JndiAdapter.(JndiAdapter.java:48)
at com.ibm.ws.sca.internal.ejb.util.JndiAdapterFactory.createAdapter(JndiAdapterFactory.java:39)
at org.eclipse.emf.common.notify.impl.AdapterFactoryImpl.adaptNew(AdapterFactoryImpl.java:112)
at org.eclipse.emf.common.notify.impl.AdapterFactoryImpl.adapt(AdapterFactoryImpl.java:98)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.getResource(ModuleSessionBean.java:232)
at com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.getResource(EJSLocalStatelessModule_43132892.java:437)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ws.sca.internal.scdl.impl.ManagedModuleImpl.lookupResource(ManagedModuleImpl.java:104)
at com.ibm.ws.sca.internal.jms.AbstractJMSImportHandler.lookupConnectionFactory(AbstractJMSImportHandler.java:450)
at com.ibm.ws.sca.internal.jms.AbstractJMSImportHandler.getConnectionFactory(AbstractJMSImportHandler.java:434)
at com.ibm.ws.sca.internal.jms.AbstractJMSImportHandler.processMessage(AbstractJMSImportHandler.java:237)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1297)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.processUOWMessage(ModuleSessionBean.java:338)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.transactionSupportsActivitySessionSupports(ModuleSessionBean.java:262)
at com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.transactionSupportsActivitySessionSupports(EJSLocalStatelessModule_43132892.java:403)
at com.ibm.ws.sca.internal.uow.handler.UOWStrategyImpl.transactionAnyActivitySessionAny(UOWStrategyImpl.java:486)
at com.ibm.ws.sca.internal.uow.handler.JoinUOWHandler.processMessage(JoinUOWHandler.java:151)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1297)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.processUOWMessage(ModuleSessionBean.java:338)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.transactionSupportsActivitySessionNotSupported(ModuleSessionBean.java:270)
at com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.transactionSupportsActivitySessionNotSupported(EJSLocalStatelessModule_43132892.java:335)
at com.ibm.ws.sca.internal.uow.handler.UOWStrategyImpl.deliverAsyncAtCommit(UOWStrategyImpl.java:535)
at com.ibm.ws.sca.internal.uow.handler.DeliverAsyncAtUOWHandler.processMessage(DeliverAsyncAtUOWHandler.java:76)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1297)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.SCAInvocationAction.invokeAsyncOneWay(SCAInvocationAction.java:481)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.RetryControl.invokeByStyle(RetryControl.java:331)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.RetryControl.invokeWithRetry(RetryControl.java:221)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.OneWayInvocation.complete(OneWayInvocation.java:116)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.FlowActionFactoryImpl.complete(FlowActionFactoryImpl.java:1012)
at com.ibm.ws.sibx.mediation.flowaction.impl.sca.FlowActionFactoryImpl.create(FlowActionFactoryImpl.java:497)
at com.ibm.ws.sibx.scax.mediation.engine.SCACalloutElement.invoke(SCACalloutElement.java:198)
at com.ibm.ws.sibx.scax.mediation.engine.MediationPrimitive.invokeConnections(MediationPrimitive.java:311)
at com.ibm.ws.sibx.scax.mediation.engine.JavaMediationPrimitive.fireOutputTerminals(JavaMediationPrimitive.java:419)
at com.ibm.ws.sibx.scax.mediation.engine.JavaMediationPrimitive.performInvocation(JavaMediationPrimitive.java:345)
at com.ibm.ws.sibx.scax.mediation.engine.JavaMediationPrimitive.invoke(JavaMediationPrimitive.java:217)
at com.ibm.ws.sibx.scax.mediation.engine.MediationPrimitive.invokeConnections(MediationPrimitive.java:311)
at com.ibm.ws.sibx.scax.mediation.engine.Input.invoke(Input.java:137)
at com.ibm.ws.sibx.scax.mediation.engine.RequestFlow.invokeFlow(RequestFlow.java:132)
at com.ibm.ws.sibx.scax.mediation.engine.MediationFlow.invokeRequestFlow(MediationFlow.java:135)
at com.ibm.wsspi.sibx.mediation.flow.ejb.MediationFlowBean.invokeRequestFlow(MediationFlowBean.java:230)
at com.ibm.wsspi.sibx.mediation.flow.ejb.EJSLocalStatelessMediationFlow_f5ad87fe.invokeRequestFlow(EJSLocalStatelessMediationFlow_f5ad87fe.java:127)
at com.ibm.ws.sibx.scax.mediation.component.ejb.EJBMediationFlowComponentImpl.invokeRequestFlow(EJBMediationFlowComponentImpl.java:223)
at com.ibm.ws.sibx.scax.runtime.handler.MFCImplementationHandler.processMessage(MFCImplementationHandler.java:199)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1286)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.processUOWMessage(ModuleSessionBean.java:338)
at com.ibm.wsspi.sca.ejb.module.impl.ModuleSessionBean.transactionRequiredActivitySessionSupports(ModuleSessionBean.java:303)
at com.ibm.wsspi.sca.ejb.module.EJSLocalStatelessModule_43132892.transactionRequiredActivitySessionSupports(EJSLocalStatelessModule_43132892.java:301)
at com.ibm.ws.sca.internal.uow.handler.UOWStrategyImpl.transactionGlobalActivitySessionAny(UOWStrategyImpl.java:336)
at com.ibm.ws.sca.internal.uow.handler.JoinUOWHandler.processMessage(JoinUOWHandler.java:168)
at com.ibm.ws.sca.internal.message.impl.MessageDispatcherImpl.processMessage(MessageDispatcherImpl.java:1297)
at com.ibm.ws.sca.internal.message.impl.ManagedMessageImpl.process(ManagedMessageImpl.java:834)
at com.ibm.ws.sca.internal.async.impl.AbstractAsyncInboundHandler.processMessage(AbstractAsyncInboundHandler.java:117)
at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean.processMessage(ServiceSIBusMessageBean.java:285)
at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean.access$000(ServiceSIBusMessageBean.java:53)
at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean$1.onMessage(ServiceSIBusMessageBean.java:77)
at com.ibm.wbiserver.manualrecovery.ejb.RecoveryMDBHandler.processMessage(RecoveryMDBHandler.java:126)
at com.ibm.wbiserver.manualrecovery.ejb.RecoveryMDBHandler.onMessage(RecoveryMDBHandler.java:82)
at com.ibm.wsspi.sca.async.bean.impl.ServiceSIBusMessageBean.onMessage(ServiceSIBusMessageBean.java:135)
at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.ejs.container.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.java:1018)
at com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:747)
at $Proxy16.onMessage(Unknown Source)
at com.ibm.ws.sib.ra.inbound.impl.SibRaEndpointInvokerImpl.invokeEndpoint(SibRaEndpointInvokerImpl.java:156)
at com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:768)
at com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSingleProcessListener.java:584)
at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:419)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
Caused by: javax.naming.NameNotFoundException: Name comp/env/sca not found in context "java:".
at com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1767)
at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1083)
at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:991)
at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1263)
at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:384)
at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:204)
at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:144)
at javax.naming.InitialContext.lookup(InitialContext.java:363)
at com.ibm.ws.sca.internal.ejb.util.EJBLocator$JndiLocator.locate(EJBLocator.java:464)
at com.ibm.ws.sca.internal.ejb.util.EJBLocator.locate(EJBLocator.java:442)
at com.ibm.ws.sca.internal.ejb.util.JndiAdapter.(JndiAdapter.java:44)
... 75 more