You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by bradtwurst <na...@xoxy.net> on 2007/06/15 22:12:22 UTC

jms consumer to http provider

Hello,

I have a jms consumer

	<jms:endpoint service="km:jms-status-service-out"
              endpoint="jms-status"
              role="consumer" 
	      connectionFactory="#connectionFactory"
              destinationStyle="queue"
              jmsProviderDestinationName="queueForKmStatus" 
              defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
              targetService="km:status-httpProvider-serviceActual"
	      targetEndpoint="status-httpProvider-endpointActual" 
         />

the target is a http provider

	<http:endpoint service="km:status-httpProvider-serviceActual"
		endpoint="status-httpProvider-endpointActual" role="provider"
		locationURI="${HostUrl}" />

The system is currently using a SEDA flow.  I've tried both in-only and
robust-in-only mep's

How do I configure servicemix to not dequeue the item if the connection to
the http host is not available?  I would assume it is some sort of
transaction configuration, but I am not sure where/how I should configure
this.

Service-mix is running in 'stand-alone' mode with the above binding
components within a service assembly.

Here is the current log that I'm getting.

=========================================
ERROR - HttpComponent                  - Error processing exchange
RobustInOnly[
  id: ID:LT478-4193-1181936893430-9:0
  status: Active
  role: provider
  service: {urn:ic:km}status-httpProvider-serviceActual
  endpoint: status-httpProvider-endpointActual
  in: <?xml version="1.0" encoding="UTF-8"?><Envelope
xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><msgResults><com.st.ic.km.mgmt.transfer.MsgResult>
  <msgId>1</msgId>
  <operatingData>1</operatingData>
  <event>UpdateCodes</event>
  <success>true</success>
  <resultMessage>updated code</resultMessage>
</com.st.ic.km.mgmt.transfer.MsgResult></msgResults></Body></Envelope>
]
java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:519)
        at java.net.Socket.connect(Socket.java:469)
        at java.net.Socket.<init>(Socket.java:366)
        at java.net.Socket.<init>(Socket.java:239)
        at
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:79)
        at
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:121)
        at
org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
        at
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
        at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
        at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
        at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
        at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
        at
org.apache.servicemix.http.processors.ProviderProcessor.process(ProviderProcessor.java:168)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
        at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
        at java.lang.Thread.run(Thread.java:595)
DEBUG - DeliveryChannelImpl            - Send
ID:LT478-4193-1181936893430-9:0 in DeliveryChannel{servicemix-http}
DEBUG - SedaFlow                       - Called Flow send
DEBUG - SedaQueue                      -
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@2bb74 dequeued exchange:
RobustInOnly[
  id: ID:LT478-4193-1181936893430-9:0
  status: Error
  role: consumer
  service: {urn:ic:km}status-httpProvider-serviceActual
  endpoint: status-httpProvider-endpointActual
  in: <?xml version="1.0" encoding="UTF-8"?><Envelope
xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><msgResults><com.st.ic.km.mgmt.transfer.MsgResult>
  <msgId>1</msgId>
  <operatingData>1</operatingData>
  <event>UpdateCodes</event>
  <success>true</success>
  <resultMessage>updated code</resultMessage>
</com.st.ic.km.mgmt.transfer.MsgResult></msgResults></Body></Envelope>
  error: java.net.ConnectException: Connection refused: connect
]
DEBUG - JmsComponent                   - Received exchange: status: Error,
role: consumer
DEBUG - JmsComponent                   - Retrieved correlation id:
ID:LT478-4193-1181936893430-9:0
ERROR - JmsComponent                   - Error processing exchange
RobustInOnly[
  id: ID:LT478-4193-1181936893430-9:0
  status: Error
  role: consumer
  service: {urn:ic:km}status-httpProvider-serviceActual
  endpoint: status-httpProvider-endpointActual
  in: <?xml version="1.0" encoding="UTF-8"?><Envelope
xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><msgResults><com.st.ic.km.mgmt.transfer.MsgResult>
  <msgId>1</msgId>
  <operatingData>1</operatingData>
  <event>UpdateCodes</event>
  <success>true</success>
  <resultMessage>updated code</resultMessage>
</com.st.ic.km.mgmt.transfer.MsgResult></msgResults></Body></Envelope>
  error: java.net.ConnectException: Connection refused: connect
]
java.lang.UnsupportedOperationException: A destination must be specified.
        at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:448)
        at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:356)
        at
