On 7/26/07, Simon Laws <[EMAIL PROTECTED]> wrote:

On 7/26/07, Radim Kolarik <[EMAIL PROTECTED] > wrote:
>
> Hi Reymond,
>
> Thank you for your reply.
>
> How do I run the example if it is deployed to a web server, such as
> Tomcat? I found an information about TuscanyServlet, which needs to be
> in web.xml file, which I have now.
>
> Let's say that my server's root context and web app context URL is
> http://localhost:8080/myWebApp . What do I have to add after this URL
> to be able to access the application? According to SCA spec, the web
> service WSDL should be available if the URL ends with ?wsdl. But if I
> type http://localhost:8080/myWebApp/?wsdl in the browser, I get an
> exception:
>
> SEVERE: Servlet.service() for servlet TuscanyServlet threw exception
> java.lang.IllegalStateException: No servlet registered for path: /
>         at org.apache.tuscany.sca.webapp.TuscanyServlet.service(
> TuscanyServlet.java:57)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:290)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:206)
>         at org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:230)
>         at org.apache.catalina.core.StandardContextValve.invoke(
> StandardContextValve.java:175)
>         at org.apache.catalina.core.StandardHostValve.invoke (
> StandardHostValve.java:128)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(
> ErrorReportValve.java:104)
>         at org.apache.catalina.core.StandardEngineValve.invoke(
> StandardEngineValve.java:109)
>         at org.apache.catalina.connector.CoyoteAdapter.service(
> CoyoteAdapter.java:261)
>         at org.apache.coyote.http11.Http11Processor.process(
> Http11Processor.java:844)
>         at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
> Http11Protocol.java:581)
>         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(
> JIoEndpoint.java:447)
>         at java.lang.Thread.run(Thread.java:595)
>
> I did some debugging on this and it seems that the servlet tries to
> obtain a mapping from a Map, which is empty. Is this a bug or am I
> just missing something in my .composite file or WSDL?
>
> Also, did you create the WSDL file manually or did you use any
> generation tool provided by Tuscany?
>
> Thanks,
> Radim
>
> On 7/25/07, Raymond Feng <[EMAIL PROTECTED]> wrote:
> > Hi, Radim.
> >
> > I'm not very sure if we already have the support to deploy an SCA
> service as
> > a web service without WSDL. If not, that's something we want to
support
> for
> > sure.
> >
> > We have a sample to demonstrate the usage of SCA, web service and SDO.
> It
> > seems to be what you are looking for. You can see the sample code at:
> >
> >
https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/helloworld-ws-sdo
>
> >
> > Thanks,
> > Raymond
> >
> > ----- Original Message -----
> > From: "Radim Kolarik" < [EMAIL PROTECTED]>
> > To: < [email protected]>
> > Sent: Wednesday, July 25, 2007 7:38 AM
> > Subject: Services and WSDL files
> >
> >
> > > Hi,
> > >
> > > Is it necessary to supply wsdl file if I want to deploy an SCA
service
> as
> > > a
> > > web service? Or can Tuscany generate the file "on the fly"?
> > >
> > > If I need to supply the file myself, what would be the best way to
> > > generate
> > > the file? Is it possible to generate the file for SDOs, if they are
> > > service
> > > parameters or if a service returns an SDO object as its result?
> > >
> > > Thanks,
> > > Radim
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
> Hi Radim

Someone else is asking a similar question [1]. As part of this I made a
sample [2] to experiment with exposing web services through the web app
container. There are a few wrinkles in getting this to work. To make it
work
I hand created WSDL conatining a service URL that matched where I knew the
service was going to be deployed. For example.

In the sample [2] the URL that is registered with the web app relates to
the
single service that is described in the  .composite file [3]

    <component name="AddServiceComponent">
        <implementation.java class="calculator.AddServiceImpl"/>
        <service name="AddService">
            <interface.java interface="calculator.AddService" />
            <binding.ws
wsdlElement="http://calculator#wsdl.port(AddService/AddSoapPort)
<http://calculator/#wsdl.port%28AddService/AddSoapPort%29>"/>
        </service>
    </component>

And, in this case, takes its value from the WSDL service description [3]

    <wsdl:service name="AddService">

        <wsdl:port binding="tns:AddSoapBinding" name="AddSoapPort">

            <wsdlsoap:address
location="
http://localhost:8080/sample-calculator-webapp-ws/services/AddService"/>
        </wsdl:port>
    </wsdl:service>

I.e, I see the value.

http://localhost:8080/sample-calculator-webapp-ws/services/AddServiceregistered
in the WebAppServletHost

The important thing here is that the URL I hand edited into the WSDL file
matches the URL that the web app is deployed at. In my case I'm deploying
the WAR to tomcat and it ends up at
http://localhost:8080/sample-calculator-webapp-ws
. The web.xml file maps "/services" to the TuscanyServlet so that appears
too and finally the name of the service.

Now this all feels a little complicated to me, I.e Reading the spec I
would
expect just to be able to specify a service name and have the runtime
construct the URL automatically for me. In fact this is how I think the
TuscanyServlet is coded, in that it only looks for registered servlets
based
on path info, and what I think the assembly spec says.  The problem is it
doesn't appear to be easy to configure the .composite file with just path
info and also keep axis happy.  I've tried a few things, e.g.

<binding.ws>
< binding.ws uri="...">

But Axis complains. So maybe someone (Raymond?) can tell us what the magic
rune is to make this work but for the time being the code in trunk works
for
the sample.  I have opened JIRA TUSCANY-1481 on this so we have a marker
but
it sounds like you are making some progress debugging so  feel  free to
attach notes if you feel it's appropriate.

Regards

Simon


[1] http://www.mail-archive.com/tuscany-user%40ws.apache.org/msg01434.html
  Note. There are a couple of mails missing off this thread that I didn't
send to the user list by accident. Just forwarded them now so hopefully
the
archive will catch up sortly

[2]http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/calculator-webapp-ws/

[3]http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/calculator-webapp-ws/src/main/resources/Calculator.composite

[4]http://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/calculator-webapp-ws/src/main/resources/wsdl/add.wsdl


See:
http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev/200707.mbox/browser
and: http://incubator.apache.org/tuscany/sca-java-bindingws.html

Basically, if you reference the WSDL port it will use that, otherwise the
url is constructed from the component name, service name and binding URI. I
find for services its easiest to just leave it all out eg ,<binding.ws/>, in
which case the uri will be the [webappSerletUrl]/componentName/serviceName,
and for references to explicitly use the uri attribute, eg <binding.ws uri="
http://somehost/someService"; />

  ...ant

Reply via email to