Stefan,
If you would like to test your <cxfbc:provider/>, one way is to expose
it to the outside world using a consumer endpoint that makes it easy to
test things -- just pick and choose the one you like: HTTP, JMS,
file/ftp poller, ... For an InOut service, HTTP is a very convenient one.
Another option could be to use a ServiceMixClient
(http://servicemix.apache.org/client-api.html) to interact with the
ESB. We also have examples around for doing integration testing
(http://servicemix.apache.org/integration-testing-in-spring.html) or
unit testing, if you want to automate the testing part.
Regards,
Gert
stlecho wrote:
Gert,
I think I've understood consumer/producer lingo, but ... I would like to
test the cxfbc:provider by sending an HTTP (or JMS) request to the ESB.
That's why I've created a consumer http:endpoint that receives the HTTP
request and forwards it - via a RouteBuilder - to the cxfbc:provider which
forwards the HTTP request to the external webservice.
Is this the correct way to test the cxfbc:provider or is there another
(better) way of achieving this ?
Regards, Stefan.
Gert Vanthienen wrote:
Stefan,
An <http:consumer/> is an external endpoint. It is available from the
outside world and is used to expose a service that is available to the
outside world using plain HTTP or HTTP/SOAP. It will receive an HTTP
request, send a MessageExchange through the ESB and optionally send back
the reponse over HTTP.
An <http:provider/> is an internal endpoint, that is available from the
ESB itself. It is used make an external HTTP or HTTP/SOAP service
availble in the ESB. This is similar to what you do with your
<cxfbc:provider/>, you make the external service hosted at
https://e-depottest.smals-mvm.be/fphp/3.1/ws/PersonQuery.jws available
inside the ESB. It receives a MessageExchange and does an HTTP request
from that.
If you combine both of them, like you are doing here, you are using
ServiceMix as a web service proxy: with the <cxfbc:provider/> you make the
service available on the ESB and you can use all kinds of consumer
endpoints (HTTP, JMS, ...) to allow the outside world to access the
service again.
Does this clarify the consumer/producer lingo for you?
stlecho wrote:
Hi,
Based on the documentation "A consumer endpoint is a server-side http
endpoint that will consume plain HTTP, or HTTP+SOAP requests and send
them into the NMR to a given JBI endpoint" I think I should use a
consumer endpoint. Why should I use a provider, which - again according
to the documentation - is called (internally?) by the NMR ?
I definitely would like to receive an answer, so I will change the MEP
and use "http://www.w3.org/2004/08/wsdl/in-out" instead.
Regards, Stefan.
Edell Nolan wrote:
Hi,
From looking at your modules I am just thinking that maybe your
http:endpoint should be a consumer so that it can receive
your request forward it to the cxf-bc and it makes the call to the
external
web service.
Also your have defined it to have a mep as in-only - so you won't get a
response back.
Is this was you want to do ?
Edell.
On Thu, Aug 21, 2008 at 4:40 PM, stlecho <[EMAIL PROTECTED]> wrote:
Edell,
I've done the suggested modifications and the deployment of the SA is
working :o). Thank you very much for helping me.
Now I would like to test via the http:endpoint the call to the
webservice.
I've tried to send an HTTP request to http://localhost:8192/bridge but
received a Connection Refused message. Which URL should I use to send a
request to my webservice ?
Regards, Stefan Lecho.
Edell Nolan wrote:
Hi,
I can deploy your tutorial-sa with the following changes.
(I had to change the location of the directories to be polled etc in
the
file su
and change the locationURI in the cxf-bc to some server I could have
access
to)
So if you change the following it should work for you
In the tutorial-cxf-bc the xbean.xml should look like the following
<beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
xmlns:dummy="urn://fsb.belgium.be/fphp/v3_0">
<cxfbc:provider
wsdl="classpath:PersonQuery.wsdl"
locationURI="
https://e-depottest.smals-mvm.be/fphp/3.1/ws/PersonQuery.jws"
service="dummy:PersonQuery"
endpoint="PersonQuerySoap"/>
</beans>
The reason that it could not find the service definition is that it
was
not
in the wsdl.
It will look for the service defined in the wsdl that you specify and
the
service will take
the default target namespace defined there which was different to the
one
you were specifying.
Also in the tutorial-http-su - add in the namespace
xmlns:dummy="urn://
fsb.belgium.be/fphp/v3_0"
and have the service specified as dummy:PersonQuery.
Hope this helps, Edell.
On Thu, Aug 21, 2008 at 11:27 AM, Edell Nolan <[EMAIL PROTECTED]>
wrote:
Hi,
Can you send your complete xbean.xml files.
Are you sure you have not defined
http://www.credoc.be/<http://www.credoc.be/PersonQuery%7DPersonQuery>in
any of your xbean.xml files.
It looks to have the namespace defined incorrectly somewhere.
Edell.
On Wed, Aug 20, 2008 at 7:13 PM, stlecho <[EMAIL PROTECTED]> wrote:
The credoc namespace is defined as "http://www.company.com". The
leading
"/"
is a copy/paste error :o(. In the code I'm using
"jbi:service:http://www.company.com/PersonQueryIn".
Edell Nolan wrote:
Hi,
I am not sure that you need the starting '/'
should this not be
jbi:service:http://www.company.com/PersonQueryIn"
from("jbi:service:/http://www.company.com/PersonQueryIn")
.convertBodyTo(DOMSource.
class)
.to(jbi:service:/http://www.company.com/PersonQuery);
also what have you defined the credoc namespace to be.
Edell.
On Wed, Aug 20, 2008 at 4:44 PM, stlecho <[EMAIL PROTECTED]>
wrote:
Hi,
I'm trying to use ServiceMix to make a call to an external
webservice,
but
I
have some difficulties in find the wright configuration.
The WSDL used by the external webservice contains
<service name="PersonQuery">
<port name="PersonQuerySoap" binding="s0:PersonQuerySoap">
<soap:address
location="http://vilcanota:7002/fphp/3.1/ws/PersonQuery.jws"/>
</port>
</service>
Based on this WSDL definition, I've defined a cxfbc:provider
with
the
same
service and endpoint as defined in the WSDL.
<cxfbc:provider
wsdl="
https://e-depottest.smals-mvm.be/fphp/3.1/ws/PersonQuery.jws?WSDL="
locationURI="
https://e-depottest.smals-mvm.be/fphp/3.1/ws/PersonQuery.jws"
service="credoc:PersonQuery"
endpoint="PersonQuerySoap"
/>
I've defined a JMS consumer, so that my clients can use JMS to
connect
to
ServiceMix:
<jms:consumer
service="credoc:PersonQueryReceiver"
endpoint="jmsEndpoint"
targetService="credoc:PersonQueryIn"
destinationName="personquery.in"
connectionFactory="#connectionFactory"/>
I've defined a simple Camel router that forwards the incoming
JMS
request
to
the cxfbc provider:
from("jbi:service:/http://www.company.com/PersonQueryIn")
.convertBodyTo(DOMSource.class)
.to(jbi:service:/http://www.company.com/PersonQuery);
When deploying this configuration, I'm receiving the following
error:
"<loc-message>org.apache.cxf.service.factory.ServiceConstructionException:
Could not find definition for service
{http://www.credoc.be/PersonQuery}PersonQuery<http://www.credoc.be/PersonQuery%7DPersonQuery>
<http://www.credoc.be/PersonQuery%7DPersonQuery>
<http://www.credoc.be/PersonQuery%7DPersonQuery>
.</loc-message>"
I've tried several options, but without any success :o(. Where
should
this
PersonQuery service be defined ?
Regards, Stefan.
--
View this message in context:
http://www.nabble.com/Difficulty-in-configuring-external-webservice-call-tp19070587p19070587.html
Sent from the ServiceMix - User mailing list archive at
Nabble.com.
--
View this message in context:
http://www.nabble.com/Difficulty-in-configuring-external-webservice-call-tp19070587p19075160.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.
--
View this message in context:
http://www.nabble.com/Difficulty-in-configuring-external-webservice-call-tp19070587p19091393.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.