On 7/26/07, ant elder <[EMAIL PROTECTED]> wrote:

That sounds a lot like the dependencies aren't quite correct. We've
actually
just started talking about this on the dev list to come up with a way to
make this much easier for app developers. Anyway, if you take a look at
the
helloworld sample i just committed [1] that shows about the simplest i
could
come up with that shows how to do what you want. You can call that webapp
service by using the tuscany helloworld-ws-reference sample by changing
the
wsdl port location to be:

http://localhost:8080/sample-helloworld-ws-service-webapp/SCA/HelloWorldComponent/HelloWorldService

I'll go try to get the calculator-webapp-ws sample working as well so
there's two examples.

   ...ant

[1]

https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/helloworld-ws-service-webapp


On 7/26/07, Radim Kolarik <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> I made some progress with this, but it doesn't do exactly what I need it
> to do.
>
> In my META-INF folder, I have sca-contribution.xml file, which looks
like
> this:
> <contribution xmlns="http://www.osoa.org/xmlns/sca/1.0";
>               targetNamespace="http://helloworld";
>               xmlns:sample="http://helloworld";>
>    <deployable composite="sample:helloworldws"/>
> </contribution>
>
> This is my .composite file:
> <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
> wsdlElement="
> http://helloworld#wsdl.port(HelloWorldService/HelloWorldSoapPort)"/>
>             </service>
>       <implementation.java class="helloworld.HelloWorldImpl" />
>     </component>
>
> </composite>
>
> The important section in the WSDL file is:
>     <wsdl:service name="HelloWorldService">
>         <wsdl:port binding="tns:HelloWorldSoapBinding"
> name="HelloWorldSoapPort">
>             <wsdlsoap:address
> location="
>
http://localhost:8090/helloworldServiceWAR/HelloWorldServiceComponent/HelloWorldService
> "/>
>         </wsdl:port>
>     </wsdl:service>
>
> Now my Tomcat is running on port 8080. As you can see, I had to
> specify port 8090 in WSDL, which made my service WSDL accessible via:
>
>
http://localhost:8090/helloworldServiceWAR/HelloWorldServiceComponent/HelloWorldService?wsdl
>
> When I had the port in WSDL file set to 8080, I got an exception:
> java.net.BindException: Address already in use: bind
>
> That would suggest that some "standalone" engine is being inicialized
> which binds the service to port specified in WSDL. But what if I
> wanted the service to be handled directly by Tomcat? Would it be
> possible?
>
> By the way, my webapp uses the same JAR files in its WEB-INF/lib
> directory as were created using maven build of calculator-webapp-ws
> sample (I understand that I shouldn't have
> tuscany-sca-all-0.90-incubating.jar in web application class path).
>
> Thanks,
> Radim
>
> On 7/26/07, Simon Laws <[EMAIL PROTECTED]> wrote:
> > On 7/26/07, ant elder <[EMAIL PROTECTED]> wrote:
> > >
> > > 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
> > > > >
> > > >
> > >
> > There is a calculator-webapp-ws sample also
> >
> > Simon
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


It's caused by leaving the tuscany-host-jetty jar in the classpath of the
web app. I.e. when I started my web app inside of Tomcat jetty was also
being started. You need to remove the tuscany-host-jetty jar from the
WEB-INF/lib dir.. It's there so the sample can be tested as part of the
maven build but we need a better way of doing this as it implies the manual
step.

Simon

Reply via email to