Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-5549

Error in JMS Sender When Producer Caching is Enabled

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • JMS transport
    • None

    Description

      Define the following connection factory for the JMS sender (note the cache level parameter):

      <parameter name="default">
      <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
      <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
      <parameter name="transport.jms.ConnectionFactoryJNDIName">QueueConnectionFactory</parameter>
      <parameter name="transport.jms.CacheLevel">producer</parameter>
      </parameter>

      Now try to send a message to the EPR "jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=queue"

      Following exception is thrown:

      2010-12-02 01:07:41,367 [-] [HttpServerWorker-1] ERROR Axis2Sender Unexpected error during sending message out
      java.lang.UnsupportedOperationException: A destination must be specified.
      at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:195)
      at org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:241)
      at org.apache.axis2.transport.jms.JMSMessageSender.send(JMSMessageSender.java:141)
      at org.apache.axis2.transport.jms.JMSSender.sendOverJMS(JMSSender.java:203)
      at org.apache.axis2.transport.jms.JMSSender.sendMessage(JMSSender.java:150)
      at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)
      at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
      at org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:278)
      at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
      at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:403)
      at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:57)
      at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:219)
      at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:253)
      at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:59)
      at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:173)
      at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:178)
      at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173)
      at org.apache.synapse.transport.nhttp.ServerWorker.processEntityEnclosingMethod(ServerWorker.java:416)
      at org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:267)
      at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:619)

      Without the cache level parameter in the connection factory configuration, above will work fine.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              hiranya Hiranya Kasub Jayathilaka
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: