axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shantanu Sen <s...@pacbell.net>
Subject Re: Axis2: soap/jms question
Date Fri, 13 Apr 2007 20:25:20 GMT
Asankha,

Sorry for being unclear about this. Let me try to explain.

I built axis.war from the source pulled from the trunk today. Then I made just the following
modification in axis2.xml - basically added the jms transport receiver.
---
<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
        <parameter name="myTopicConnectionFactory" locked="false">                 
      
            ....
        </parameter>
        <parameter name="myQueueConnectionFactory" locked="false">                 
      
           .....
        </parameter>
        <parameter name="default" locked="false">                        
            .....
        </parameter>
    </transportReceiver>
---

At this point the axis2.war has just one service that gets generated by default with the build
- version.aar.
When I deployed the war on jboss, I see the following trace on the jboss console

==
13:16:20,750 INFO  [ModuleDeployer] Deploying module: soapmonitor
13:16:21,203 INFO  [ServiceDeployer] Deploying Web service: version.aar
13:16:21,359 WARN  [JMSConnectionFactory] Error looking up destination with JNDI
 name : Version to map its corresponding provider specific Destination name
13:16:21,375 WARN  [JMSConnectionFactory] JMS Destination with JNDI name : Versi
on does not exist
13:16:21,500 ERROR [JMSConnectionFactory] Unable to create a Destination with JN
DI name : Version
javax.jms.JMSException: This destination does not exist !QUEUE.Version
        at org.jboss.mq.server.JMSDestinationManager.createQueue(JMSDestinationM
anager.java:613)
        at org.jboss.mq.server.JMSServerInterceptorSupport.createQueue(JMSServer
InterceptorSupport.java:111)
        at org.jboss.mq.server.TracingInterceptor.createQueue(TracingInterceptor
.java:259)
        at org.jboss.mq.server.JMSServerInvoker.createQueue(JMSServerInvoker.jav
a:117)
        at org.jboss.mq.il.uil2.ServerSocketManagerHandler.handleMsg(ServerSocke
tManagerHandler.java:136)
        at org.jboss.mq.il.uil2.SocketManager$ReadTask.handleMsg(SocketManager.j
ava:395)
        at org.jboss.mq.il.uil2.msgs.BaseMsg.run(BaseMsg.java:398)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExec
utor.java:748)
        at java.lang.Thread.run(Thread.java:595)
13:16:21,515 INFO  [ListenerManager]
====

Is this the expected behavior? If so, then if we have jms transport enabled, every service
deployed must explicitly set the transport mechanism in the services.xml? This means all the
sample services that axis2 provides need to be modified since in most of them the services.xml
does not contain any specific transport.

Or should the behavior be that if no transport is specified in the services.xml then axis2
will assume that it is http by default? IMO this should be the expected behavior.

Shantanu
----- Original Message ----
From: Asankha C. Perera <asankha@wso2.com>
To: axis-user@ws.apache.org
Sent: Thursday, April 12, 2007 9:44:52 AM
Subject: Re: Axis2: soap/jms question




  

Hi Shantanu


  
  One
issue that I am having now is that if I have multiple services
deployed, for each of the services that do not have the transport
specified in the services.xml, such as the version.aar, the code is
assuming that enableAllTransports variable is true.

  

  


I think this is the default Axis2 behavior and nothing specific to the
JMS transport


  
  So,
if I have another service deployed, say version.aar, that do not have
any transport specific elements specified in the services.xml, the 
JMSListener line 122 code that checks to see if it is a JMS service as
shown below, is returning true.

  

  


What to you mean "another service..." do you have more than one
version.aar file? or version.aar and version1.aar with different
services.xmls? if so do they share the same service name?


  
   if
(JMSUtils.isJMSService(service)) {

                processService(service);

}

  

  


I think the implementation of the above method is correct

public static boolean isJMSService(AxisService service) {

        boolean process = service.isEnableAllTransports();

        if (process) {

            return true;

        } else {

            List transports = service.getExposedTransports();

            for (int i = 0; i < transports.size(); i++) {

                if (Constants.TRANSPORT_JMS.equals(transports.get(i))) {

                    return true;

                }

            }

        }

        return false;

    }




  
  The
reason being that enableAllTransports in the AxisService is set to true
for the Version service.

  

I have enabled only one service explicitly to be jms using the
services.xml and that service is being deployed fine and the
JMSListener correctly configured for it. 

  

 I would assume that all other services that do not specify any
transport specific configurations in the services.xml, the code would
would not try to enable it for all transports and it was working fine
previously. Has anything changed in AxisService code that sets the
enableAllTransports to be true by default?

  

As a result of the above issue, the listener throws the following
exception that is stopping JMSListener from listening to any queue at
all. Note that it is trying to deploy the Version service as a JMS
service as shown below, which is wrong.

  

  


I do not think I correctly identify the issue you are raising.. could
you verify this and post a JIRA so that we could discuss this issue on
a new mail thread? I would try to attend to this sometime next week



asankha

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org





Mime
View raw message