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
