Hi,

I am using servicemix 3.2.1.

I am trying to do this:

External client-----[SOAP]---->CXF-BC Consumer---->JMS Provider---->(
jms queue)------>JMS Consumer------> CXF-BC
Provider----[SOAP]---->External service

All MEPs are InOnly. If CXF-BC sends messages directly to CXF-BC
provider (no JMS) it works fine. When I add the JMS endpoints the
message is not delivered and I have the following console output
during message exchange:

-------------CONSOLE OUTPUT - BEGIN ---------------------------------
ERROR - CxfBcComponent                 - Error processing exchange InOnly[
  id: ID:10.0.0.71-11763adf8e5-11:10
  status: Active
  role: provider
  service: {http://www.tc.com/ pedido}pedido
  endpoint: pedidoSOAP
  in: <? xml version="1.0" encoding="UTF-8"?><jbi:message
xmlns:jbi="http://java.sun.com/ xml/ns/jbi/wsdl -11-wrapper"
xmlns:msg="http://www. tc.com/pedido" name=" enviarPedidoRequest"
type="msg:enviarPedidoRequest" version="
1.0"><jbi:part><ns2:enviarPedido xmlns:ns2="http://www.
tc.com/pedido"><in>AAAAAAAAAAHHHHH![0]</in></ns2:
enviarPedido></jbi:part></jbi:message>
]
java. lang.NullPointerException
        at java.util.concurrent.
ConcurrentHashMap.hash(ConcurrentHashMap.java:157)
        at java.util.concurrent.
ConcurrentHashMap.get(ConcurrentHashMap.java:730)
        at org. apache.cxf.service.model.BindingInfo.
getOperation(BindingInfo.java:112)
        at org.apache. servicemix.cxfbc.CxfBcProvider.process(
CxfBcProvider.java:123)
        at org.apache.servicemix.common.
AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538)
        at org. apache.servicemix.common.
AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490)
        at org. apache.servicemix.common.
BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
        at org. apache.servicemix.jbi.messaging.
DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
        at org. apache.servicemix.jbi .nmr.flow.AbstractFlow.
doRouting(AbstractFlow.java:170)
        at org.apache. servicemix.jbi.nmr.flow.
seda.SedaFlow.doRouting( SedaFlow.java:167)
        at org.apache.servicemix. jbi.nmr.flow.seda.
SedaQueue$1.run(SedaQueue.java:134)
        at java.util.concurrent.
ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at java. util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
ERROR - JmsComponent                   - Error processing exchange InOnly[
  id: ID:10.0.0.71-11763adf8e5-11:10
  status: Error
  role: consumer
  service: {http://www.tc.com/pedido} pedido
  endpoint: pedidoSOAP
  in: <?xml version="1.0" encoding=" UTF-8"?><jbi:message
xmlns:jbi="http://java.sun.com/ xml/ns/jbi/wsdl -11-wrapper"
xmlns:msg="http://www. tc.com/pedido" name=" enviarPedidoRequest"
type="msg:enviarPedidoRequest" version="
1.0"><jbi:part><ns2:enviarPedido xmlns:ns2="http://www.
tc.com/pedido"><in>AAAAAAAAAAHHHHH![0]</in></ns2:
enviarPedido></jbi:part></jbi:message>
  error: java. lang.NullPointerException
]
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:120)
        at org.apache.servicemix.common. AsyncBaseLifeCycle.doProcess(
AsyncBaseLifeCycle.java:538)
        at org.apache.servicemix.common.
AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:512)
        at org. apache.servicemix.common.
BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
        at org. apache.servicemix.jbi.messaging.
DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
        at org. apache.servicemix.jbi .nmr.flow.AbstractFlow.
doRouting(AbstractFlow.java:170)
        at org.apache. servicemix.jbi.nmr.flow.
seda.SedaFlow.doRouting( SedaFlow.java:167)
        at org.apache.servicemix. jbi.nmr.flow.seda.
SedaQueue$1.run(SedaQueue.java:134)
        at java.util.concurrent.
ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at java. util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
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:614)
        at org.apache.servicemix.
jbi.messaging.DeliveryChannelImpl.doSend(
DeliveryChannelImpl.java:385)
        at org.apache.servicemix.
jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:431)
        at org. apache.servicemix.common.
BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:58)
        at org. apache.servicemix.jbi.messaging.
DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
        at org. apache.servicemix.jbi .nmr.flow.AbstractFlow.
doRouting(AbstractFlow.java:170)
        at org.apache. servicemix.jbi.nmr.flow.
seda.SedaFlow.doRouting( SedaFlow.java:167)
        at org.apache.servicemix. jbi.nmr.flow.seda.
SedaQueue$1.run(SedaQueue.java:134)
        at java.util.concurrent.
ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
        at java. util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:675)
        at java.lang.Thread.run(Thread.java:595)
-------------CONSOLE OUTPUT - END ---------------------------------

Endpoints configuration:

------------CXF-BC---BEGIN-------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<beans
        xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0";
        xmlns:pedido="http://www.tc.com/pedido";>

        <cxfbc:consumer
                wsdl="classpath:pedido.wsdl"
                endpoint="pedidoHTTPConsumer"
                interfaceName="pedido:pedidoHTTPConsumerInterface"
                targetService="pedido:PedidoFilaProvider"
        />

        <cxfbc:provider
                wsdl="classpath:pedido.wsdl"
                endpoint="pedidoSOAP"
                service="pedido:pedido"
                interfaceName="pedido:pedidoInterface"
                locationURI="http://localhost:9000/pedidoService";
        />
                
</beans>
------------CXF-BC---END-------------------------------------------------

------------JMS---BEGIN-------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns:jms="http://servicemix.apache.org/jms/1.0";
        xmlns:pedido="http://www.tc.com/pedido";>

        <jms:endpoint
                service="pedido:PedidoFilaProvider"
                endpoint="PedidoFilaProvider"
                role="provider"
                destinationStyle="queue"
                jmsProviderDestinationName="queue/pedidoFila"
                connectionFactory="#connectionFactory"
                interfaceName="pedido:PedidoFila"
        />
                
        <jms:endpoint
                service="pedido:PedidoFilaConsumer"
                endpoint="PedidoFilaConsumer"
                targetService="pedido:pedido"
                role="consumer"
                destinationStyle="queue"
                jmsProviderDestinationName="queue/pedidoFila"
                connectionFactory="#connectionFactory"
                defaultMep="http://www.w3.org/2004/08/wsdl/in-only";
        />
                
        <bean
                id="connectionFactory"
                class="org.apache.activemq.ActiveMQConnectionFactory">
                
                <property
                        name="brokerURL"
                        value="tcp://localhost:61616"
                />
        </bean>

</beans>
------------JMS---END-------------------------------------------------

------------WSDL-BEGIN--------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
        xmlns:tns="http://www.tc.com/pedido";
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"; name="pedido"
        targetNamespace="http://www.tc.com/pedido";>
        <wsdl:types>
                <xsd:schema targetNamespace="http://www.tc.com/pedido";>
                        <xsd:element name="enviarPedido">
                                <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element name="in" 
type="xsd:string" />
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                </xsd:schema>
        </wsdl:types>
        <wsdl:message name="enviarPedidoRequest">
                <wsdl:part element="tns:enviarPedido" name="parameters" />
        </wsdl:message>
        <wsdl:portType name="pedido">
                <wsdl:operation name="enviarPedido">
                        <wsdl:input message="tns:enviarPedidoRequest" />

                </wsdl:operation>
        </wsdl:portType>
        <wsdl:binding name="pedidoSOAP" type="tns:pedido">
                <soap:binding style="document"
                        transport="http://schemas.xmlsoap.org/soap/http"; />
                <wsdl:operation name="enviarPedido">
                        <soap:operation
                                
soapAction="http://www.tc.com/pedido/enviarPedido"; />
                        <wsdl:input>
                                <soap:body use="literal" />
                        </wsdl:input>
                </wsdl:operation>
        </wsdl:binding>
        <wsdl:service name="pedido">
                <wsdl:port binding="tns:pedidoSOAP" name="pedidoSOAP">
                        <soap:address 
location="http://0.0.0.0:9001/pedidoService"; />
                </wsdl:port>
        </wsdl:service>
</wsdl:definitions>
------------WSDL-END--------------------------------------------

Any ideas?

Thank you,

Wilson

Reply via email to