Hi JB,
I'm not quite sure what you mean when you say 'with the map', but
I'll try
to give more info...
The test service assembly has 3 units, http-in-su, cxf-bc-su, jms-su.
1. http-in-su :
<beans xmlns:http="http://servicemix.apache.org/http/1.0"
xmlns:person="http://servicemix.apache.org/samples/wsdl-first">
<!-- gets the initial request and redirects to 'soap2' -->
<http:soap-consumer service="person:PersonService"
endpoint="soap"
targetEndpoint="soap2"
targetService="person:PersonService"
locationURI="http://0.0.0.0:8192/PersonService/"
defaultMep="http://www.w3.org/2004/08/wsdl/in-only
"
wsdl="classpath:person.wsdl"/>
<!-- sends it to the external service exposed by cxfbc:consumer -->
<http:soap-provider service="person:PersonService"
endpoint="soap2"
interfaceName="person:Person"
locationURI="http://localhost:9000/PersonService/"
wsdl="classpath:person.wsdl"/>
<!-- gets the message from the cxf:bc provider and drops it to the
queue
-->
<http:soap-consumer service="person:PersonService"
endpoint="soap3"
targetService="person:jms"
locationURI="http://localhost:9001/
PersonService/"
defaultMep="http://www.w3.org/2004/08/wsdl/in-only
"
wsdl="classpath:person.wsdl"/>
</beans>
person.wsdl has 3 ports for PersonService, named soap, soap2 and
soap3.
Next is the cxfbc-su :
<beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
xmlns:person="http://servicemix.apache.org/samples/wsdl-first">
<!-- gets the message sent from a http:soap-provider 'soap2'
endpoint and
redirects to cxf:bc provider -->
<cxfbc:consumer wsdl="classpath:person.wsdl"
targetService="person:PersonService"
targetInterface="person:Person"
endpoint="pojo"
targetEndpoint="pojo2"/>
<!-- sends it back to the http:soap-consumer 'soap3' -->
<cxfbc:provider wsdl="classpath:person.wsdl"
locationURI="http://localhost:9001/
PersonService/"
service="person:PersonService"
endpoint="pojo2"
interfaceName="person:Person"/>
</beans>
The person.wsdl shipped with the cxf-bc su has two ports named
'pojo' and
'pojo2'.
There's also a jms su which the 'soap3' endpoint delegates to :
beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
xmlns:person="http://servicemix.apache.org/samples/wsdl-first">
<jms:endpoint service="person:jms"
endpoint="jmsendpoint"
role="provider"
destinationStyle="queue"
jmsProviderDestinationName="bridge.output"
connectionFactory="#connectionFactory" />
<bean id="connectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
</beans>
Let me know please if I can provide more info...
There're some log entries here : http://pastebin.com/m7180a31e
I'm going to look into it further. The interesting thing is that if I
introduce cxf:se endpoint into the route and have a cxf:bc consumer
delegating to it (as opposed to cxfbc:provider) then the cxf:se
endpoint
gets called and the initiator (browser) gets the 200 OK back...
So I'm wondering may be I need to add a cxf:se and a wiretap, for the
cxfbc:consumer to delegate to this wiretap instead, and with the
wiretap
targeting the cxfse, but also copying the request (through
inListener) to
the cxfbc:provider....
thanks, Sergey
Jean-Baptiste Onofré wrote:
Hi Sergey,
Could you provide the xbeans used (especially with the map) ?
Thx,
Regards
JB
------Original Message------
From: Sergey Beryozkin
To: [email protected]
ReplyTo: [email protected]
Subject: servicemix-http and cxf-bc interoperability
Sent: Oct 29, 2009 11:59
Hi,
I'm working on a test which has to verify that servicemix-http and
cxf-bc
components can interoperate (using soap payloads just for now).
So I'm trying to build a route which can be initiated by the test.
The route can be described as follows :
1. The test sends a SOAP request to the HTTP SOAP consumer (port
8192,
endpoint 'soap') which gets and and routes it to the HTTP SOAP
provider
(endpoint 'soap2') which pushes it further to a service endpoint
listening
on localhost:9000.
2. CXF BC consumer listening on localhost:9000 receives it and
routes it
to
CXF BC provider which pushes it further to a service endpoint
listening on
localhost:9001.
3. HTTP SOAP consumer (port 9001, endpoint 'soap3') gets the soap
request
and drops it to a jms queue which will be checked by the test.
I've gone ahead with implementing this route and it appears that the
initial
message is received at 1 and eventually dropped to the queue,
however I'm
seeing that the initiator (the browser in this case) gets HTTP 500
due to
one of the exchanges expiring.
I've posted some more details here :
http://pastebin.com/m7180a31e
I have few questions.
Is this test route built correctly, given what needs to be tested ?
Why the initiator does not get the confirmation like 202/200 back
given
that
an initial soap consumer is listening in the in-only mode ?
I think the problem has to do with the fact that a cxfbc:provider
expects
some response back but the final http soap consumer just drops the in
message to the queue so cxfbc:provider fails.
Any hints will be appreciated
thanks, Sergey
--
View this message in context:
http://www.nabble.com/servicemix-http-and-cxf-bc-interoperability-tp26110897p26110897.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
--
View this message in context:
http://www.nabble.com/servicemix-http-and-cxf-bc-interoperability-tp26110897p26111901.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.