L.S.,

The provider http:endpoint is used to make an external web service available to the ESB. So, in your case, there should an up-and-running web service on the url specified in the endpoint. Whether or not you create this endpoint, the WSDL should always have been available on that location beforehand. Have you tried invoking this webservice with e.g. the Eclipse webservices client or SoapUI client?

What confuses me, is the URL for your website, which suggests that you've also build you webservice using ServiceMix (it might just be a coincidence off course). If your service is already available in the ESB, there is no need to go through the HTTP endpoints to invoke it...

Gert


Benamin wrote:
So, if you had a wsdl with the following namespace and service:

<wsdl:definitions targetNamespace="http://tapestry.cgi.com/smix";>
<wsdl:service name="NSRService">

a valid http provider would be :

<beans xmlns:http="http://servicemix.apache.org/http/1.0";
       xmlns:sm="http://tapestry.cgi.com/smix";>

<http:endpoint service="sm:NSRService"
                 endpoint="myProvider"
role="provider" locationURI="http://localhost:8192/NSRService/";
                 soap="true"
                  />

I can browse this wsdl at http://localhost:8192/NSRService/main.wsdl as
expected.

Yet, I get error with the following.  Any ideas?

ERROR - HttpComponent                  - Error processing exchange InOut[
  id: ID:massive-64941-1180471881454-11:0
  status: Active
  role: provider
  service: {http://tapestry.cgi.com/smix}NSRService
  endpoint: myProvider
  in: <?xml version="1.0" encoding="UTF-8"?><hello>Testing</hello>
]
org.apache.commons.httpclient.NoHttpResponseException: The server localhost
failed to respond
        at
org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1835)
        at
org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
        at
org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
        at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)
        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)









Gert Vanthienen wrote:
L.S.,

The namespace should match the target namespace of your wsdl and the service name should match the service defined in there as well.

Gert


Benamin wrote:
I may be having a similar problem.  So in that particular http provider,
the
service should be service="test:BookService"

?



Gert Vanthienen wrote:
Michael,

One possible problem is the service name of your HTTP provider endpoint, which should match the name of the external web service you want to call. You can also use the same name on your consumer endpoint to obtain the pass-through behavior you describe, there's no need to use the targetService attribute there.

I also think that you have to specify a real IP address or hostname. You can use the 0.0.0.0 on a consumer endpoint to specify that you want to bind to all networks your host is in, but here you'll have to specify localhost or 127.0.0.1.

Regards,

Gert

Michael Mattox wrote:
Help!

I set up an http consumer & provider to pass through to an external
webservice running under tomcat.  I cannot for the life of me get it
to work.  Searching the mailing list shows the same error reported by
other people but I do not find any solutions posted.  I'm using
3.1.1-incubating.

xbean.xml:

<http:endpoint service="test:MyProviderService"
              endpoint="myProvider"
              role="provider"
              soapVersion="1.1"
              soap="true"
locationURI="http://0.0.0.0:8080/test-business-service/services/BookService";
              />

<http:endpoint service="test:MyConsumerService"
              endpoint="myConsumer"
              targetService="test:MyProviderService"
              role="consumer"
              locationURI="http://0.0.0.0:8192/BookService/";
              defaultMep="http://www.w3.org/2004/08/wsdl/in-out";
              soapVersion="1.1"
              soap="true"
              />

web page result (http://ics030126:8192/BookService/?wsdl):

HTTP ERROR: 404

Unable to find requested resource

RequestURI=/BookService/main.wsdl

Powered by Jetty://

in the servicemix log:

18:21:50,858 | DEBUG | btpool0-0 - Acceptor0 SelectChannelConnector @
0.0.0.0:8192 | JettyContextManager      |
ntextManager$ThreadPoolWrapper  441 | Dispatching job:
[EMAIL PROTECTED],io=0,w=true,b=0|0]
18:21:50,858 | DEBUG | btpool0-2  | ConsumerProcessor        |
p.processors.ConsumerProcessor  120 | Receiving HTTP request: GET
/BookService/?wsdl HTTP/1.1
Host: ics030126:8192
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive


18:21:50,967 | DEBUG | btpool0-0 - Acceptor0 SelectChannelConnector @
0.0.0.0:8192 | JettyContextManager      |
ntextManager$ThreadPoolWrapper  441 | Dispatching job:
[EMAIL PROTECTED],io=1,w=true,b=0|0]
18:21:50,967 | DEBUG | btpool0-2  | ConsumerProcessor        |
p.processors.ConsumerProcessor  120 | Receiving HTTP request: GET
/BookService/main.wsdl HTTP/1.1
Host: ics030126:8192
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive


18:21:50,967 | DEBUG | btpool0-2  | HttpComponent            |
e.servicemix.soap.SoapEndpoint  276 | Retrieving proxied endpoint
definition
18:21:50,967 | DEBUG | btpool0-2  | HttpComponent            |
icemix.common.DefaultComponent   79 | Querying service description for
ServiceEndpoint[service={http://servicemix.apache.org/service}MyProviderService,endpoint=myProvider]
18:21:50,967 | DEBUG | btpool0-2  | HttpComponent            |
icemix.common.DefaultComponent   87 | No description found for
{http://servicemix.apache.org/service}MyProviderService:myProvider


I'm completely blocked by this, quite embarrassingly so in front of my
client!  If anyone can tell me how to get past this I'd be very
grateful.  I'm trying to build a proof of concept for a new project.

Thanks,
Michael




Reply via email to