org.apache.servicemix.jms.multiplexing.MultiplexingConsumerProcessor.process(MultiplexingConsumerProcessor.java:125)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
        at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:463)
        at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
        at java.lang.Thread.run(Thread.java:595)
DEBUG - DeliveryChannelImpl            - Send
ID:LT478-4193-1181936893430-9:0 in DeliveryChannel{servicemix-jms}
DEBUG - DeliveryChannelImpl            - Exception processing:
ID:LT478-4193-1181936893430-9:0 in DeliveryChannel{servicemix-jms}
ERROR - JmsComponent                   - Error setting exchange status to
ERROR
javax.jbi.messaging.MessagingException: illegal call to send / sendSync
        at
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
        at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:58)
        at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
        at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
        at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
        at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
        at java.lang.Thread.run(Thread.java:595)
=========================================

Thanks,
James



-- 
View this message in context: http://www.nabble.com/jms-consumer-to-http-provider-tf3930222s12049.html#a11146937
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: jms consumer to http provider

Posted by bradtwurst <na...@xoxy.net>.
Gert,

I tried this - no apparent change in behavior.  For right now, I've worked
around this by creating a lw pojo component that gets the message and keeps
attempting to resend it until success occurs.  Only downside is that it is
dequeued from the jms right away.

Thanks,
James


Gert Vanthienen wrote:
> 
> James,
> 
> Have you tried adding the in-only defaultMep to the provider endpoint as
> well?
> 
> Gert
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/jms-consumer-to-http-provider-tf3930222s12049.html#a11196538
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: jms consumer to http provider

Posted by Gert Vanthienen <ge...@skynet.be>.
James,

Have you tried adding the in-only defaultMep to the provider endpoint as
well?

Gert


