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 <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Reply via email to