Showing posts with label ibm. Show all posts
Showing posts with label ibm. Show all posts

Thursday, June 20, 2013

"Magic map" in WESB mediation flows

IBM's Integration Designer (I'm using version 7.5.1) has many quirks, which you will soon discover as you start making large and complex mediation flows.

With trial and error I learned that for a certain type of errors, a "magic map" helps. What is this magic map you say? Nothing more than an xsl transformation that moves the root elements to the root elements:

Magic map, sounds nice! Suits well with my flowers and unicorns.

But what kind of errors does it solve then? It seems that after executing an xslt, the esb's internal dataobject representation can go corrupt.

When does this happen? I don't know. Sometimes with simple maps, sometimes complex maps,  sometimes when the message enters the flow and gets deserialized.

How do I know when it happens? Well, let me show you some examples.

Example 1: when you test your component with the integration test client, and you have a fine-grained trace running, you can see the result of each primitive in this "mediation message" window on the right. If you click on a a primitive in your trace, and you are missing an SMO element (context, headers or body), you know something is wrong with the DataObject:


If you try to print the DataObject with a trace primitive, or you do anything else with it that causes serialization, you will get:

CWSXM3154E: Mediation primitive java.lang.RuntimeException: Error serializing BO

Putting a magic map right after the primitive that "looses" one of the SMO's root elements, will fix the DataObject.


Example 2: Take a look at this mediation flow
How simple can it be? The map just moves the input. However, this exception ruins the fun when executing:

CWSXM0202E: An
unexpected exception occurred when processing mediation flow for component
MyService_MED in module mymodule: CWSXM1025E: An unexpected exception occurred
when the flow was called: IXJXE0920E: [ERR API0136] Execution terminated
because of the following error: 'IXJXE0465E: [ERR 0414][ERR XTDE0410] The
result sequence used to construct the content of an element node contains a
namespace node or attribute node named 'xsi:type' that is preceded in the
sequence by a node that is neither a namespace node nor an attribute node.  Attribute and namespace nodes must precede
all other kinds of nodes in the sequence used to construct the content of an
element.; SystemID: xsltcl:/xslt/MyService/myOperation/map_req_1.xsl; Line#:
96; Column# 149'
Refer to the server logs for more information.

Indeed, the input type is actually an abstract type, and an inheriting type should be used. In the xml of the message, xsi:type indicates the instance's "class". Hmm, so somehow the internal representation is wrong? Magic map!


With the magic map the mediation flow works like a charm. Pun not intended.


Wednesday, March 16, 2011

Publishing failed in WebSphere Integration Developer

When publishing my Module to a brand new created ESB profile in WebSphere Integration Developer (WID), everything runs fine. But hitting the publish button after a change to republish the project was less fun.



"The publish encountered some problems and the application may not have been installed or it may have been successfully installed but was unable to start."
The reason being "Failure uploading archive to server"

I found 2 articles giving a different solution:
This technote 1414552 explains that the hostname verification service should be disabled to make sure the publishing does not mind any unresolved hostnames.


This blogpost on www.soa.si tells you that you can change to hostname in the server configuration, to make the publishing work.

None of the 2 methods worked for me. But thinking about why the hostname could not be resolved, I sudddenly saw the light: I configured a proxy in WID to access the online help system. Adding the hostname of the local machine to the "No Proxy For" list made the publishing successful.
You can find these settings in the preferences screen (window > preferences) in the general section, Network connections.

Thursday, October 21, 2010

Install IBM Installation Manager without internet connection or connection with proxy

When you try to install the IBM Installation Manager, and you have no internet connection, or there is a proxy standing in your way, it is possible that you cannot enter any repositories, because the installer does not get launched. It seems to get stuck at trying to connect to public.dhe.ibm.com.

We encountered this when  we tried to install WebSphere Business Monitor. After installing WebSphere Application Server 7, the installer tries to merge the was7 it just installed into a new installation manager installation (if it was not yet installed). 
This IBM document describes the problem : http://www-01.ibm.com/support/docview.wss?uid=swg21420545#NoInternet , here in combination with Process Server 7. The suggested workaround (pre-installing the ibm installation manager with the -input parameter after editing the install.xml file) did not work. Somehow, he still had a reference to the online repository.

Luckily we found a workaround (by accident). When giving an invalid -input parameter (that is, to a file that does not exist), the installation manager installer gets launched without trying to connect to a repository! Now you can unflag the online repositories using the gui, add the repository.config file of the installation manager disk, and install the installation manager.

Tuesday, February 2, 2010

Integrating Process Server V7 with WebSphere Portal 6.1.5

Currently, it seems impossible to configure Process Integration between WebSphere Portal 6.1.5 and Process Server 7 when this portal is running on WebSphere 7 (7.0.0.7)

The remote client for Process Server 7 does not run on portal 6.1
source :

The remote client for Process Server 6.2 does not install on WebSphere 7 (I tried, it doesn't work)
The WebSphere Process Server Client 6.2.0 can be installed on WebSphere Application Server 6.1 and supported on the same set of platforms supported by WebSphere Process Server 6.2.0. Customer applications using or based on the WebSphere Process Server Client 6.0.2, 6.1 or 6.1.2 and higher will work against WebSphere Process Server 6.2.0

Remote client for Process Server 6.2 requires WAS 6.1 with webservices feature pack.
Overview of the available feature packs: