WebSphere Integration

View: New views
8 Messages — Rating Filter:   Alert me  

WebSphere Integration

by Meunier Pierre-Emmanuel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

Hi

 

I’ve been trying to integrate Mule with WebSphere (in my case v6 and now v6.1) and I’ve never managed to have it “fully” working. Here is what I mean by “fully”.

 

I use WebSphere MQ as a JMS provider and I have to use XA transactions. Mule is currently running as a webapp in WebSphere but:

 

1) it is using JBossTS as the transaction manager.

2) it is creating its own connection factory to WebSphere MQ.

 

1- I’d like to use the WebSphere Transaction Manager provided by Mule but it doesn’t work. Here is what IBM had to say about the error I was receiving when trying the WebSphere TM:

 

The reason that this failing is because of the way WebSphere Transaction
manager is architected. The stack call above on page 5:                 
com.ibm.ws.Transaction.JTA.TransactionImpl.enlistResource               
can only be used to enlist a 1PC resource. This is why the exception    
occurs - Mule ESB is trying to register a 2pc resource.                 
                                                                        
The correct procedure to enlist a 2pc resource for WebSphere is first to
call registerResourceInfo() on the TransactionManager which will return 
an integer which represents the recoverable resource. This integer is   
then passed back to TransactionImpl in a call to enlistResource as      
follows:                                                                
                                                                        
enlistResource(XAResource xaRes, int recoveryIndex)                     
                                                                        
The call to registerResourceInfo takes the following parameters:        
                                                                        
registerResourceInfo(String xaResFactoryClassName, XAResourceInfo       
xaResInfo)                                                              
                                                                        
or                                                                      
                                                                        
registerResourceInfo(String xaResFactoryClassName, XAResourceInfo       
xaResInfo, String[] xaResInfoClasspath)                                 
                                                                        
if specific classpath information is needed for recovery purposes.      
These changes should be made by the Mule ESB product.

 

2 - I also would like to lookup the ConnectionFactory from JNDI instead of creating it with a spring bean in the Mule config but when trying to do that I receive the following exception:

 

Caused by: org.mule.api.model.ModelException: Failed to connect listener XaTransactedJmsMessageReceiver{this=5bbc5bbc, receiverKey=Test~IN.QUEUE, endpoint=jms://IN.QUEUE} for endpoint endpoint.jms.IN.QUEUE

            at org.mule.service.AbstractService.connectListeners(AbstractService.java:700)

            at org.mule.service.AbstractService.start(AbstractService.java:324)

            at org.mule.service.AbstractService.start(AbstractService.java:293)

            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 org.mule.lifecycle.DefaultLifecyclePhase.applyLifecycle(DefaultLifecyclePhase.java:263)

            ... 53 more

Caused by: org.mule.transport.FatalConnectException: ReconnectStrategy "org.mule.transport.SingleAttemptConnectionStrategy" failed to reconnect receiver on endpoint "jms://IN.QUEUE"

            at org.mule.transport.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:29)

            at org.mule.transport.AbstractConnectionStrategy.connect(AbstractConnectionStrategy.java:108)

            at org.mule.transport.AbstractMessageReceiver.connect(AbstractMessageReceiver.java:427)

            at org.mule.service.AbstractService.connectListeners(AbstractService.java:696)

            ... 60 more

Caused by: org.mule.transport.ConnectException: Initialisation Failure: com.ibm.ejs.jms.JMSSessionHandle incompatible with org.mule.transaction.XaTransaction$MuleXaObject

            at org.mule.transport.AbstractMessageReceiver.connect(AbstractMessageReceiver.java:459)

            at org.mule.transport.SingleAttemptConnectionStrategy.doConnect(SingleAttemptConnectionStrategy.java:25)

            ... 63 more

Caused by: java.lang.ClassCastException: com.ibm.ejs.jms.JMSSessionHandle incompatible with org.mule.transaction.XaTransaction$MuleXaObject

            at org.mule.transport.jms.XaTransactedJmsMessageReceiver.createConsumer(XaTransactedJmsMessageReceiver.java:329)

            at org.mule.transport.jms.XaTransactedJmsMessageReceiver.doConnect(XaTransactedJmsMessageReceiver.java:143)

            at org.mule.transport.AbstractMessageReceiver.connect(AbstractMessageReceiver.java:438)

            ... 64 more

 

The reason for all this is that WAS and MQ integrates very well and I’d like to take advantage of that. I’d like Mule to be deployed with the JCA Connector

 

 

I think all mule and websphere users would really (and I mean REALLY) appreciate to have the WebSphereIntegration wiki page (http://www.mulesource.org/display/MULE2USER/WebSphere+Integration) finally updated similarly to the JBoss Integration page (http://www.mulesource.org/display/MULE2USER/JBoss+Integration). That would help a lot!

 

I will carry on trying and give updates when I find something new but any help from the Mule developers would be really appreciated (if a Mule developer could actually try to deploy Mule connector in WebSphere 6.1 that’d be a good start…)

 

Thanks a lot

 

Pierre

 

 

 

************************************************************************
DISCLAIMER
The information contained in this e-mail is confidential and is intended
for the recipient only.
If you have received it in error, please notify us immediately by reply
e-mail and then delete it from your system. Please do not copy it or
use it for any other purposes, or disclose the content of the e-mail
to any other person or store or copy the information in any medium.
The views contained in this e-mail are those of the author and not
necessarily those of Admenta UK Group.
 
Admenta UK plc is a company incorporated in England and Wales
under company number 3011757 and whose registered office
is at Sapphire Court, Walsgrave Triangle, Coventry CV2 2TX
************************************************************************
 

Re: WebSphere Integration

by pangea :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I created a PMR for IBM to address the mule RAR deplyment isue...they r still looking into it..i will update the thread with more info when i get back something from ibm...

RE: WebSphere Integration

by Meunier Pierre-Emmanuel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks. Please keep us updated with this.

I looked into it a bit further:

The IllegalStateException that you receive when deploying the RAR, is
due to a classpath issue,
org.mule.context.notification.MuleContextNotification cannot be found.

This is because org.mule.util.ClassUtils is using
Thread.currentThread().getContextClassLoader() (from Apache Commons
Lang) to load MuleContextNotification class. But this class loader is
not the one which knows about the jars deployed in the RAR (I hope IBM
will help on that!)

As a test, I tried to remove mule-core jar (which contains
MuleContextNotification) from the RAR and put it on the WebSphere
classpath. The RAR deployment is now fine but when trying to start the
application it gives me the following error:

"_ObjectToString" is already registered in the registry..."

This usually means that mule-core jar is duplicated on the classpath.

This is how far I got. I'll keep trying.

It'll be good to hear from IBM (before next year...)

Any ideas/suggestions welcome.

Pierre


-----Original Message-----
From: yaravind [mailto:yaravind@...]
Sent: 04 July 2008 17:10
To: user@...
Subject: Re: [mule-user] WebSphere Integration


I created a PMR for IBM to address the mule RAR deplyment isue...they r
still
looking into it..i will update the thread with more info when i get back
something from ibm...
--
View this message in context:
http://www.nabble.com/WebSphere-Integration-tp18278271p18282314.html
Sent from the Mule - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email 
************************************************************************
DISCLAIMER
The information contained in this e-mail is confidential and is intended
for the recipient only.
If you have received it in error, please notify us immediately by reply
e-mail and then delete it from your system. Please do not copy it or
use it for any other purposes, or disclose the content of the e-mail
to any other person or store or copy the information in any medium.
The views contained in this e-mail are those of the author and not
necessarily those of Admenta UK Group.
 
Admenta UK plc is a company incorporated in England and Wales
under company number 3011757 and whose registered office
is at Sapphire Court, Walsgrave Triangle, Coventry CV2 2TX
************************************************************************

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



RE: WebSphere Integration

by Meunier Pierre-Emmanuel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ok I made some progress...

1- I finally manage to deploy the Mule RAR into WebSphere. I had to
modify the org.mule.utils.ClassUtils. The initialiseClass(Class) calls
Apache Commons ClassUtils to load the class. This method gets the
ContextClassLoader and when running in WebSphere this classloader
doesn't know about the class to load.

I got it to work with this:

    public static Class initializeClass(Class clazz)
    {
        try
        {
        return Class.forName(clazz.getName(), true,
clazz.getClassLoader());
                // Orignial code
                // return getClass(clazz.getName(), true);
        }
        catch (ClassNotFoundException e)
        {
            IllegalStateException ise = new IllegalStateException();
            ise.initCause(e);
            throw ise;
        }
    }

I am sure there's a good reason why the Mule team used Apache Commons
for this. I am not familiar with it, so I'd like the Mule developers to
advice on how to fix this.

There's probably a dark way of configuring class loaders in WebSphere to
make this work, I'll see if I can get some info from IBM.

But any help would be appreciated

2- I made progress with the WebSphere TransactionManager too. I had to
override the way XA transaction enlist XA Resource in Mule. I attached
the classes.

It is not finished yet as some parameters I pass to the Transaction
Manager are completely rubbish. I believe they are used for tx recovery.
I have asked IBM for some more details about it. In the meantime, if
anybody can help, it'd be much appreciated.

I try the solution in a scenario where a JMS message is copied from a
queue to another and a database row is inserted. Commit and rollback
(seem to) work fine.

I'll update this when I find more. Any suggestions are welcome.

Thanks

Pierre

-----Original Message-----
From: Meunier Pierre-Emmanuel
[mailto:pierre-emmanuel.meunier@...]
Sent: 07 July 2008 12:55
To: user@...
Subject: RE: [mule-user] WebSphere Integration

Thanks. Please keep us updated with this.

I looked into it a bit further:

The IllegalStateException that you receive when deploying the RAR, is
due to a classpath issue,
org.mule.context.notification.MuleContextNotification cannot be found.

This is because org.mule.util.ClassUtils is using
Thread.currentThread().getContextClassLoader() (from Apache Commons
Lang) to load MuleContextNotification class. But this class loader is
not the one which knows about the jars deployed in the RAR (I hope IBM
will help on that!)

As a test, I tried to remove mule-core jar (which contains
MuleContextNotification) from the RAR and put it on the WebSphere
classpath. The RAR deployment is now fine but when trying to start the
application it gives me the following error:

"_ObjectToString" is already registered in the registry..."

This usually means that mule-core jar is duplicated on the classpath.

This is how far I got. I'll keep trying.

It'll be good to hear from IBM (before next year...)

Any ideas/suggestions welcome.

Pierre


-----Original Message-----
From: yaravind [mailto:yaravind@...]
Sent: 04 July 2008 17:10
To: user@...
Subject: Re: [mule-user] WebSphere Integration


I created a PMR for IBM to address the mule RAR deplyment isue...they r
still
looking into it..i will update the thread with more info when i get back
something from ibm...
--
View this message in context:
http://www.nabble.com/WebSphere-Integration-tp18278271p18282314.html
Sent from the Mule - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email 
************************************************************************

DISCLAIMER
The information contained in this e-mail is confidential and is intended

for the recipient only.
If you have received it in error, please notify us immediately by reply
e-mail and then delete it from your system. Please do not copy it or
use it for any other purposes, or disclose the content of the e-mail
to any other person or store or copy the information in any medium.
The views contained in this e-mail are those of the author and not
necessarily those of Admenta UK Group.
 
Admenta UK plc is a company incorporated in England and Wales
under company number 3011757 and whose registered office
is at Sapphire Court, Walsgrave Triangle, Coventry CV2 2TX
************************************************************************

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email





---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email

WebSphereXaTransactionFactory.java (998 bytes) Download Attachment
WebSphereXaTransaction.java (2K) Download Attachment

RE: WebSphere Integration

by Meunier Pierre-Emmanuel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi

Have you heard from IBM about this PMR?

Pierre

-----Original Message-----
From: yaravind [mailto:yaravind@...]
Sent: 04 July 2008 17:10
To: user@...
Subject: Re: [mule-user] WebSphere Integration


I created a PMR for IBM to address the mule RAR deplyment isue...they r
still
looking into it..i will update the thread with more info when i get back
something from ibm...
--
View this message in context:
http://www.nabble.com/WebSphere-Integration-tp18278271p18282314.html
Sent from the Mule - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email 
************************************************************************
DISCLAIMER
The information contained in this e-mail is confidential and is intended
for the recipient only.
If you have received it in error, please notify us immediately by reply
e-mail and then delete it from your system. Please do not copy it or
use it for any other purposes, or disclose the content of the e-mail
to any other person or store or copy the information in any medium.
The views contained in this e-mail are those of the author and not
necessarily those of Admenta UK Group.
 
Admenta UK plc is a company incorporated in England and Wales
under company number 3011757 and whose registered office
is at Sapphire Court, Walsgrave Triangle, Coventry CV2 2TX
************************************************************************

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



RE: WebSphere Integration

by pangea :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

thx for the update...can someone from Mule team comment on this...Andrew - any thoughts...

RE: WebSphere Integration

by pangea :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I have emailed ur findings to IBM seeking info on loading classes from WebSphere...lets wait and see what they have to say!

RE: WebSphere Integration

by pangea :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

fyi....ibm has given me an ifix for this...i will try to install and check if that works