[
https://issues.apache.org/jira/browse/AXIS2-5670?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14137672#comment-14137672
]
Rohit commented on AXIS2-5670:
------------------------------
Hi,
I realized, That i was pooling 2 workers (Version Service and MyNewServices
worker) on same Queue. Hence i creates seperate queue for each services and
binded settings in settings services.xml. Things seems to be working ok. I had
to do few code changes. as below for successful execution of JMS IBM MQ
Transport.
a. Code Change in axis2-transport-base-1.0.0-sources
i. org.apache.axis2.transport.base. AbstractTransportListener
Error : Compilation Error.
Comment Line 280
//msgCtx.setProperty(MessageContext.TRANSPORT_NON_BLOCKING,
Boolean.valueOf(!isNonBlocking));
Reason for comment : Constant TRANSPORT_NON_BLOCKING is not available in
MessageContext.java for Axis2_1.6.2 also there is not reference for
isNonBlocking
b. Code change axis2-transport-jms-1.0.0-sources
i. org.apache.axis2.transport.jms. JMSOutTransportInfo
Error : Cast error for QueueConnection with ibm’s connection object.
JMSConnectionHandle
Reason for comment : In case if JMS Connection factory is fetched from
Application Server Initial Context.Reason being, Connection object returned by
server has different Implementation Object and is factory object which is not
always compatible to javax.jms.QueueConnection object. Alternate would be to
create a connection factory object explicitly. Keeping it enabled since it is
base code of Axis. Instead i have handled ClassCastExpception and in
ClassCastExpception case explicit object will be created.
if (connection != null) {
if (destType == JMSConstants.QUEUE) {
/*Rohit Jadhav Starts*/
try
{
session = ((QueueConnection)
connection).createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
producer = ((QueueSession)
session).createSender((Queue) destination);
}
catch(ClassCastException classCastException)
{
try
{
queueManagerName =
(String)jmsConnectionFactory.getContext().getEnvironment().get(JMSConstants.PARAM_CONFAC_JNDI_NAME);
if(null!=queueManagerName)
{
qConFac =
(QueueConnectionFactory)jmsConnectionFactory.getContext().lookup(queueManagerName);
session =
qConFac.createQueueConnection().createQueueSession(true,
Session.AUTO_ACKNOWLEDGE);
producer = ((QueueSession)
session).createSender((Queue) destination);
}
}
catch(Exception e)
{
e.printStackTrace();
handleException("Failed to look up connection
factory from JNDI", e);
}
}
/*Rohit Jadhav Ends*/
}
ii. org.apache.axis2.transport.jms. ServiceTaskManager
Error : javax.jms.IllegalStateException: Method setExceptionListener not
permitted
Comment code on line 798, Issue already raised in axis
//connection.setExceptionListener(this);
https://issues.apache.org/jira/browse/AXIS2-5528
> Axis2 1.6.2
> -----------
>
> Key: AXIS2-5670
> URL: https://issues.apache.org/jira/browse/AXIS2-5670
> Project: Axis2
> Issue Type: Bug
> Environment: IBM MQ, Axis2 1.6.2
> Reporter: Rohit
> Priority: Critical
>
> Hi,
> I have enabled IBM MQ Communication from Axis2 1.6.2, I have added 1 new
> webservice along with default web service Version of Axis2. While startup i
> can see couple of JMSWorkers gets registered i.e JMSWorker1 for Version and
> JMSWorker2 for my new webservice. When i am pushing message from SOAUP UI via
> Hermes on to IBM Request Q. for new web service. Threadpool randomly
> allocating the request to axis worker. i.e. If request is picked up by
> JMSWorker1 which is meant for Version services. I get error. If request gets
> picked up bu JMSWorker2 i.e. My newly added webservice worker then execution
> happens properly. I think its a bug. Please correct me if i am wrong.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]