bradtwurst wrote:
> 
> Hello,
> 
> I have a jms consumer
> 
> 	<jms:endpoint service="km:jms-status-service-out"
>               endpoint="jms-status"
>               role="consumer" 
> 	      connectionFactory="#connectionFactory"
>               destinationStyle="queue"
>               jmsProviderDestinationName="queueForKmStatus" 
>               defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
>               targetService="km:status-httpProvider-serviceActual"
> 	      targetEndpoint="status-httpProvider-endpointActual" 
>          />
> 
> the target is a http provider
> 
> 	<http:endpoint service="km:status-httpProvider-serviceActual"
> 		endpoint="status-httpProvider-endpointActual" role="provider"
> 		locationURI="${HostUrl}" />
> 
> The system is currently using a SEDA flow.  I've tried both in-only and
> robust-in-only mep's
> 
> How do I configure servicemix to not dequeue the item if the connection to
> the http host is not available?  I would assume it is some sort of
> transaction configuration, but I am not sure where/how I should configure
> this.
> 
> Service-mix is running in 'stand-alone' mode with the above binding
> components within a service assembly.
> 
> Here is the current log that I'm getting.
> 
> =========================================
> ERROR - HttpComponent                  - Error processing exchange
> RobustInOnly[
>   id: ID:LT478-4193-1181936893430-9:0
>   status: Active
>   role: provider
>   service: {urn:ic:km}status-httpProvider-serviceActual
>   endpoint: status-httpProvider-endpointActual
>   in: <?xml version="1.0" encoding="UTF-8"?><Envelope
> xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><msgResults><com.st.ic.km.mgmt.transfer.MsgResult>
>   <msgId>1</msgId>
>   <operatingData>1</operatingData>
>   <event>UpdateCodes</event>
>   <success>true</success>
>   <resultMessage>updated code</resultMessage>
> </com.st.ic.km.mgmt.transfer.MsgResult></msgResults></Body></Envelope>
> ]
> java.net.ConnectException: Connection refused: connect
>         at java.net.PlainSocketImpl.socketConnect(Native Method)
>         at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
>         at
> java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
>         at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
>         at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
>         at java.net.Socket.connect(Socket.java:519)
>         at java.net.Socket.connect(Socket.java:469)
>         at java.net.Socket.<init>(Socket.java:366)
>         at java.net.Socket.<init>(Socket.java:239)
>         at
> org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:79)
>         at
> org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:121)
>         at
> org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
>         at
> org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1321)
>         at
> org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
>         at
> org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
>         at
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
>         at
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
>         at
> org.apache.servicemix.http.processors.ProviderProcessor.process(ProviderProcessor.java:168)
>         at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>         at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>         at
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>         at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>         at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>         at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>         at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>         at java.lang.Thread.run(Thread.java:595)
> DEBUG - DeliveryChannelImpl            - Send
> ID:LT478-4193-1181936893430-9:0 in DeliveryChannel{servicemix-http}
> DEBUG - SedaFlow                       - Called Flow send
> DEBUG - SedaQueue                      -
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@2bb74 dequeued
> exchange: RobustInOnly[
>   id: ID:LT478-4193-1181936893430-9:0
>   status: Error
>   role: consumer
>   service: {urn:ic:km}status-httpProvider-serviceActual
>   endpoint: status-httpProvider-endpointActual
>   in: <?xml version="1.0" encoding="UTF-8"?><Envelope
> xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><msgResults><com.st.ic.km.mgmt.transfer.MsgResult>
>   <msgId>1</msgId>
>   <operatingData>1</operatingData>
>   <event>UpdateCodes</event>
>   <success>true</success>
>   <resultMessage>updated code</resultMessage>
> </com.st.ic.km.mgmt.transfer.MsgResult></msgResults></Body></Envelope>
>   error: java.net.ConnectException: Connection refused: connect
> ]
> DEBUG - JmsComponent                   - Received exchange: status: Error,
> role: consumer
> DEBUG - JmsComponent                   - Retrieved correlation id:
> ID:LT478-4193-1181936893430-9:0
> ERROR - JmsComponent                   - Error processing exchange
> RobustInOnly[
>   id: ID:LT478-4193-1181936893430-9:0
>   status: Error
>   role: consumer
>   service: {urn:ic:km}status-httpProvider-serviceActual
>   endpoint: status-httpProvider-endpointActual
>   in: <?xml version="1.0" encoding="UTF-8"?><Envelope
> xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><msgResults><com.st.ic.km.mgmt.transfer.MsgResult>
>   <msgId>1</msgId>
>   <operatingData>1</operatingData>
>   <event>UpdateCodes</event>
>   <success>true</success>
>   <resultMessage>updated code</resultMessage>
> </com.st.ic.km.mgmt.transfer.MsgResult></msgResults></Body></Envelope>
>   error: java.net.ConnectException: Connection refused: connect
> ]
> java.lang.UnsupportedOperationException: A destination must be specified.
>         at
> org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:448)
>         at
> org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:356)
>         at
> org.apache.servicemix.jms.multiplexing.MultiplexingConsumerProcessor.process(MultiplexingConsumerProcessor.java:125)
>         at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>         at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:463)
>         at
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>         at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>         at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>         at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>         at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>         at java.lang.Thread.run(Thread.java:595)
> DEBUG - DeliveryChannelImpl            - Send
> ID:LT478-4193-1181936893430-9:0 in DeliveryChannel{servicemix-jms}
> DEBUG - DeliveryChannelImpl            - Exception processing:
> ID:LT478-4193-1181936893430-9:0 in DeliveryChannel{servicemix-jms}
> ERROR - JmsComponent                   - Error setting exchange status to
> ERROR
> javax.jbi.messaging.MessagingException: illegal call to send / sendSync
>         at
> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
>         at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
>         at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>         at
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:58)
>         at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>         at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>         at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>         at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>         at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>         at java.lang.Thread.run(Thread.java:595)
> =========================================
> 
> Thanks,
> James
> 
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/jms-consumer-to-http-provider-tf3930222s12049.html#a11173609
Sent from the ServiceMix - User mailing list archive at Nabble.com.