That composite you have unfortunately wont work with Tuscany as we don't yet support web services without pre-existing wsdl. So you need to change either the <binding.ws> to reference a wsdl or change the <service> to use < interface.wsdl>. Thats on the current plan to fix in the next release which is targeted for August. This has come up a few times recently so i'll go start work on that now.
I have a helloworld-ws-service webapp sample that I've just noticed I've never committed, i'll commit that now so there's at least something that can be used as a base to start from. Additionally on the url below, it shouldn't have a slash before ?wsdl so should be: http://localhost:8080/helloworldServiceWAR/HelloWorldServiceComponent/HelloWorldService?wsdl ...ant On 7/26/07, Radim Kolarik <[EMAIL PROTECTED]> wrote:
Hi Ant, I tried it as you suggested, so I deployed the service with <binding.ws/> only, and tried to access the application using the : [webappSerletUrl]/componentName/serviceName but without success. I am still getting the No servlet registered for path: /HelloWorldServiceComponent/HelloWorldService/ exception. Here is the helloworldws.composite file that I use: <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://helloworld" xmlns:hw="http://helloworld" name="helloworldws"> <component name="HelloWorldServiceComponent"> <service name="HelloWorldService"> <interface.java interface="helloworld.HelloWorldService" /> <binding.ws/> </service> <implementation.java class="helloworld.HelloWorldImpl" /> </component> </composite> and the URL that doesn't work is http://localhost:8080/helloworldServiceWAR/HelloWorldServiceComponent/HelloWorldService/?wsdl Thanks, Radim On 7/26/07, ant elder <[EMAIL PROTECTED]> wrote: > 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.wsuri=" > http://somehost/someService" /> > > ...ant >
