You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by ri...@multi-support.com on 2007/07/10 14:48:13 UTC

Axis2: RESTful implementation with Axis2

Hi,

I have some questions regarding implementing a RESTfull service. After
reading a lot of previous RESTish threads I got quite confused.
So I hope someone can help me straightened it out.

If I want to create a RESTful service with Axis2 would it then require that
the service is implemented as RPC, or can other message receivers be used?


Is it possible to create a RESTful service with Axis2 that can be reached
in the following way:
http://www.boeing.com/rest/aircraft/747
instead of
http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747


First i actually thought that a RESTful service should implement some sort
of interface with methods corresponding to GET, POST, PUT & DELETE.
But I read in some of the other threads that a RESTful service should only
have one method. Isn't that a problem if you try to accomplice the syntax
that the following articles describes.

http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html
http://www.xfront.com/REST-Web-Services.html

Where the same url has different functionality depending on how it is
called (GET, POST).
GET   /order/{id} Get order details
POST  /order/{id} Add item

Regards
Multi-Support A/S

Torben Riis
--------------------------------------------------------------------
Phone +45 96 600 600, Fax +45 96 600 601
E-mail: riis@multi-support.com
http://www.multi-support.com


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2: RESTful implementation with Axis2

Posted by Anne Thomas Manes <at...@gmail.com>.
My guess is that your IDE does not support WSDL 2.0 -- it's looking
for a "portType", but in WSDL 2.0, "portType" has been replaced by
"interface".

Anne

On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
> Hi Keith,
>
> I have some problems generating stub/skeletons for your wsdl.
>
> My IDE gives the following validation error for WeatherHTTPBinding.
>
>       WSDL: Missing port type for binding {http://example.axis2.apache.org}
> WeatherHTTPBinding
>
> What does I miss?
>
> Regards
> Multi-Support A/S
>
> Torben Riis
> --------------------------------------------------------------------
> Phone +45 96 600 600, Fax +45 96 600 601
> E-mail: riis@multi-support.com
> http://www.multi-support.com
>
>
>
>              "keith chapman"
>              <keithgchapman@gm
>              ail.com>                                                   To
>                                        axis-user@ws.apache.org
>              11-07-2007 09:27                                           cc
>
>                                                                    Subject
>              Please respond to         Re: Axis2: RESTful implementation
>              axis-user@ws.apac         with Axis2
>                   he.org
>
>
>
>
>
>
>
>
>
> here is a sample Weather.wsdl2. Please let me know if you need any
> clarifications.
>
> <description xmlns="http://www.w3.org/ns/wsdl"
>              targetNamespace=" http://example.axis2.apache.org"
>              xmlns:tns="http://example.axis2.apache.org"
>              xmlns:wsoap=" http://www.w3.org/ns/wsdl/soap"
>              xmlns:whttp="http://www.w3.org/ns/wsdl/http"
>              xmlns:xsd1=" http://example.axis2.apache.org/xsd"
>              xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
>     <documentation>
>         Just a sample service to explain WSDL 2.0 semantics
>     </documentation>
>
>     <types>
>         <xs:schema elementFormDefault="qualified"
>                    targetNamespace=" http://example.axis2.apache.org/xsd"
>                    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>                    xmlns:xsd1=" http://example.axis2.apache.org/xsd">
>
>             <xs:element name="weather" type="xsd1:weatherStructType"/>
>             <xs:complexType name="weatherStructType">
>                 <xs:sequence>
>                     <xs:element name="temparature" type="xs:int"/>
>                     <xs:element name="sky" type="xs:string"/>
>                 </xs:sequence>
>             </xs:complexType>
>
>             <xs:element name="location" type="xsd1:locationStructType"/>
>             <xs:complexType name="locationStructType">
>                 <xs:sequence>
>                     <xs:element name="country" type="xs:string"/>
>                     <xs:element name="city" type="xs:string"/>
>                 </xs:sequence>
>             </xs:complexType>
>
>             <xs:element name="response" type="xs:string"/>
>
>             <xs:element name="weatherFault"
> type="xsd1:weatherFaultStructType"/>
>             <xs:complexType name="weatherFaultStructType">
>                 <xs:sequence>
>                     <xs:element name="Fault" type="xs:string"/>
>                     <xs:element name="country" type="xs:string"/>
>                     <xs:element name="city" type="xs:string"/>
>                 </xs:sequence>
>             </xs:complexType>
>
>             <xs:element name="weatherDetails"
> type="xsd1:weatherDetailsStructType"/>
>             <xs:complexType name="weatherDetailsStructType">
>                 <xs:sequence>
>                     <xs:element name="weather"
> type="xsd1:weatherStructType"/>
>                     <xs:element name="location"
> type="xsd1:locationStructType"/>
>                 </xs:sequence>
>             </xs:complexType>
>         </xs:schema>
>     </types>
>
>     <interface name="Weather">
>         <documentation>
>             This is where the abstract descriptions of the operations are
> given. Note that WSDL 2.0
>             has the concept of reusing faults, hence they are described at
> the interface level.
>         </documentation>
>         <fault name="weatherFault" element="xsd1:weatherFault"></fault>
>
>         <operation name="getWeather" pattern="
> http://www.w3.org/ns/wsdl/in-out">
>             <input element="xsd1:location"/>
>             <output element="xsd1:weather"/>
>             <outfault ref="tns:weatherFault"/>
>         </operation>
>
>         <operation name="setWeather" pattern="
> http://www.w3.org/ns/wsdl/in-out">
>             <input element="xsd1:weatherDetails"/>
>             <output element="xsd1:response"/>
>             <outfault ref="tns:weatherFault"/>
>         </operation>
>
>     </interface>
>
>     <binding name="WeatherHTTPBinding" interface="tns:Weather"
>              type="http://www.w3.org/ns/wsdl/http">
>         <documentation>
>             This binding binds the weather interface to RESTish style
> invocations.
>             NOTE : The URL for the operation is constracted by resolving
> the httplocation against
>             the base uri.
>             e.g. If the country was srilanka and the city was colombo then
> the URL will be
>
> http://example.org/WeatherService/WeatherServiceSOAPEndpoint/Weather/srilanka/colombo
>
>         </documentation>
>         <fault ref="tns:weatherFault" whttp:code="402"/>
>         <operation ref="tns:getWeather" whttp:method="GET"
>
> whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>
>         <operation ref="tns:setWeather" whttp:method="PUT"
>
> whttp:location="WeatherServiceHTTPEndpoint/Update/{country}/{city}"/>
>         <!--Ideally this should be as follows. Will fux it in the trunk-->
>         <!--<operation ref="tns:setWeather" whttp:method="POST"
> whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>-->
>     </binding>
>
>     <service name="WeatherService" interface="tns:Weather">
>         <endpoint name="WeatherServiceHTTPEndpoint"
> binding="tns:WeatherHTTPBinding"
>                   address="
> http://example.org/WeatherService/WeatherServiceHTTPEndpoint/ "/>
>     </service>
>
> </description>
>
> Thanks,
> Keith.
>
> On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>       Hi Keith,
>
>       An example would be very nice. ;-)
>       An example where you format the URL in a RESTish style would be
>       perfect.
>       Maybe with both GET & POST if it isn't too much trouble.
>
>       Thanks a lot.
>
>       Regards
>       Multi-Support A/S
>
>       Torben Riis
>       --------------------------------------------------------------------
>       Phone +45 96 600 600, Fax +45 96 600 601
>       E-mail: riis@multi-support.com
>       http://www.multi-support.com
>
>
>
>                    "keith chapman"
>                    <keithgchapman@gm
>                    ail.com >
>       To
>                                              axis-user@ws.apache.org
>                    11-07-2007 07:40
>       cc
>
>
>       Subject
>                    Please respond to         Re: Axis2: RESTful
>       implementation
>                    axis-user@ws.apac          with Axis2
>                         he.org
>
>
>
>
>
>
>
>
>
>       The WSDL 2.0 primer  is a good starting place. It takes you through
>       the
>       concepts of WSDL 2.0 very nicely (without making things too complex).
>       WSDL
>       2.0 is a whole lot clean and easy to understand. If you like I can
>       write a
>       sample WSDL 2.0 doc for you if you have an example in mind :).
>
>       And yes you can use the http methods GET, POST, PUT & DELETE in the
>       same
>       service. Its just that you cant use them on the same operation.
>
>       Thanks,
>       Keith.
>
>       On 7/11/07, riis@multi-support.com < riis@multi-support.com> wrote:
>
>             Hi Keith,
>
>             Thank you for answering.
>
>             When I earlier talked about using the http methods GET, POST,
>       PUT &
>             DELETE,
>             I actually meant using them in the same service.
>
>             WSDL 2.0 really sounds interesting.
>
>             I have a little knowledge about WSDL 1.1/1.2, because I'm
>       studying
>             for the
>             SCDJWS exam, but I doesn't know anything about WSDL 2.0.
>             I guess a lot has changed since it is possible to describe how
>       the
>             URL
>             should be formatted and whether  to use http methods GET, POST,
>       PUT
>             or
>             DELETE.
>
>             Do you have or know a place where I can find simple example
>       WSDL
>             describing
>             such a service?
>             Or would it be best just start reading WSDL 2.0 HTTPBinding.
>
>
>             Regards
>             Multi-Support A/S
>
>             Torben Riis
>
>       --------------------------------------------------------------------
>             Phone +45 96 600 600, Fax +45 96 600 601
>             E-mail: riis@multi-support.com
>             http://www.multi-support.com
>
>
>
>                          "keith chapman"
>                          < keithgchapman@gm
>                          ail.com>
>             To
>                                                    axis-user@ws.apache.org
>                          11-07-2007 06:45
>             cc
>
>
>             Subject
>                          Please respond to         Re: Axis2: RESTful
>             implementation
>                          axis-user@ws.apac         with Axis2
>                               he.org
>
>
>
>
>
>
>
>
>
>             See comments inline.
>
>             On 7/10/07, riis@multi-support.com <riis@multi-support.com >
>       wrote:
>
>                   Hi,
>
>                   I have some questions regarding implementing a RESTfull
>             service.
>                   After
>                   reading a lot of previous RESTish threads I got quite
>       confused.
>                   So I hope someone can help me straightened it out.
>
>                   If I want to create a RESTful service with Axis2 would it
>       then
>                   require that
>                   the service is implemented as RPC, or can other message
>             receivers be
>                   used?
>
>
>                   Is it possible to create a RESTful service with Axis2
>       that can
>             be
>                   reached
>                   in the following way:
>                   http://www.boeing.com/rest/aircraft/747
>                   instead of
>
>
>       http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747
>
>             Yes this can be done. REST support in Axis2 was achieved  via
>       the
>             WSDL 2.0
>             HTTPBinding (If you are not familiar with WSDL this might sound
>       a bit
>             strange). The kind of question you asked can easily be done by
>             deploying
>             your service via a WSDL 2.0 description. Please have a look at
>       the
>             primer
>             it has some easy to understand examples.
>
>                   First i actually thought that a RESTful service should
>             implement some
>                   sort
>                   of interface with methods corresponding to GET, POST, PUT
>       &
>             DELETE.
>                   But I read in some of the other threads that a RESTful
>       service
>             should
>                   only
>                   have one method. Isn't that a problem if you try to
>       accomplice
>             the
>                   syntax
>                   that the following articles describes.
>
>             Yes you can use all 4 HTTP methods described above, depending
>       on your
>             requirement. Its all about using the appropriate method (Not
>       that you
>             must
>             use just one method)
>
>
>
>       http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html
>
>
>
>                    http://www.xfront.com/REST-Web-Services.html
>
>                   Where the same url has different functionality depending
>       on how
>             it is
>
>                   called (GET, POST).
>                   GET   /order/{id} Get order details
>                   POST  /order/{id} Add item
>
>             the current version of Axis2 does not support this (But it can
>       be
>             included,
>             I will file a JIRA on this and try to get it into the 1.3
>       release.)
>
>             Please let us know if you need more help (Can even assist you
>       in
>             writing
>             down the WSDL 2.0 description)
>
>             Thanks,
>             Keith.
>
>                   Regards
>                   Multi-Support A/S
>
>                   Torben Riis
>
>
>       --------------------------------------------------------------------
>                   Phone +45 96 600 600, Fax +45 96 600 601
>                   E-mail: riis@multi-support.com
>                   http://www.multi-support.com
>
>
>
>
>       ---------------------------------------------------------------------
>
>
>                   To unsubscribe, e-mail:
>       axis-user-unsubscribe@ws.apache.org
>                   For additional commands, e-mail:
>       axis-user-help@ws.apache.org
>
>
>
>
>             --
>             Keith Chapman
>             WSO2 Inc.
>             Oxygen for Web Services Developers.
>             http://wso2.org/
>
>
>
>       ---------------------------------------------------------------------
>
>
>             To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>             For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
>       --
>       Keith Chapman
>       WSO2 Inc.
>       Oxygen for Web Services Developers.
>       http://wso2.org/
>
>
>       ---------------------------------------------------------------------
>
>       To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>       For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
> --
> Keith Chapman
> WSO2 Inc.
> Oxygen for Web Services Developers.
> http://wso2.org/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2: RESTful implementation with Axis2

Posted by ri...@multi-support.com.
Hi,

I tried with the below urls and got different responses.

http://localhost:8080/axis2/services/WeatherService/Weather/Denmark/Herning
<Exception>org.apache.axis2.AxisFault: The endpoint reference (EPR) for the
Operation not found is
/axis2/services/WeatherService/Weather/Denmark/Herning and the WSA Action =
null at
org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:85)
 at org.apache.axis2.engine.Phase.invoke(Phase.java:308) at
org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212) at
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:132) at
org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:125)
 at
org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:119)
 at org.apache.axis2.transport.http.HTTPWorker.service(HTTPWorker.java:229)
at
org.apache.axis2.transport.http.server.AxisHttpService.doService(AxisHttpService.java:256)
 at
org.apache.axis2.transport.http.server.AxisHttpService.handleRequest(AxisHttpService.java:163)
 at
org.apache.axis2.transport.http.server.HttpServiceProcessor.run(HttpServiceProcessor.java:85)
 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:803)
</Exception>

http://localhost:8080/axis2/services/WeatherService/getWeather
<Exception>java.lang.StringIndexOutOfBoundsException at
java.lang.StringBuffer.substring(StringBuffer.java:881) at
org.apache.axis2.builder.XFormURLEncodedBuilder.extractParametersUsingHttpLocation(XFormURLEncodedBuilder.java:284)
 at
org.apache.axis2.builder.XFormURLEncodedBuilder.processDocument(XFormURLEncodedBuilder.java:99)
 at
org.apache.axis2.transport.TransportUtils.createDocumentElement(TransportUtils.java:150)
 at
org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:105)
 at
org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:101)
 at org.apache.axis2.transport.http.HTTPWorker.service(HTTPWorker.java:229)
at
org.apache.axis2.transport.http.server.AxisHttpService.doService(AxisHttpService.java:256)
 at
org.apache.axis2.transport.http.server.AxisHttpService.handleRequest(AxisHttpService.java:163)
 at
org.apache.axis2.transport.http.server.HttpServiceProcessor.run(HttpServiceProcessor.java:85)
 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:803)
</Exception>

Regards
Multi-Support A/S

Torben Riis
--------------------------------------------------------------------
Phone +45 96 600 600, Fax +45 96 600 601
E-mail: riis@multi-support.com
http://www.multi-support.com


                                                                           
             "keith chapman"                                               
             <keithgchapman@gm                                             
             ail.com>                                                   To 
                                       axis-user@ws.apache.org             
             12-07-2007 11:31                                           cc 
                                                                           
                                                                   Subject 
             Please respond to         Re: Axis2: RESTful implementation   
             axis-user@ws.apac         with Axis2                          
                  he.org                                                   
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




You should be able to, provided that the system has the relavant data to
return. Did you get back any error or anyhing as such?

Thanks,
Keith.

On 7/12/07, riis@multi-support.com <ri...@multi-support.com> wrote:

      Hi Keith,

      I tried 1.3 RC1, and with success.
      Axis2 now starts without any errors.

      But I can't activate the REST service from an url.

      Should I not be able to reach it with the following url?
      http://localhost:8080/axis2/services/WeatherService/Weather/Denmark/Herning


      Or have I misunderstood the new HTTPBinding.
            <operation ref="tns:getWeather" whttp:method="GET"
      whttp:location=
      "WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>

      I have attached my generated code if it can be any help.

      (See attached file: WeatherService.zip)

      Regards
      Multi-Support A/S

      Torben Riis
      --------------------------------------------------------------------
      Phone +45 96 600 600, Fax +45 96 600 601
      E-mail: riis@multi-support.com
      http://www.multi-support.com



                   "keith chapman"
                   < keithgchapman@gm
                   ail.com>
      To
                                             axis-user@ws.apache.org
                   11-07-2007 12:16
      cc


      Subject
                   Please respond to         Re: Axis2: RESTful
      implementation
                   axis-user@ws.apac         with Axis2
                        he.org









      You can even try the 1.3 RCI available here.

      http://people.apache.org/~deepal/axis2/1.3-RC1/

      If you continue to have any problems just post your aar so that I can
      have
      a look.

      Thanks,
      Keith.

      On 7/11/07, riis@multi-support.com <riis@multi-support.com > wrote:

            Hi Keith,

            I forgot specify the argument (-wv) on wsdl2java.  My mistake.
      :-)
            I can see that eclipse gives another validation, than the one
      from
            Rational
            Application Developer 7. Maybe it just doesn't support WSDL 2.0
            validation....
            But anyway, wsdl2java generates skeleton code without errors
      now.

            But I get another  error during startup of Axis2 now.
            org.apache.axis2.deployment.repository.util.ArchiveReader -
      Trouble
            processing wsdl file :Illegal character in opaque part at index
      2:
            .....\webapps\WeatherService\WEB-INF\services\weather\META-INF

            Should I try the nightly build instead? Right now I'm using
      Axis2
            1.2.

            Regards
            Multi-Support A/S

            Torben Riis

      --------------------------------------------------------------------
            Phone +45 96 600 600, Fax +45 96 600 601
            E-mail: riis@multi-support.com
            http://www.multi-support.com



                         "keith chapman"
                         < keithgchapman@gm
                         ail.com>
            To
                                                   axis-user@ws.apache.org
                         11-07-2007 11:08
            cc


            Subject
                         Please respond to         Re: Axis2: RESTful
            implementation
                         axis-user@ws.apac         with Axis2
                               he.org









            Which version of Axis2 are you using?

            I would recoment 1.2 or even a nightly or the 1.3 RC

            Thanks,
            Keith.

            On 7/11/07, riis@multi-support.com <riis@multi-support.com >
      wrote:

                  Hi Keith,

                  I have some problems generating stub/skeletons for your
      wsdl.

                  My IDE gives the following validation error for
            WeatherHTTPBinding.

                        WSDL: Missing port type for binding {
                  http://example.axis2.apache.org }
                  WeatherHTTPBinding

                  What does I miss?

                  Regards
                  Multi-Support A/S

                  Torben Riis


      --------------------------------------------------------------------
                  Phone +45 96 600 600, Fax +45 96 600 601
                  E-mail: riis@multi-support.com
                   http://www.multi-support.com



                               "keith chapman"
                               < keithgchapman@gm
                               ail.com>
                  To

      axis-user@ws.apache.org
                               11-07-2007 09:27
                  cc


                  Subject
                               Please respond to         Re: Axis2: RESTful

                  implementation
                               axis-user@ws.apac         with Axis2
                                    he.org









                  here is a sample Weather.wsdl2. Please let me know if you
      need
            any
                  clarifications.

                  <description xmlns=" http://www.w3.org/ns/wsdl"
                               targetNamespace="
      http://example.axis2.apache.org
            "
                               xmlns:tns=" http://example.axis2.apache.org"
                               xmlns:wsoap=" http://www.w3.org/ns/wsdl/soap
      "
                               xmlns:whttp=" http://www.w3.org/ns/wsdl/http
      "
                               xmlns:xsd1="
      http://example.axis2.apache.org/xsd "
                               xmlns:xs="http://www.w3.org/2001/XMLSchema">

                      <documentation>
                          Just a sample service to explain WSDL 2.0
      semantics
                      </documentation>

                      <types>
                          <xs:schema elementFormDefault="qualified"
                                     targetNamespace="
                  http://example.axis2.apache.org/xsd "
                                     xmlns:xs="
      http://www.w3.org/2001/XMLSchema "
                                     xmlns:xsd1="
            http://example.axis2.apache.org/xsd
                  ">

                              <xs:element name="weather"
                  type="xsd1:weatherStructType"/>
                              <xs:complexType name="weatherStructType">
                                  <xs:sequence>
                                      <xs:element name="temparature"
            type="xs:int"/>
                                      <xs:element name="sky"
      type="xs:string"/>
                                  </xs:sequence>
                              </xs:complexType>

                              <xs:element name="location"
                  type="xsd1:locationStructType"/>
                              <xs:complexType name="locationStructType">
                                  <xs:sequence>
                                      <xs:element name="country"
            type="xs:string"/>
                                      <xs:element name="city"
      type="xs:string"/>
                                  </xs:sequence>
                              </xs:complexType>

                              <xs:element name="response"
      type="xs:string"/>

                              <xs:element name="weatherFault"
                  type="xsd1:weatherFaultStructType"/>
                              <xs:complexType
      name="weatherFaultStructType">
                                  <xs:sequence>
                                      <xs:element name="Fault"
      type="xs:string"/>
                                      <xs:element name="country"
            type="xs:string"/>
                                      <xs:element name="city"
      type="xs:string"/>
                                  </xs:sequence>
                              </xs:complexType>

                              <xs:element name="weatherDetails"
                  type="xsd1:weatherDetailsStructType"/>
                              <xs:complexType
      name="weatherDetailsStructType">
                                  <xs:sequence>
                                      <xs:element name="weather"
                  type="xsd1:weatherStructType"/>
                                      <xs:element name="location"
                  type="xsd1:locationStructType"/>
                                  </xs:sequence>
                              </xs:complexType>
                          </xs:schema>
                      </types>

                      <interface name="Weather">
                          <documentation>
                              This is where the abstract descriptions of
      the
            operations
                  are
                  given. Note that WSDL 2.0
                              has the concept of reusing faults, hence they
      are
                  described at
                  the interface level.
                          </documentation>
                          <fault name="weatherFault"
                  element="xsd1:weatherFault"></fault>

                          <operation name="getWeather" pattern="
                  http://www.w3.org/ns/wsdl/in-out ">
                              <input element="xsd1:location"/>
                              <output element="xsd1:weather"/>
                              <outfault ref="tns:weatherFault"/>
                          </operation>

                          <operation name="setWeather" pattern="
                  http://www.w3.org/ns/wsdl/in-out">
                              <input element="xsd1:weatherDetails"/>
                              <output element="xsd1:response"/>
                              <outfault ref="tns:weatherFault"/>
                          </operation>

                      </interface>

                      <binding name="WeatherHTTPBinding"
      interface="tns:Weather"
                               type="http://www.w3.org/ns/wsdl/http">
                          <documentation>
                              This binding binds the weather interface to
      RESTish
            style
                  invocations.
                              NOTE : The URL for the operation is
      constracted by
                  resolving
                  the httplocation against
                              the base uri.
                              e.g. If the country was srilanka and the city
      was
            colombo
                  then
                  the URL will be



      http://example.org/WeatherService/WeatherServiceSOAPEndpoint/Weather/srilanka/colombo




                          </documentation>
                          <fault ref="tns:weatherFault" whttp:code="402"/>
                          <operation ref="tns:getWeather"
      whttp:method="GET"



      whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>



                          <operation ref="tns:setWeather"
      whttp:method="PUT"



      whttp:location="WeatherServiceHTTPEndpoint/Update/{country}/{city}"/>
                          <!--Ideally this should be as follows. Will fux
      it in
            the
                  trunk-->
                          <!--<operation ref="tns:setWeather"
      whttp:method="POST"



      whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>-->



                      </binding>

                      <service name="WeatherService"
      interface="tns:Weather">
                          <endpoint name="WeatherServiceHTTPEndpoint"
                  binding="tns:WeatherHTTPBinding"
                                    address="

      http://example.org/WeatherService/WeatherServiceHTTPEndpoint/
            "/>
                      </service>

                  </description>

                  Thanks,
                  Keith.

                  On 7/11/07, riis@multi-support.com <
      riis@multi-support.com>
            wrote:

                        Hi Keith,

                        An example would be very nice. ;-)
                        An example where you format the URL in a RESTish
      style
            would be

                        perfect.
                        Maybe with both GET & POST if it isn't too much
      trouble.

                        Thanks a lot.

                        Regards
                        Multi-Support A/S

                        Torben Riis



      --------------------------------------------------------------------
                        Phone +45 96 600 600, Fax +45 96 600 601
                        E-mail: riis@multi-support.com
                        http://www.multi-support.com



                                     "keith chapman"
                                     < keithgchapman@gm
                                     ail.com >
                        To

            axis-user@ws.apache.org
                                     11-07-2007 07:40
                        cc


                        Subject
                                     Please respond to         Re: Axis2:
      RESTful
                        implementation
                                     axis-user@ws.apac           with Axis2
                                          he.org









                        The WSDL 2.0 primer  is a good starting place. It
      takes
            you
                  through
                        the
                        concepts of WSDL 2.0 very nicely (without making
      things
            too
                  complex).
                        WSDL
                         2.0 is a whole lot clean and easy to understand.
      If you
            like I
                  can
                        write a
                        sample WSDL 2.0 doc for you if you have an example
      in
            mind :).

                        And yes you can use the http methods GET, POST, PUT
      &
            DELETE in
                  the
                        same
                        service. Its just that you cant use them on the
      same
            operation.

                        Thanks,
                        Keith.

                        On 7/11/07, riis@multi-support.com <
            riis@multi-support.com>
                  wrote:

                              Hi Keith,

                              Thank you for answering.

                              When I earlier talked about using the http
      methods
            GET,
                  POST,
                        PUT &
                              DELETE,
                              I actually meant using them in the same
      service.

                              WSDL 2.0 really sounds interesting.

                              I have a little knowledge about WSDL 1.1/1.2,
            because I'm
                        studying
                              for the
                              SCDJWS exam, but I doesn't know anything
      about WSDL
            2.0.
                              I guess a lot has changed since it is
      possible to
                  describe how
                        the
                              URL
                              should be formatted and whether  to use http
            methods GET,
                  POST,
                        PUT
                              or
                              DELETE.

                              Do you have or know a place where I can find
      simple
                  example
                        WSDL
                              describing
                              such a service?
                              Or would it be best just start reading WSDL
      2.0
                  HTTPBinding.


                              Regards
                              Multi-Support A/S

                              Torben Riis




      --------------------------------------------------------------------
                              Phone +45 96 600 600, Fax +45 96 600 601
                              E-mail: riis@multi-support.com
                              http://www.multi-support.com



                                           "keith chapman"
                                           < keithgchapman@gm
                                           ail.com>
                              To

                   axis-user@ws.apache.org
                                           11-07-2007 06:45
                              cc


                              Subject
                                           Please respond to         Re:
      Axis2:
            RESTful
                              implementation
                                           axis-user@ws.apac          with
      Axis2
                                                 he.org









                              See comments inline.

                              On 7/10/07, riis@multi-support.com <
                   riis@multi-support.com >
                        wrote:

                                    Hi,

                                    I have some questions regarding
      implementing
            a
                  RESTfull
                              service.
                                    After
                                    reading a lot of previous RESTish
      threads I
            got
                  quite
                        confused.
                                    So I hope someone can help me
      straightened it
            out.

                                    If I want to create a RESTful service
      with
            Axis2
                  would it
                        then
                                    require that
                                    the service is implemented as RPC, or
      can
            other
                  message
                              receivers be
                                    used?


                                    Is it possible to create a RESTful
      service
            with
                  Axis2
                        that can
                              be
                                    reached
                                    in the following way:
                                    http://www.boeing.com/rest/aircraft/747
                                    instead of





      http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747

                              Yes this can be done. REST support in Axis2
      was
            achieved
                  via
                        the
                              WSDL 2.0
                              HTTPBinding (If you are not familiar with
      WSDL this
            might
                  sound
                        a bit
                              strange). The kind of question you asked can
      easily
            be
                  done by
                              deploying
                              your service via a WSDL 2.0 description.
      Please
            have a
                  look at
                        the
                              primer
                              it has some easy to understand examples.

                                    First i actually thought that a RESTful

            service
                  should
                              implement some
                                    sort
                                    of interface with methods corresponding
      to
            GET,
                  POST, PUT
                        &
                              DELETE.
                                    But I read in some of the other threads
      that
            a
                  RESTful
                        service
                              should
                                    only
                                    have one method. Isn't that a problem
      if you
            try to

                        accomplice
                              the
                                    syntax
                                    that the following articles describes.

                              Yes you can use all 4 HTTP methods described
      above,
                  depending
                        on your
                              requirement. Its all about using the
      appropriate
            method
                  (Not
                        that you
                              must
                              use just one method)






      http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html







      http://www.xfront.com/REST-Web-Services.html


                                    Where the same url has different
            functionality
                  depending
                        on how
                              it is

                                    called (GET, POST).
                                    GET   /order/{id} Get order details
                                    POST  /order/{id} Add item

                              the current version of Axis2 does not support
      this
            (But
                  it can
                        be
                              included,
                              I will file a JIRA on this and try to get it
      into
            the 1.3
                        release.)

                              Please let us know if you need more help (Can
      even
            assist
                  you
                        in
                              writing
                              down the WSDL 2.0 description)

                              Thanks,
                              Keith.

                                    Regards
                                    Multi-Support A/S

                                    Torben Riis





      --------------------------------------------------------------------
                                    Phone +45 96 600 600, Fax +45 96 600
      601
                                    E-mail: riis@multi-support.com
                                     http://www.multi-support.com







      ---------------------------------------------------------------------


                                    To unsubscribe, e-mail:
                         axis-user-unsubscribe@ws.apache.org
                                    For additional commands, e-mail:
                         axis-user-help@ws.apache.org




                              --
                              Keith Chapman
                              WSO2 Inc.
                              Oxygen for Web Services Developers.
                              http://wso2.org/






      ---------------------------------------------------------------------



                              To unsubscribe, e-mail:
                  axis-user-unsubscribe@ws.apache.org
                              For additional commands, e-mail:
                   axis-user-help@ws.apache.org




                        --
                        Keith Chapman
                        WSO2 Inc.
                        Oxygen for Web Services Developers.
                         http://wso2.org/





      ---------------------------------------------------------------------

                        To unsubscribe, e-mail:
             axis-user-unsubscribe@ws.apache.org
                        For additional commands, e-mail:
            axis-user-help@ws.apache.org




                  --
                  Keith Chapman
                  WSO2 Inc.
                  Oxygen for Web Services Developers.
                  http://wso2.org/




      ---------------------------------------------------------------------

                  To unsubscribe, e-mail:
      axis-user-unsubscribe@ws.apache.org
                  For additional commands, e-mail:
      axis-user-help@ws.apache.org




            --
            Keith Chapman
            WSO2 Inc.
            Oxygen for Web Services Developers.
            http://wso2.org/



      ---------------------------------------------------------------------

            To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
            For additional commands, e-mail: axis-user-help@ws.apache.org




      --
      Keith Chapman
      WSO2 Inc.
      Oxygen for Web Services Developers.
      http://wso2.org/
      ---------------------------------------------------------------------
      To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
      For additional commands, e-mail: axis-user-help@ws.apache.org




--
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2: RESTful implementation with Axis2

Posted by keith chapman <ke...@gmail.com>.
You should be able to, provided that the system has the relavant data to
return. Did you get back any error or anyhing as such?

Thanks,
Keith.

On 7/12/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>
> Hi Keith,
>
> I tried 1.3 RC1, and with success.
> Axis2 now starts without any errors.
>
> But I can't activate the REST service from an url.
>
> Should I not be able to reach it with the following url?
>
> http://localhost:8080/axis2/services/WeatherService/Weather/Denmark/Herning
>
> Or have I misunderstood the new HTTPBinding.
>       <operation ref="tns:getWeather" whttp:method="GET" whttp:location=
> "WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>
>
> I have attached my generated code if it can be any help.
>
> (See attached file: WeatherService.zip)
>
> Regards
> Multi-Support A/S
>
> Torben Riis
> --------------------------------------------------------------------
> Phone +45 96 600 600, Fax +45 96 600 601
> E-mail: riis@multi-support.com
> http://www.multi-support.com
>
>
>
>              "keith chapman"
>              <keithgchapman@gm
>              ail.com>                                                   To
>                                        axis-user@ws.apache.org
>              11-07-2007 12:16                                           cc
>
>                                                                    Subject
>              Please respond to         Re: Axis2: RESTful implementation
>              axis-user@ws.apac         with Axis2
>                   he.org
>
>
>
>
>
>
>
>
>
> You can even try the 1.3 RCI available here.
>
> http://people.apache.org/~deepal/axis2/1.3-RC1/
>
> If you continue to have any problems just post your aar so that I can have
> a look.
>
> Thanks,
> Keith.
>
> On 7/11/07, riis@multi-support.com <riis@multi-support.com > wrote:
>
>       Hi Keith,
>
>       I forgot specify the argument (-wv) on wsdl2java.  My mistake. :-)
>       I can see that eclipse gives another validation, than the one from
>       Rational
>       Application Developer 7. Maybe it just doesn't support WSDL 2.0
>       validation....
>       But anyway, wsdl2java generates skeleton code without errors now.
>
>       But I get another  error during startup of Axis2 now.
>       org.apache.axis2.deployment.repository.util.ArchiveReader - Trouble
>       processing wsdl file :Illegal character in opaque part at index 2:
>       .....\webapps\WeatherService\WEB-INF\services\weather\META-INF
>
>       Should I try the nightly build instead? Right now I'm using Axis2
>       1.2.
>
>       Regards
>       Multi-Support A/S
>
>       Torben Riis
>       --------------------------------------------------------------------
>       Phone +45 96 600 600, Fax +45 96 600 601
>       E-mail: riis@multi-support.com
>       http://www.multi-support.com
>
>
>
>                    "keith chapman"
>                    < keithgchapman@gm
>                    ail.com>
>       To
>                                              axis-user@ws.apache.org
>                    11-07-2007 11:08
>       cc
>
>
>       Subject
>                    Please respond to         Re: Axis2: RESTful
>       implementation
>                    axis-user@ws.apac         with Axis2
>                         he.org
>
>
>
>
>
>
>
>
>
>       Which version of Axis2 are you using?
>
>       I would recoment 1.2 or even a nightly or the 1.3 RC
>
>       Thanks,
>       Keith.
>
>       On 7/11/07, riis@multi-support.com <riis@multi-support.com > wrote:
>
>             Hi Keith,
>
>             I have some problems generating stub/skeletons for your wsdl.
>
>             My IDE gives the following validation error for
>       WeatherHTTPBinding.
>
>                   WSDL: Missing port type for binding {
>             http://example.axis2.apache.org}
>             WeatherHTTPBinding
>
>             What does I miss?
>
>             Regards
>             Multi-Support A/S
>
>             Torben Riis
>
>       --------------------------------------------------------------------
>             Phone +45 96 600 600, Fax +45 96 600 601
>             E-mail: riis@multi-support.com
>              http://www.multi-support.com
>
>
>
>                          "keith chapman"
>                          < keithgchapman@gm
>                          ail.com>
>             To
>                                                    axis-user@ws.apache.org
>                          11-07-2007 09:27
>             cc
>
>
>             Subject
>                          Please respond to         Re: Axis2: RESTful
>             implementation
>                          axis-user@ws.apac         with Axis2
>                               he.org
>
>
>
>
>
>
>
>
>
>             here is a sample Weather.wsdl2. Please let me know if you need
>       any
>             clarifications.
>
>             <description xmlns="http://www.w3.org/ns/wsdl"
>                          targetNamespace=" http://example.axis2.apache.org
>       "
>                          xmlns:tns="http://example.axis2.apache.org"
>                          xmlns:wsoap=" http://www.w3.org/ns/wsdl/soap "
>                          xmlns:whttp="http://www.w3.org/ns/wsdl/http"
>                          xmlns:xsd1=" http://example.axis2.apache.org/xsd"
>                          xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
>                 <documentation>
>                     Just a sample service to explain WSDL 2.0 semantics
>                 </documentation>
>
>                 <types>
>                     <xs:schema elementFormDefault="qualified"
>                                targetNamespace="
>             http://example.axis2.apache.org/xsd "
>                                xmlns:xs=" http://www.w3.org/2001/XMLSchema
> "
>                                xmlns:xsd1="
>       http://example.axis2.apache.org/xsd
>             ">
>
>                         <xs:element name="weather"
>             type="xsd1:weatherStructType"/>
>                         <xs:complexType name="weatherStructType">
>                             <xs:sequence>
>                                 <xs:element name="temparature"
>       type="xs:int"/>
>                                 <xs:element name="sky" type="xs:string"/>
>                             </xs:sequence>
>                         </xs:complexType>
>
>                         <xs:element name="location"
>             type="xsd1:locationStructType"/>
>                         <xs:complexType name="locationStructType">
>                             <xs:sequence>
>                                 <xs:element name="country"
>       type="xs:string"/>
>                                 <xs:element name="city" type="xs:string"/>
>                             </xs:sequence>
>                         </xs:complexType>
>
>                         <xs:element name="response" type="xs:string"/>
>
>                         <xs:element name="weatherFault"
>             type="xsd1:weatherFaultStructType"/>
>                         <xs:complexType name="weatherFaultStructType">
>                             <xs:sequence>
>                                 <xs:element name="Fault"
> type="xs:string"/>
>                                 <xs:element name="country"
>       type="xs:string"/>
>                                 <xs:element name="city" type="xs:string"/>
>                             </xs:sequence>
>                         </xs:complexType>
>
>                         <xs:element name="weatherDetails"
>             type="xsd1:weatherDetailsStructType"/>
>                         <xs:complexType name="weatherDetailsStructType">
>                             <xs:sequence>
>                                 <xs:element name="weather"
>             type="xsd1:weatherStructType"/>
>                                 <xs:element name="location"
>             type="xsd1:locationStructType"/>
>                             </xs:sequence>
>                         </xs:complexType>
>                     </xs:schema>
>                 </types>
>
>                 <interface name="Weather">
>                     <documentation>
>                         This is where the abstract descriptions of the
>       operations
>             are
>             given. Note that WSDL 2.0
>                         has the concept of reusing faults, hence they are
>             described at
>             the interface level.
>                     </documentation>
>                     <fault name="weatherFault"
>             element="xsd1:weatherFault"></fault>
>
>                     <operation name="getWeather" pattern="
>             http://www.w3.org/ns/wsdl/in-out ">
>                         <input element="xsd1:location"/>
>                         <output element="xsd1:weather"/>
>                         <outfault ref="tns:weatherFault"/>
>                     </operation>
>
>                     <operation name="setWeather" pattern="
>             http://www.w3.org/ns/wsdl/in-out">
>                         <input element="xsd1:weatherDetails"/>
>                         <output element="xsd1:response"/>
>                         <outfault ref="tns:weatherFault"/>
>                     </operation>
>
>                 </interface>
>
>                 <binding name="WeatherHTTPBinding" interface="tns:Weather"
>                          type="http://www.w3.org/ns/wsdl/http">
>                     <documentation>
>                         This binding binds the weather interface to
> RESTish
>       style
>             invocations.
>                         NOTE : The URL for the operation is constracted by
>             resolving
>             the httplocation against
>                         the base uri.
>                         e.g. If the country was srilanka and the city was
>       colombo
>             then
>             the URL will be
>
>
>
> http://example.org/WeatherService/WeatherServiceSOAPEndpoint/Weather/srilanka/colombo
>
>
>
>                     </documentation>
>                     <fault ref="tns:weatherFault" whttp:code="402"/>
>                     <operation ref="tns:getWeather" whttp:method="GET"
>
>
>
>       whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>
>
>
>                     <operation ref="tns:setWeather" whttp:method="PUT"
>
>
>
>       whttp:location="WeatherServiceHTTPEndpoint/Update/{country}/{city}"/>
>                     <!--Ideally this should be as follows. Will fux it in
>       the
>             trunk-->
>                     <!--<operation ref="tns:setWeather"
> whttp:method="POST"
>
>
>
>       whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>-->
>
>
>                 </binding>
>
>                 <service name="WeatherService" interface="tns:Weather">
>                     <endpoint name="WeatherServiceHTTPEndpoint"
>             binding="tns:WeatherHTTPBinding"
>                               address="
>              http://example.org/WeatherService/WeatherServiceHTTPEndpoint/
>       "/>
>                 </service>
>
>             </description>
>
>             Thanks,
>             Keith.
>
>             On 7/11/07, riis@multi-support.com <ri...@multi-support.com>
>       wrote:
>
>                   Hi Keith,
>
>                   An example would be very nice. ;-)
>                   An example where you format the URL in a RESTish style
>       would be
>
>                   perfect.
>                   Maybe with both GET & POST if it isn't too much trouble.
>
>                   Thanks a lot.
>
>                   Regards
>                   Multi-Support A/S
>
>                   Torben Riis
>
>
>       --------------------------------------------------------------------
>                   Phone +45 96 600 600, Fax +45 96 600 601
>                   E-mail: riis@multi-support.com
>                   http://www.multi-support.com
>
>
>
>                                "keith chapman"
>                                <keithgchapman@gm
>                                ail.com >
>                   To
>
>       axis-user@ws.apache.org
>                                11-07-2007 07:40
>                   cc
>
>
>                   Subject
>                                Please respond to         Re: Axis2:
> RESTful
>                   implementation
>                                axis-user@ws.apac           with Axis2
>                                     he.org
>
>
>
>
>
>
>
>
>
>                   The WSDL 2.0 primer  is a good starting place. It takes
>       you
>             through
>                   the
>                   concepts of WSDL 2.0 very nicely (without making things
>       too
>             complex).
>                   WSDL
>                   2.0 is a whole lot clean and easy to understand. If you
>       like I
>             can
>                   write a
>                   sample WSDL 2.0 doc for you if you have an example in
>       mind :).
>
>                   And yes you can use the http methods GET, POST, PUT &
>       DELETE in
>             the
>                   same
>                   service. Its just that you cant use them on the same
>       operation.
>
>                   Thanks,
>                   Keith.
>
>                   On 7/11/07, riis@multi-support.com <
>       riis@multi-support.com>
>             wrote:
>
>                         Hi Keith,
>
>                         Thank you for answering.
>
>                         When I earlier talked about using the http methods
>       GET,
>             POST,
>                   PUT &
>                         DELETE,
>                         I actually meant using them in the same service.
>
>                         WSDL 2.0 really sounds interesting.
>
>                         I have a little knowledge about WSDL 1.1/1.2,
>       because I'm
>                   studying
>                         for the
>                         SCDJWS exam, but I doesn't know anything about
> WSDL
>       2.0.
>                         I guess a lot has changed since it is possible to
>             describe how
>                   the
>                         URL
>                         should be formatted and whether  to use http
>       methods GET,
>             POST,
>                   PUT
>                         or
>                         DELETE.
>
>                         Do you have or know a place where I can find
> simple
>             example
>                   WSDL
>                         describing
>                         such a service?
>                         Or would it be best just start reading WSDL 2.0
>             HTTPBinding.
>
>
>                         Regards
>                         Multi-Support A/S
>
>                         Torben Riis
>
>
>
>       --------------------------------------------------------------------
>                         Phone +45 96 600 600, Fax +45 96 600 601
>                         E-mail: riis@multi-support.com
>                         http://www.multi-support.com
>
>
>
>                                      "keith chapman"
>                                      < keithgchapman@gm
>                                      ail.com>
>                         To
>
>             axis-user@ws.apache.org
>                                      11-07-2007 06:45
>                         cc
>
>
>                         Subject
>                                      Please respond to         Re: Axis2:
>       RESTful
>                         implementation
>                                      axis-user@ws.apac          with Axis2
>                                           he.org
>
>
>
>
>
>
>
>
>
>                         See comments inline.
>
>                         On 7/10/07, riis@multi-support.com <
>              riis@multi-support.com >
>                   wrote:
>
>                               Hi,
>
>                               I have some questions regarding implementing
>       a
>             RESTfull
>                         service.
>                               After
>                               reading a lot of previous RESTish threads I
>       got
>             quite
>                   confused.
>                               So I hope someone can help me straightened
> it
>       out.
>
>                               If I want to create a RESTful service with
>       Axis2
>             would it
>                   then
>                               require that
>                               the service is implemented as RPC, or can
>       other
>             message
>                         receivers be
>                               used?
>
>
>                               Is it possible to create a RESTful service
>       with
>             Axis2
>                   that can
>                         be
>                               reached
>                               in the following way:
>                               http://www.boeing.com/rest/aircraft/747
>                               instead of
>
>
>
>
>       http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747
>
>                         Yes this can be done. REST support in Axis2 was
>       achieved
>             via
>                   the
>                         WSDL 2.0
>                         HTTPBinding (If you are not familiar with WSDL
> this
>       might
>             sound
>                   a bit
>                         strange). The kind of question you asked can
> easily
>       be
>             done by
>                         deploying
>                         your service via a WSDL 2.0 description. Please
>       have a
>             look at
>                   the
>                         primer
>                         it has some easy to understand examples.
>
>                               First i actually thought that a RESTful
>       service
>             should
>                         implement some
>                               sort
>                               of interface with methods corresponding to
>       GET,
>             POST, PUT
>                   &
>                         DELETE.
>                               But I read in some of the other threads that
>       a
>             RESTful
>                   service
>                         should
>                               only
>                               have one method. Isn't that a problem if you
>       try to
>
>                   accomplice
>                         the
>                               syntax
>                               that the following articles describes.
>
>                         Yes you can use all 4 HTTP methods described
> above,
>             depending
>                   on your
>                         requirement. Its all about using the appropriate
>       method
>             (Not
>                   that you
>                         must
>                         use just one method)
>
>
>
>
>
>
> http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html
>
>
>
>
>
>
> http://www.xfront.com/REST-Web-Services.html
>
>
>                               Where the same url has different
>       functionality
>             depending
>                   on how
>                         it is
>
>                               called (GET, POST).
>                               GET   /order/{id} Get order details
>                               POST  /order/{id} Add item
>
>                         the current version of Axis2 does not support this
>       (But
>             it can
>                   be
>                         included,
>                         I will file a JIRA on this and try to get it into
>       the 1.3
>                   release.)
>
>                         Please let us know if you need more help (Can even
>       assist
>             you
>                   in
>                         writing
>                         down the WSDL 2.0 description)
>
>                         Thanks,
>                         Keith.
>
>                               Regards
>                               Multi-Support A/S
>
>                               Torben Riis
>
>
>
>
>       --------------------------------------------------------------------
>                               Phone +45 96 600 600, Fax +45 96 600 601
>                               E-mail: riis@multi-support.com
>                                http://www.multi-support.com
>
>
>
>
>
>
>
>       ---------------------------------------------------------------------
>
>
>                               To unsubscribe, e-mail:
>                    axis-user-unsubscribe@ws.apache.org
>                               For additional commands, e-mail:
>                   axis-user-help@ws.apache.org
>
>
>
>
>                         --
>                         Keith Chapman
>                         WSO2 Inc.
>                         Oxygen for Web Services Developers.
>                         http://wso2.org/
>
>
>
>
>
>
>       ---------------------------------------------------------------------
>
>
>
>                         To unsubscribe, e-mail:
>             axis-user-unsubscribe@ws.apache.org
>                         For additional commands, e-mail:
>              axis-user-help@ws.apache.org
>
>
>
>
>                   --
>                   Keith Chapman
>                   WSO2 Inc.
>                   Oxygen for Web Services Developers.
>                    http://wso2.org/
>
>
>
>
>
>       ---------------------------------------------------------------------
>
>                   To unsubscribe, e-mail:
>       axis-user-unsubscribe@ws.apache.org
>                   For additional commands, e-mail:
>       axis-user-help@ws.apache.org
>
>
>
>
>             --
>             Keith Chapman
>             WSO2 Inc.
>             Oxygen for Web Services Developers.
>             http://wso2.org/
>
>
>
>
>       ---------------------------------------------------------------------
>             To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>             For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
>       --
>       Keith Chapman
>       WSO2 Inc.
>       Oxygen for Web Services Developers.
>       http://wso2.org/
>
>
>
>       ---------------------------------------------------------------------
>       To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>       For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
> --
> Keith Chapman
> WSO2 Inc.
> Oxygen for Web Services Developers.
> http://wso2.org/
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>


-- 
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/

Re: Axis2: RESTful implementation with Axis2

Posted by ri...@multi-support.com.
Hi Keith,

I still have problems with the WeatherService. I tried the below changes in
the wsdl but with no success.
Now it gives a "HTTP 500 - Internal Server Error"

Can you verify that my url is correct?
http://localhost:8080/axis2/services/WeatherService/Weather/Denmark/Herning

Have you tried to generate skeleton code for the wsdl by your self?

Generated services.xml:
<serviceGroup>
    <service name="WeatherService">
        <messageReceivers>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class=
"org.example.webservice.WeatherServiceMessageReceiverInOut"/>
        </messageReceivers>
        <parameter name="ServiceClass">
org.example.webservice.WeatherServiceSkeleton</parameter>
        <parameter name="useOriginalwsdl">true</parameter>
        <parameter name="modifyUserWSDLPortAddress">true</parameter>
        <operation name="getWeather" mep="http://www.w3.org/ns/wsdl/in-out"
>
            <actionMapping>\"\"</actionMapping>
            <outputActionMapping>urn:getWeatherResponse</
outputActionMapping>
            <faultActionMapping faultName="weatherFault">
urn:getWeatherweatherFault</faultActionMapping>
        </operation>
        <operation name="setWeather" mep="http://www.w3.org/ns/wsdl/in-out"
>
            <actionMapping>\"\"</actionMapping>
            <outputActionMapping>urn:setWeatherResponse</
outputActionMapping>
            <faultActionMapping faultName="weatherFault">
urn:setWeatherweatherFault</faultActionMapping>
        </operation>
    </service>
</serviceGroup>

Regards
Multi-Support A/S

Torben Riis
--------------------------------------------------------------------
Phone +45 96 600 600, Fax +45 96 600 601
E-mail: riis@multi-support.com
http://www.multi-support.com


                                                                           
             "keith chapman"                                               
             <keithgchapman@gm                                             
             ail.com>                                                   To 
                                       axis-user@ws.apache.org             
             13-07-2007 07:08                                           cc 
                                                                           
                                                                   Subject 
             Please respond to         Re: Axis2: RESTful implementation   
             axis-user@ws.apac         with Axis2                          
                  he.org                                                   
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




Yes there is a mistake in the WSDL (obvious copy and paste error :))

update the relavant sections as follows,

        <operation ref="tns:getWeather" whttp:method="GET"

whttp:location="WeatherService/Weather/{country}/{city}"/>
        <operation ref="tns:setWeather" whttp:method="PUT"

whttp:location="WeatherService/Update/{country}/{city}"/>


<service name="WeatherService" interface="tns:Weather">
        <endpoint name="WeatherServiceHTTPEndpoint"
binding="tns:WeatherHTTPBinding"
                  address="http://example.org/WeatherService "/>
    </service>

It was due to the above that you got the dispatching error. Should work
now.

Thanks,
Keith.

On 7/12/07, Sanjiva Weerawarana <sa...@opensource.lk> wrote:
      riis@multi-support.com wrote:
      >
      > Should I not be able to reach it with the following url?
      >
      http://localhost:8080/axis2/services/WeatherService/Weather/Denmark/Herning

      >
      >  Or have I misunderstood the new HTTPBinding.
      >       <operation ref="tns:getWeather" whttp:method="GET"
      whttp:location=
      > "WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>

      These two statements are not matching .. you've put
      WeatherService*HTTPEndpoint* in the whttp:location attribute but the
      URL
      doesn't have that.

      Sanjiva.
      --
      Sanjiva Weerawarana, Ph.D.
      Founder & Director; Lanka Software Foundation;
      http://www.opensource.lk/
      Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
      Director; Open Source Initiative; http://www.opensource.org/
      Member; Apache Software Foundation; http://www.apache.org/
      Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/

      ---------------------------------------------------------------------
      To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
      For additional commands, e-mail: axis-user-help@ws.apache.org




--
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2: RESTful implementation with Axis2

Posted by keith chapman <ke...@gmail.com>.
Yes there is a mistake in the WSDL (obvious copy and paste error :))

update the relavant sections as follows,

        <operation ref="tns:getWeather" whttp:method="GET"

whttp:location="WeatherService/Weather/{country}/{city}"/>
        <operation ref="tns:setWeather" whttp:method="PUT"
                   whttp:location="WeatherService/Update/{country}/{city}"/>


<service name="WeatherService" interface="tns:Weather">
        <endpoint name="WeatherServiceHTTPEndpoint"
binding="tns:WeatherHTTPBinding"
                  address="http://example.org/WeatherService"/>
    </service>

It was due to the above that you got the dispatching error. Should work now.

Thanks,
Keith.

On 7/12/07, Sanjiva Weerawarana <sa...@opensource.lk> wrote:
>
> riis@multi-support.com wrote:
> >
> > Should I not be able to reach it with the following url?
> >
> http://localhost:8080/axis2/services/WeatherService/Weather/Denmark/Herning
> >
> >  Or have I misunderstood the new HTTPBinding.
> >       <operation ref="tns:getWeather" whttp:method="GET" whttp:location=
> > "WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>
>
> These two statements are not matching .. you've put
> WeatherService*HTTPEndpoint* in the whttp:location attribute but the URL
> doesn't have that.
>
> Sanjiva.
> --
> Sanjiva Weerawarana, Ph.D.
> Founder & Director; Lanka Software Foundation; http://www.opensource.lk/
> Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
> Director; Open Source Initiative; http://www.opensource.org/
> Member; Apache Software Foundation; http://www.apache.org/
> Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>


-- 
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/

Re: Axis2: RESTful implementation with Axis2

Posted by Sanjiva Weerawarana <sa...@opensource.lk>.
riis@multi-support.com wrote:
> 
> Should I not be able to reach it with the following url?
> http://localhost:8080/axis2/services/WeatherService/Weather/Denmark/Herning
> 
>  Or have I misunderstood the new HTTPBinding.
>       <operation ref="tns:getWeather" whttp:method="GET" whttp:location=
> "WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>

These two statements are not matching .. you've put 
WeatherService*HTTPEndpoint* in the whttp:location attribute but the URL 
doesn't have that.

Sanjiva.
-- 
Sanjiva Weerawarana, Ph.D.
Founder & Director; Lanka Software Foundation; http://www.opensource.lk/
Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
Director; Open Source Initiative; http://www.opensource.org/
Member; Apache Software Foundation; http://www.apache.org/
Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2: RESTful implementation with Axis2

Posted by ri...@multi-support.com.
Hi Keith,

I tried 1.3 RC1, and with success.
Axis2 now starts without any errors.

But I can't activate the REST service from an url.

Should I not be able to reach it with the following url?
http://localhost:8080/axis2/services/WeatherService/Weather/Denmark/Herning

 Or have I misunderstood the new HTTPBinding.
      <operation ref="tns:getWeather" whttp:method="GET" whttp:location=
"WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>

I have attached my generated code if it can be any help.

(See attached file: WeatherService.zip)

Regards
Multi-Support A/S

Torben Riis
--------------------------------------------------------------------
Phone +45 96 600 600, Fax +45 96 600 601
E-mail: riis@multi-support.com
http://www.multi-support.com


                                                                           
             "keith chapman"                                               
             <keithgchapman@gm                                             
             ail.com>                                                   To 
                                       axis-user@ws.apache.org             
             11-07-2007 12:16                                           cc 
                                                                           
                                                                   Subject 
             Please respond to         Re: Axis2: RESTful implementation   
             axis-user@ws.apac         with Axis2                          
                  he.org                                                   
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




You can even try the 1.3 RCI available here.

http://people.apache.org/~deepal/axis2/1.3-RC1/

If you continue to have any problems just post your aar so that I can have
a look.

Thanks,
Keith.

On 7/11/07, riis@multi-support.com <riis@multi-support.com > wrote:

      Hi Keith,

      I forgot specify the argument (-wv) on wsdl2java.  My mistake. :-)
      I can see that eclipse gives another validation, than the one from
      Rational
      Application Developer 7. Maybe it just doesn't support WSDL 2.0
      validation....
      But anyway, wsdl2java generates skeleton code without errors now.

      But I get another  error during startup of Axis2 now.
      org.apache.axis2.deployment.repository.util.ArchiveReader - Trouble
      processing wsdl file :Illegal character in opaque part at index 2:
      .....\webapps\WeatherService\WEB-INF\services\weather\META-INF

      Should I try the nightly build instead? Right now I'm using Axis2
      1.2.

      Regards
      Multi-Support A/S

      Torben Riis
      --------------------------------------------------------------------
      Phone +45 96 600 600, Fax +45 96 600 601
      E-mail: riis@multi-support.com
      http://www.multi-support.com



                   "keith chapman"
                   < keithgchapman@gm
                   ail.com>
      To
                                             axis-user@ws.apache.org
                   11-07-2007 11:08
      cc


      Subject
                   Please respond to         Re: Axis2: RESTful
      implementation
                   axis-user@ws.apac         with Axis2
                        he.org









      Which version of Axis2 are you using?

      I would recoment 1.2 or even a nightly or the 1.3 RC

      Thanks,
      Keith.

      On 7/11/07, riis@multi-support.com <riis@multi-support.com > wrote:

            Hi Keith,

            I have some problems generating stub/skeletons for your wsdl.

            My IDE gives the following validation error for
      WeatherHTTPBinding.

                  WSDL: Missing port type for binding {
            http://example.axis2.apache.org}
            WeatherHTTPBinding

            What does I miss?

            Regards
            Multi-Support A/S

            Torben Riis

      --------------------------------------------------------------------
            Phone +45 96 600 600, Fax +45 96 600 601
            E-mail: riis@multi-support.com
             http://www.multi-support.com



                         "keith chapman"
                         < keithgchapman@gm
                         ail.com>
            To
                                                   axis-user@ws.apache.org
                         11-07-2007 09:27
            cc


            Subject
                         Please respond to         Re: Axis2: RESTful
            implementation
                         axis-user@ws.apac         with Axis2
                              he.org









            here is a sample Weather.wsdl2. Please let me know if you need
      any
            clarifications.

            <description xmlns="http://www.w3.org/ns/wsdl"
                         targetNamespace=" http://example.axis2.apache.org
      "
                         xmlns:tns="http://example.axis2.apache.org"
                         xmlns:wsoap=" http://www.w3.org/ns/wsdl/soap "
                         xmlns:whttp="http://www.w3.org/ns/wsdl/http"
                         xmlns:xsd1=" http://example.axis2.apache.org/xsd "
                         xmlns:xs="http://www.w3.org/2001/XMLSchema">

                <documentation>
                    Just a sample service to explain WSDL 2.0 semantics
                </documentation>

                <types>
                    <xs:schema elementFormDefault="qualified"
                               targetNamespace="
            http://example.axis2.apache.org/xsd "
                               xmlns:xs=" http://www.w3.org/2001/XMLSchema"
                               xmlns:xsd1="
      http://example.axis2.apache.org/xsd
            ">

                        <xs:element name="weather"
            type="xsd1:weatherStructType"/>
                        <xs:complexType name="weatherStructType">
                            <xs:sequence>
                                <xs:element name="temparature"
      type="xs:int"/>
                                <xs:element name="sky" type="xs:string"/>
                            </xs:sequence>
                        </xs:complexType>

                        <xs:element name="location"
            type="xsd1:locationStructType"/>
                        <xs:complexType name="locationStructType">
                            <xs:sequence>
                                <xs:element name="country"
      type="xs:string"/>
                                <xs:element name="city" type="xs:string"/>
                            </xs:sequence>
                        </xs:complexType>

                        <xs:element name="response" type="xs:string"/>

                        <xs:element name="weatherFault"
            type="xsd1:weatherFaultStructType"/>
                        <xs:complexType name="weatherFaultStructType">
                            <xs:sequence>
                                <xs:element name="Fault" type="xs:string"/>
                                <xs:element name="country"
      type="xs:string"/>
                                <xs:element name="city" type="xs:string"/>
                            </xs:sequence>
                        </xs:complexType>

                        <xs:element name="weatherDetails"
            type="xsd1:weatherDetailsStructType"/>
                        <xs:complexType name="weatherDetailsStructType">
                            <xs:sequence>
                                <xs:element name="weather"
            type="xsd1:weatherStructType"/>
                                <xs:element name="location"
            type="xsd1:locationStructType"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:schema>
                </types>

                <interface name="Weather">
                    <documentation>
                        This is where the abstract descriptions of the
      operations
            are
            given. Note that WSDL 2.0
                        has the concept of reusing faults, hence they are
            described at
            the interface level.
                    </documentation>
                    <fault name="weatherFault"
            element="xsd1:weatherFault"></fault>

                    <operation name="getWeather" pattern="
            http://www.w3.org/ns/wsdl/in-out ">
                        <input element="xsd1:location"/>
                        <output element="xsd1:weather"/>
                        <outfault ref="tns:weatherFault"/>
                    </operation>

                    <operation name="setWeather" pattern="
            http://www.w3.org/ns/wsdl/in-out">
                        <input element="xsd1:weatherDetails"/>
                        <output element="xsd1:response"/>
                        <outfault ref="tns:weatherFault"/>
                    </operation>

                </interface>

                <binding name="WeatherHTTPBinding" interface="tns:Weather"
                         type="http://www.w3.org/ns/wsdl/http">
                    <documentation>
                        This binding binds the weather interface to RESTish
      style
            invocations.
                        NOTE : The URL for the operation is constracted by
            resolving
            the httplocation against
                        the base uri.
                        e.g. If the country was srilanka and the city was
      colombo
            then
            the URL will be


      http://example.org/WeatherService/WeatherServiceSOAPEndpoint/Weather/srilanka/colombo



                    </documentation>
                    <fault ref="tns:weatherFault" whttp:code="402"/>
                    <operation ref="tns:getWeather" whttp:method="GET"


      whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>


                    <operation ref="tns:setWeather" whttp:method="PUT"


      whttp:location="WeatherServiceHTTPEndpoint/Update/{country}/{city}"/>
                    <!--Ideally this should be as follows. Will fux it in
      the
            trunk-->
                    <!--<operation ref="tns:setWeather" whttp:method="POST"


      whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>-->


                </binding>

                <service name="WeatherService" interface="tns:Weather">
                    <endpoint name="WeatherServiceHTTPEndpoint"
            binding="tns:WeatherHTTPBinding"
                              address="
             http://example.org/WeatherService/WeatherServiceHTTPEndpoint/
      "/>
                </service>

            </description>

            Thanks,
            Keith.

            On 7/11/07, riis@multi-support.com <ri...@multi-support.com>
      wrote:

                  Hi Keith,

                  An example would be very nice. ;-)
                  An example where you format the URL in a RESTish style
      would be

                  perfect.
                  Maybe with both GET & POST if it isn't too much trouble.

                  Thanks a lot.

                  Regards
                  Multi-Support A/S

                  Torben Riis


      --------------------------------------------------------------------
                  Phone +45 96 600 600, Fax +45 96 600 601
                  E-mail: riis@multi-support.com
                  http://www.multi-support.com



                               "keith chapman"
                               <keithgchapman@gm
                               ail.com >
                  To

      axis-user@ws.apache.org
                               11-07-2007 07:40
                  cc


                  Subject
                               Please respond to         Re: Axis2: RESTful
                  implementation
                               axis-user@ws.apac           with Axis2
                                    he.org









                  The WSDL 2.0 primer  is a good starting place. It takes
      you
            through
                  the
                  concepts of WSDL 2.0 very nicely (without making things
      too
            complex).
                  WSDL
                  2.0 is a whole lot clean and easy to understand. If you
      like I
            can
                  write a
                  sample WSDL 2.0 doc for you if you have an example in
      mind :).

                  And yes you can use the http methods GET, POST, PUT &
      DELETE in
            the
                  same
                  service. Its just that you cant use them on the same
      operation.

                  Thanks,
                  Keith.

                  On 7/11/07, riis@multi-support.com <
      riis@multi-support.com>
            wrote:

                        Hi Keith,

                        Thank you for answering.

                        When I earlier talked about using the http methods
      GET,
            POST,
                  PUT &
                        DELETE,
                        I actually meant using them in the same service.

                        WSDL 2.0 really sounds interesting.

                        I have a little knowledge about WSDL 1.1/1.2,
      because I'm
                  studying
                        for the
                        SCDJWS exam, but I doesn't know anything about WSDL
      2.0.
                        I guess a lot has changed since it is possible to
            describe how
                  the
                        URL
                        should be formatted and whether  to use http
      methods GET,
            POST,
                  PUT
                        or
                        DELETE.

                        Do you have or know a place where I can find simple
            example
                  WSDL
                        describing
                        such a service?
                        Or would it be best just start reading WSDL 2.0
            HTTPBinding.


                        Regards
                        Multi-Support A/S

                        Torben Riis



      --------------------------------------------------------------------
                        Phone +45 96 600 600, Fax +45 96 600 601
                        E-mail: riis@multi-support.com
                        http://www.multi-support.com



                                     "keith chapman"
                                     < keithgchapman@gm
                                     ail.com>
                        To

            axis-user@ws.apache.org
                                     11-07-2007 06:45
                        cc


                        Subject
                                     Please respond to         Re: Axis2:
      RESTful
                        implementation
                                     axis-user@ws.apac          with Axis2
                                          he.org









                        See comments inline.

                        On 7/10/07, riis@multi-support.com <
             riis@multi-support.com >
                  wrote:

                              Hi,

                              I have some questions regarding implementing
      a
            RESTfull
                        service.
                              After
                              reading a lot of previous RESTish threads I
      got
            quite
                  confused.
                              So I hope someone can help me straightened it
      out.

                              If I want to create a RESTful service with
      Axis2
            would it
                  then
                              require that
                              the service is implemented as RPC, or can
      other
            message
                        receivers be
                              used?


                              Is it possible to create a RESTful service
      with
            Axis2
                  that can
                        be
                              reached
                              in the following way:
                              http://www.boeing.com/rest/aircraft/747
                              instead of




      http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747

                        Yes this can be done. REST support in Axis2 was
      achieved
            via
                  the
                        WSDL 2.0
                        HTTPBinding (If you are not familiar with WSDL this
      might
            sound
                  a bit
                        strange). The kind of question you asked can easily
      be
            done by
                        deploying
                        your service via a WSDL 2.0 description. Please
      have a
            look at
                  the
                        primer
                        it has some easy to understand examples.

                              First i actually thought that a RESTful
      service
            should
                        implement some
                              sort
                              of interface with methods corresponding to
      GET,
            POST, PUT
                  &
                        DELETE.
                              But I read in some of the other threads that
      a
            RESTful
                  service
                        should
                              only
                              have one method. Isn't that a problem if you
      try to

                  accomplice
                        the
                              syntax
                              that the following articles describes.

                        Yes you can use all 4 HTTP methods described above,
            depending
                  on your
                        requirement. Its all about using the appropriate
      method
            (Not
                  that you
                        must
                        use just one method)





      http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html





                               http://www.xfront.com/REST-Web-Services.html


                              Where the same url has different
      functionality
            depending
                  on how
                        it is

                              called (GET, POST).
                              GET   /order/{id} Get order details
                              POST  /order/{id} Add item

                        the current version of Axis2 does not support this
      (But
            it can
                  be
                        included,
                        I will file a JIRA on this and try to get it into
      the 1.3
                  release.)

                        Please let us know if you need more help (Can even
      assist
            you
                  in
                        writing
                        down the WSDL 2.0 description)

                        Thanks,
                        Keith.

                              Regards
                              Multi-Support A/S

                              Torben Riis




      --------------------------------------------------------------------
                              Phone +45 96 600 600, Fax +45 96 600 601
                              E-mail: riis@multi-support.com
                               http://www.multi-support.com






      ---------------------------------------------------------------------


                              To unsubscribe, e-mail:
                   axis-user-unsubscribe@ws.apache.org
                              For additional commands, e-mail:
                  axis-user-help@ws.apache.org




                        --
                        Keith Chapman
                        WSO2 Inc.
                        Oxygen for Web Services Developers.
                        http://wso2.org/





      ---------------------------------------------------------------------



                        To unsubscribe, e-mail:
            axis-user-unsubscribe@ws.apache.org
                        For additional commands, e-mail:
             axis-user-help@ws.apache.org




                  --
                  Keith Chapman
                  WSO2 Inc.
                  Oxygen for Web Services Developers.
                   http://wso2.org/




      ---------------------------------------------------------------------

                  To unsubscribe, e-mail:
      axis-user-unsubscribe@ws.apache.org
                  For additional commands, e-mail:
      axis-user-help@ws.apache.org




            --
            Keith Chapman
            WSO2 Inc.
            Oxygen for Web Services Developers.
            http://wso2.org/



      ---------------------------------------------------------------------
            To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
            For additional commands, e-mail: axis-user-help@ws.apache.org




      --
      Keith Chapman
      WSO2 Inc.
      Oxygen for Web Services Developers.
      http://wso2.org/


      ---------------------------------------------------------------------
      To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
      For additional commands, e-mail: axis-user-help@ws.apache.org




--
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/

Re: Axis2: RESTful implementation with Axis2

Posted by keith chapman <ke...@gmail.com>.
You can even try the 1.3 RCI available here.

http://people.apache.org/~deepal/axis2/1.3-RC1/

If you continue to have any problems just post your aar so that I can have a
look.

Thanks,
Keith.

On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>
> Hi Keith,
>
> I forgot specify the argument (-wv) on wsdl2java.  My mistake. :-)
> I can see that eclipse gives another validation, than the one from
> Rational
> Application Developer 7. Maybe it just doesn't support WSDL 2.0
> validation....
> But anyway, wsdl2java generates skeleton code without errors now.
>
> But I get another  error during startup of Axis2 now.
> org.apache.axis2.deployment.repository.util.ArchiveReader - Trouble
> processing wsdl file :Illegal character in opaque part at index 2:
> .....\webapps\WeatherService\WEB-INF\services\weather\META-INF
>
> Should I try the nightly build instead? Right now I'm using Axis2 1.2.
>
> Regards
> Multi-Support A/S
>
> Torben Riis
> --------------------------------------------------------------------
> Phone +45 96 600 600, Fax +45 96 600 601
> E-mail: riis@multi-support.com
> http://www.multi-support.com
>
>
>
>              "keith chapman"
>              <keithgchapman@gm
>              ail.com>                                                   To
>                                        axis-user@ws.apache.org
>              11-07-2007 11:08                                           cc
>
>                                                                    Subject
>              Please respond to         Re: Axis2: RESTful implementation
>              axis-user@ws.apac         with Axis2
>                   he.org
>
>
>
>
>
>
>
>
>
> Which version of Axis2 are you using?
>
> I would recoment 1.2 or even a nightly or the 1.3 RC
>
> Thanks,
> Keith.
>
> On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>       Hi Keith,
>
>       I have some problems generating stub/skeletons for your wsdl.
>
>       My IDE gives the following validation error for WeatherHTTPBinding.
>
>             WSDL: Missing port type for binding {
>       http://example.axis2.apache.org}
>       WeatherHTTPBinding
>
>       What does I miss?
>
>       Regards
>       Multi-Support A/S
>
>       Torben Riis
>       --------------------------------------------------------------------
>       Phone +45 96 600 600, Fax +45 96 600 601
>       E-mail: riis@multi-support.com
>       http://www.multi-support.com
>
>
>
>                    "keith chapman"
>                    < keithgchapman@gm
>                    ail.com>
>       To
>                                              axis-user@ws.apache.org
>                    11-07-2007 09:27
>       cc
>
>
>       Subject
>                    Please respond to         Re: Axis2: RESTful
>       implementation
>                    axis-user@ws.apac         with Axis2
>                         he.org
>
>
>
>
>
>
>
>
>
>       here is a sample Weather.wsdl2. Please let me know if you need any
>       clarifications.
>
>       <description xmlns="http://www.w3.org/ns/wsdl"
>                    targetNamespace=" http://example.axis2.apache.org "
>                    xmlns:tns="http://example.axis2.apache.org"
>                    xmlns:wsoap=" http://www.w3.org/ns/wsdl/soap "
>                    xmlns:whttp="http://www.w3.org/ns/wsdl/http"
>                    xmlns:xsd1=" http://example.axis2.apache.org/xsd "
>                    xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
>           <documentation>
>               Just a sample service to explain WSDL 2.0 semantics
>           </documentation>
>
>           <types>
>               <xs:schema elementFormDefault="qualified"
>                          targetNamespace="
>       http://example.axis2.apache.org/xsd "
>                          xmlns:xs="http://www.w3.org/2001/XMLSchema"
>                          xmlns:xsd1=" http://example.axis2.apache.org/xsd
>       ">
>
>                   <xs:element name="weather"
>       type="xsd1:weatherStructType"/>
>                   <xs:complexType name="weatherStructType">
>                       <xs:sequence>
>                           <xs:element name="temparature" type="xs:int"/>
>                           <xs:element name="sky" type="xs:string"/>
>                       </xs:sequence>
>                   </xs:complexType>
>
>                   <xs:element name="location"
>       type="xsd1:locationStructType"/>
>                   <xs:complexType name="locationStructType">
>                       <xs:sequence>
>                           <xs:element name="country" type="xs:string"/>
>                           <xs:element name="city" type="xs:string"/>
>                       </xs:sequence>
>                   </xs:complexType>
>
>                   <xs:element name="response" type="xs:string"/>
>
>                   <xs:element name="weatherFault"
>       type="xsd1:weatherFaultStructType"/>
>                   <xs:complexType name="weatherFaultStructType">
>                       <xs:sequence>
>                           <xs:element name="Fault" type="xs:string"/>
>                           <xs:element name="country" type="xs:string"/>
>                           <xs:element name="city" type="xs:string"/>
>                       </xs:sequence>
>                   </xs:complexType>
>
>                   <xs:element name="weatherDetails"
>       type="xsd1:weatherDetailsStructType"/>
>                   <xs:complexType name="weatherDetailsStructType">
>                       <xs:sequence>
>                           <xs:element name="weather"
>       type="xsd1:weatherStructType"/>
>                           <xs:element name="location"
>       type="xsd1:locationStructType"/>
>                       </xs:sequence>
>                   </xs:complexType>
>               </xs:schema>
>           </types>
>
>           <interface name="Weather">
>               <documentation>
>                   This is where the abstract descriptions of the
> operations
>       are
>       given. Note that WSDL 2.0
>                   has the concept of reusing faults, hence they are
>       described at
>       the interface level.
>               </documentation>
>               <fault name="weatherFault"
>       element="xsd1:weatherFault"></fault>
>
>               <operation name="getWeather" pattern="
>       http://www.w3.org/ns/wsdl/in-out">
>                   <input element="xsd1:location"/>
>                   <output element="xsd1:weather"/>
>                   <outfault ref="tns:weatherFault"/>
>               </operation>
>
>               <operation name="setWeather" pattern="
>       http://www.w3.org/ns/wsdl/in-out">
>                   <input element="xsd1:weatherDetails"/>
>                   <output element="xsd1:response"/>
>                   <outfault ref="tns:weatherFault"/>
>               </operation>
>
>           </interface>
>
>           <binding name="WeatherHTTPBinding" interface="tns:Weather"
>                    type="http://www.w3.org/ns/wsdl/http">
>               <documentation>
>                   This binding binds the weather interface to RESTish
> style
>       invocations.
>                   NOTE : The URL for the operation is constracted by
>       resolving
>       the httplocation against
>                   the base uri.
>                   e.g. If the country was srilanka and the city was
> colombo
>       then
>       the URL will be
>
>
> http://example.org/WeatherService/WeatherServiceSOAPEndpoint/Weather/srilanka/colombo
>
>
>               </documentation>
>               <fault ref="tns:weatherFault" whttp:code="402"/>
>               <operation ref="tns:getWeather" whttp:method="GET"
>
>
>       whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>
>
>               <operation ref="tns:setWeather" whttp:method="PUT"
>
>
>       whttp:location="WeatherServiceHTTPEndpoint/Update/{country}/{city}"/>
>               <!--Ideally this should be as follows. Will fux it in the
>       trunk-->
>               <!--<operation ref="tns:setWeather" whttp:method="POST"
>
>       whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>-->
>
>           </binding>
>
>           <service name="WeatherService" interface="tns:Weather">
>               <endpoint name="WeatherServiceHTTPEndpoint"
>       binding="tns:WeatherHTTPBinding"
>                         address="
>       http://example.org/WeatherService/WeatherServiceHTTPEndpoint/ "/>
>           </service>
>
>       </description>
>
>       Thanks,
>       Keith.
>
>       On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>             Hi Keith,
>
>             An example would be very nice. ;-)
>             An example where you format the URL in a RESTish style would
> be
>
>             perfect.
>             Maybe with both GET & POST if it isn't too much trouble.
>
>             Thanks a lot.
>
>             Regards
>             Multi-Support A/S
>
>             Torben Riis
>
>       --------------------------------------------------------------------
>             Phone +45 96 600 600, Fax +45 96 600 601
>             E-mail: riis@multi-support.com
>             http://www.multi-support.com
>
>
>
>                          "keith chapman"
>                          <keithgchapman@gm
>                          ail.com >
>             To
>                                                    axis-user@ws.apache.org
>                          11-07-2007 07:40
>             cc
>
>
>             Subject
>                          Please respond to         Re: Axis2: RESTful
>             implementation
>                          axis-user@ws.apac          with Axis2
>                               he.org
>
>
>
>
>
>
>
>
>
>             The WSDL 2.0 primer  is a good starting place. It takes you
>       through
>             the
>             concepts of WSDL 2.0 very nicely (without making things too
>       complex).
>             WSDL
>             2.0 is a whole lot clean and easy to understand. If you like I
>       can
>             write a
>             sample WSDL 2.0 doc for you if you have an example in mind :).
>
>             And yes you can use the http methods GET, POST, PUT & DELETE
> in
>       the
>             same
>             service. Its just that you cant use them on the same
> operation.
>
>             Thanks,
>             Keith.
>
>             On 7/11/07, riis@multi-support.com < riis@multi-support.com>
>       wrote:
>
>                   Hi Keith,
>
>                   Thank you for answering.
>
>                   When I earlier talked about using the http methods GET,
>       POST,
>             PUT &
>                   DELETE,
>                   I actually meant using them in the same service.
>
>                   WSDL 2.0 really sounds interesting.
>
>                   I have a little knowledge about WSDL 1.1/1.2, because
> I'm
>             studying
>                   for the
>                   SCDJWS exam, but I doesn't know anything about WSDL 2.0.
>                   I guess a lot has changed since it is possible to
>       describe how
>             the
>                   URL
>                   should be formatted and whether  to use http methods
> GET,
>       POST,
>             PUT
>                   or
>                   DELETE.
>
>                   Do you have or know a place where I can find simple
>       example
>             WSDL
>                   describing
>                   such a service?
>                   Or would it be best just start reading WSDL 2.0
>       HTTPBinding.
>
>
>                   Regards
>                   Multi-Support A/S
>
>                   Torben Riis
>
>
>       --------------------------------------------------------------------
>                   Phone +45 96 600 600, Fax +45 96 600 601
>                   E-mail: riis@multi-support.com
>                   http://www.multi-support.com
>
>
>
>                                "keith chapman"
>                                < keithgchapman@gm
>                                ail.com>
>                   To
>
>       axis-user@ws.apache.org
>                                11-07-2007 06:45
>                   cc
>
>
>                   Subject
>                                Please respond to         Re: Axis2:
> RESTful
>                   implementation
>                                axis-user@ws.apac          with Axis2
>                                     he.org
>
>
>
>
>
>
>
>
>
>                   See comments inline.
>
>                   On 7/10/07, riis@multi-support.com <
>       riis@multi-support.com >
>             wrote:
>
>                         Hi,
>
>                         I have some questions regarding implementing a
>       RESTfull
>                   service.
>                         After
>                         reading a lot of previous RESTish threads I got
>       quite
>             confused.
>                         So I hope someone can help me straightened it out.
>
>                         If I want to create a RESTful service with Axis2
>       would it
>             then
>                         require that
>                         the service is implemented as RPC, or can other
>       message
>                   receivers be
>                         used?
>
>
>                         Is it possible to create a RESTful service with
>       Axis2
>             that can
>                   be
>                         reached
>                         in the following way:
>                         http://www.boeing.com/rest/aircraft/747
>                         instead of
>
>
>
>       http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747
>
>                   Yes this can be done. REST support in Axis2 was achieved
>       via
>             the
>                   WSDL 2.0
>                   HTTPBinding (If you are not familiar with WSDL this
> might
>       sound
>             a bit
>                   strange). The kind of question you asked can easily be
>       done by
>                   deploying
>                   your service via a WSDL 2.0 description. Please have a
>       look at
>             the
>                   primer
>                   it has some easy to understand examples.
>
>                         First i actually thought that a RESTful service
>       should
>                   implement some
>                         sort
>                         of interface with methods corresponding to GET,
>       POST, PUT
>             &
>                   DELETE.
>                         But I read in some of the other threads that a
>       RESTful
>             service
>                   should
>                         only
>                         have one method. Isn't that a problem if you try
> to
>
>             accomplice
>                   the
>                         syntax
>                         that the following articles describes.
>
>                   Yes you can use all 4 HTTP methods described above,
>       depending
>             on your
>                   requirement. Its all about using the appropriate method
>       (Not
>             that you
>                   must
>                   use just one method)
>
>
>
>
>
> http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html
>
>
>
>
>                          http://www.xfront.com/REST-Web-Services.html
>
>                         Where the same url has different functionality
>       depending
>             on how
>                   it is
>
>                         called (GET, POST).
>                         GET   /order/{id} Get order details
>                         POST  /order/{id} Add item
>
>                   the current version of Axis2 does not support this (But
>       it can
>             be
>                   included,
>                   I will file a JIRA on this and try to get it into the
> 1.3
>             release.)
>
>                   Please let us know if you need more help (Can even
> assist
>       you
>             in
>                   writing
>                   down the WSDL 2.0 description)
>
>                   Thanks,
>                   Keith.
>
>                         Regards
>                         Multi-Support A/S
>
>                         Torben Riis
>
>
>
>       --------------------------------------------------------------------
>                         Phone +45 96 600 600, Fax +45 96 600 601
>                         E-mail: riis@multi-support.com
>                         http://www.multi-support.com
>
>
>
>
>
>
>       ---------------------------------------------------------------------
>
>
>                         To unsubscribe, e-mail:
>             axis-user-unsubscribe@ws.apache.org
>                         For additional commands, e-mail:
>             axis-user-help@ws.apache.org
>
>
>
>
>                   --
>                   Keith Chapman
>                   WSO2 Inc.
>                   Oxygen for Web Services Developers.
>                   http://wso2.org/
>
>
>
>
>
>       ---------------------------------------------------------------------
>
>
>                   To unsubscribe, e-mail:
>       axis-user-unsubscribe@ws.apache.org
>                   For additional commands, e-mail:
>       axis-user-help@ws.apache.org
>
>
>
>
>             --
>             Keith Chapman
>             WSO2 Inc.
>             Oxygen for Web Services Developers.
>              http://wso2.org/
>
>
>
>
>       ---------------------------------------------------------------------
>
>             To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>             For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
>       --
>       Keith Chapman
>       WSO2 Inc.
>       Oxygen for Web Services Developers.
>       http://wso2.org/
>
>
>
>       ---------------------------------------------------------------------
>       To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>       For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
> --
> Keith Chapman
> WSO2 Inc.
> Oxygen for Web Services Developers.
> http://wso2.org/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>


-- 
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/

Re: Axis2: RESTful implementation with Axis2

Posted by ri...@multi-support.com.
Hi Keith,

I forgot specify the argument (-wv) on wsdl2java.  My mistake. :-)
I can see that eclipse gives another validation, than the one from Rational
Application Developer 7. Maybe it just doesn't support WSDL 2.0
validation....
But anyway, wsdl2java generates skeleton code without errors now.

But I get another  error during startup of Axis2 now.
org.apache.axis2.deployment.repository.util.ArchiveReader - Trouble
processing wsdl file :Illegal character in opaque part at index 2:
.....\webapps\WeatherService\WEB-INF\services\weather\META-INF

Should I try the nightly build instead? Right now I'm using Axis2 1.2.

Regards
Multi-Support A/S

Torben Riis
--------------------------------------------------------------------
Phone +45 96 600 600, Fax +45 96 600 601
E-mail: riis@multi-support.com
http://www.multi-support.com


                                                                           
             "keith chapman"                                               
             <keithgchapman@gm                                             
             ail.com>                                                   To 
                                       axis-user@ws.apache.org             
             11-07-2007 11:08                                           cc 
                                                                           
                                                                   Subject 
             Please respond to         Re: Axis2: RESTful implementation   
             axis-user@ws.apac         with Axis2                          
                  he.org                                                   
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




Which version of Axis2 are you using?

I would recoment 1.2 or even a nightly or the 1.3 RC

Thanks,
Keith.

On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:

      Hi Keith,

      I have some problems generating stub/skeletons for your wsdl.

      My IDE gives the following validation error for WeatherHTTPBinding.

            WSDL: Missing port type for binding {
      http://example.axis2.apache.org}
      WeatherHTTPBinding

      What does I miss?

      Regards
      Multi-Support A/S

      Torben Riis
      --------------------------------------------------------------------
      Phone +45 96 600 600, Fax +45 96 600 601
      E-mail: riis@multi-support.com
      http://www.multi-support.com



                   "keith chapman"
                   < keithgchapman@gm
                   ail.com>
      To
                                             axis-user@ws.apache.org
                   11-07-2007 09:27
      cc


      Subject
                   Please respond to         Re: Axis2: RESTful
      implementation
                   axis-user@ws.apac         with Axis2
                        he.org









      here is a sample Weather.wsdl2. Please let me know if you need any
      clarifications.

      <description xmlns="http://www.w3.org/ns/wsdl"
                   targetNamespace=" http://example.axis2.apache.org "
                   xmlns:tns="http://example.axis2.apache.org"
                   xmlns:wsoap=" http://www.w3.org/ns/wsdl/soap "
                   xmlns:whttp="http://www.w3.org/ns/wsdl/http"
                   xmlns:xsd1=" http://example.axis2.apache.org/xsd "
                   xmlns:xs="http://www.w3.org/2001/XMLSchema">

          <documentation>
              Just a sample service to explain WSDL 2.0 semantics
          </documentation>

          <types>
              <xs:schema elementFormDefault="qualified"
                         targetNamespace="
      http://example.axis2.apache.org/xsd "
                         xmlns:xs="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsd1=" http://example.axis2.apache.org/xsd
      ">

                  <xs:element name="weather"
      type="xsd1:weatherStructType"/>
                  <xs:complexType name="weatherStructType">
                      <xs:sequence>
                          <xs:element name="temparature" type="xs:int"/>
                          <xs:element name="sky" type="xs:string"/>
                      </xs:sequence>
                  </xs:complexType>

                  <xs:element name="location"
      type="xsd1:locationStructType"/>
                  <xs:complexType name="locationStructType">
                      <xs:sequence>
                          <xs:element name="country" type="xs:string"/>
                          <xs:element name="city" type="xs:string"/>
                      </xs:sequence>
                  </xs:complexType>

                  <xs:element name="response" type="xs:string"/>

                  <xs:element name="weatherFault"
      type="xsd1:weatherFaultStructType"/>
                  <xs:complexType name="weatherFaultStructType">
                      <xs:sequence>
                          <xs:element name="Fault" type="xs:string"/>
                          <xs:element name="country" type="xs:string"/>
                          <xs:element name="city" type="xs:string"/>
                      </xs:sequence>
                  </xs:complexType>

                  <xs:element name="weatherDetails"
      type="xsd1:weatherDetailsStructType"/>
                  <xs:complexType name="weatherDetailsStructType">
                      <xs:sequence>
                          <xs:element name="weather"
      type="xsd1:weatherStructType"/>
                          <xs:element name="location"
      type="xsd1:locationStructType"/>
                      </xs:sequence>
                  </xs:complexType>
              </xs:schema>
          </types>

          <interface name="Weather">
              <documentation>
                  This is where the abstract descriptions of the operations
      are
      given. Note that WSDL 2.0
                  has the concept of reusing faults, hence they are
      described at
      the interface level.
              </documentation>
              <fault name="weatherFault"
      element="xsd1:weatherFault"></fault>

              <operation name="getWeather" pattern="
      http://www.w3.org/ns/wsdl/in-out">
                  <input element="xsd1:location"/>
                  <output element="xsd1:weather"/>
                  <outfault ref="tns:weatherFault"/>
              </operation>

              <operation name="setWeather" pattern="
      http://www.w3.org/ns/wsdl/in-out">
                  <input element="xsd1:weatherDetails"/>
                  <output element="xsd1:response"/>
                  <outfault ref="tns:weatherFault"/>
              </operation>

          </interface>

          <binding name="WeatherHTTPBinding" interface="tns:Weather"
                   type="http://www.w3.org/ns/wsdl/http">
              <documentation>
                  This binding binds the weather interface to RESTish style
      invocations.
                  NOTE : The URL for the operation is constracted by
      resolving
      the httplocation against
                  the base uri.
                  e.g. If the country was srilanka and the city was colombo
      then
      the URL will be

      http://example.org/WeatherService/WeatherServiceSOAPEndpoint/Weather/srilanka/colombo


              </documentation>
              <fault ref="tns:weatherFault" whttp:code="402"/>
              <operation ref="tns:getWeather" whttp:method="GET"

      whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>

              <operation ref="tns:setWeather" whttp:method="PUT"

      whttp:location="WeatherServiceHTTPEndpoint/Update/{country}/{city}"/>
              <!--Ideally this should be as follows. Will fux it in the
      trunk-->
              <!--<operation ref="tns:setWeather" whttp:method="POST"
      whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>-->

          </binding>

          <service name="WeatherService" interface="tns:Weather">
              <endpoint name="WeatherServiceHTTPEndpoint"
      binding="tns:WeatherHTTPBinding"
                        address="
      http://example.org/WeatherService/WeatherServiceHTTPEndpoint/ "/>
          </service>

      </description>

      Thanks,
      Keith.

      On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:

            Hi Keith,

            An example would be very nice. ;-)
            An example where you format the URL in a RESTish style would be

            perfect.
            Maybe with both GET & POST if it isn't too much trouble.

            Thanks a lot.

            Regards
            Multi-Support A/S

            Torben Riis

      --------------------------------------------------------------------
            Phone +45 96 600 600, Fax +45 96 600 601
            E-mail: riis@multi-support.com
            http://www.multi-support.com



                         "keith chapman"
                         <keithgchapman@gm
                         ail.com >
            To
                                                   axis-user@ws.apache.org
                         11-07-2007 07:40
            cc


            Subject
                         Please respond to         Re: Axis2: RESTful
            implementation
                         axis-user@ws.apac          with Axis2
                              he.org









            The WSDL 2.0 primer  is a good starting place. It takes you
      through
            the
            concepts of WSDL 2.0 very nicely (without making things too
      complex).
            WSDL
            2.0 is a whole lot clean and easy to understand. If you like I
      can
            write a
            sample WSDL 2.0 doc for you if you have an example in mind :).

            And yes you can use the http methods GET, POST, PUT & DELETE in
      the
            same
            service. Its just that you cant use them on the same operation.

            Thanks,
            Keith.

            On 7/11/07, riis@multi-support.com < riis@multi-support.com>
      wrote:

                  Hi Keith,

                  Thank you for answering.

                  When I earlier talked about using the http methods GET,
      POST,
            PUT &
                  DELETE,
                  I actually meant using them in the same service.

                  WSDL 2.0 really sounds interesting.

                  I have a little knowledge about WSDL 1.1/1.2, because I'm
            studying
                  for the
                  SCDJWS exam, but I doesn't know anything about WSDL 2.0.
                  I guess a lot has changed since it is possible to
      describe how
            the
                  URL
                  should be formatted and whether  to use http methods GET,
      POST,
            PUT
                  or
                  DELETE.

                  Do you have or know a place where I can find simple
      example
            WSDL
                  describing
                  such a service?
                  Or would it be best just start reading WSDL 2.0
      HTTPBinding.


                  Regards
                  Multi-Support A/S

                  Torben Riis


      --------------------------------------------------------------------
                  Phone +45 96 600 600, Fax +45 96 600 601
                  E-mail: riis@multi-support.com
                  http://www.multi-support.com



                               "keith chapman"
                               < keithgchapman@gm
                               ail.com>
                  To

      axis-user@ws.apache.org
                               11-07-2007 06:45
                  cc


                  Subject
                               Please respond to         Re: Axis2: RESTful
                  implementation
                               axis-user@ws.apac          with Axis2
                                    he.org









                  See comments inline.

                  On 7/10/07, riis@multi-support.com <
      riis@multi-support.com >
            wrote:

                        Hi,

                        I have some questions regarding implementing a
      RESTfull
                  service.
                        After
                        reading a lot of previous RESTish threads I got
      quite
            confused.
                        So I hope someone can help me straightened it out.

                        If I want to create a RESTful service with Axis2
      would it
            then
                        require that
                        the service is implemented as RPC, or can other
      message
                  receivers be
                        used?


                        Is it possible to create a RESTful service with
      Axis2
            that can
                  be
                        reached
                        in the following way:
                        http://www.boeing.com/rest/aircraft/747
                        instead of



      http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747

                  Yes this can be done. REST support in Axis2 was achieved
      via
            the
                  WSDL 2.0
                  HTTPBinding (If you are not familiar with WSDL this might
      sound
            a bit
                  strange). The kind of question you asked can easily be
      done by
                  deploying
                  your service via a WSDL 2.0 description. Please have a
      look at
            the
                  primer
                  it has some easy to understand examples.

                        First i actually thought that a RESTful service
      should
                  implement some
                        sort
                        of interface with methods corresponding to GET,
      POST, PUT
            &
                  DELETE.
                        But I read in some of the other threads that a
      RESTful
            service
                  should
                        only
                        have one method. Isn't that a problem if you try to

            accomplice
                  the
                        syntax
                        that the following articles describes.

                  Yes you can use all 4 HTTP methods described above,
      depending
            on your
                  requirement. Its all about using the appropriate method
      (Not
            that you
                  must
                  use just one method)




      http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html




                         http://www.xfront.com/REST-Web-Services.html

                        Where the same url has different functionality
      depending
            on how
                  it is

                        called (GET, POST).
                        GET   /order/{id} Get order details
                        POST  /order/{id} Add item

                  the current version of Axis2 does not support this (But
      it can
            be
                  included,
                  I will file a JIRA on this and try to get it into the 1.3
            release.)

                  Please let us know if you need more help (Can even assist
      you
            in
                  writing
                  down the WSDL 2.0 description)

                  Thanks,
                  Keith.

                        Regards
                        Multi-Support A/S

                        Torben Riis



      --------------------------------------------------------------------
                        Phone +45 96 600 600, Fax +45 96 600 601
                        E-mail: riis@multi-support.com
                        http://www.multi-support.com





      ---------------------------------------------------------------------


                        To unsubscribe, e-mail:
            axis-user-unsubscribe@ws.apache.org
                        For additional commands, e-mail:
            axis-user-help@ws.apache.org




                  --
                  Keith Chapman
                  WSO2 Inc.
                  Oxygen for Web Services Developers.
                  http://wso2.org/




      ---------------------------------------------------------------------


                  To unsubscribe, e-mail:
      axis-user-unsubscribe@ws.apache.org
                  For additional commands, e-mail:
      axis-user-help@ws.apache.org




            --
            Keith Chapman
            WSO2 Inc.
            Oxygen for Web Services Developers.
             http://wso2.org/



      ---------------------------------------------------------------------

            To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
            For additional commands, e-mail: axis-user-help@ws.apache.org




      --
      Keith Chapman
      WSO2 Inc.
      Oxygen for Web Services Developers.
      http://wso2.org/


      ---------------------------------------------------------------------
      To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
      For additional commands, e-mail: axis-user-help@ws.apache.org




--
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2: RESTful implementation with Axis2

Posted by keith chapman <ke...@gmail.com>.
Which version of Axis2 are you using?

I would recoment 1.2 or even a nightly or the 1.3 RC

Thanks,
Keith.

On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>
> Hi Keith,
>
> I have some problems generating stub/skeletons for your wsdl.
>
> My IDE gives the following validation error for WeatherHTTPBinding.
>
>       WSDL: Missing port type for binding {http://example.axis2.apache.org
> }
> WeatherHTTPBinding
>
> What does I miss?
>
> Regards
> Multi-Support A/S
>
> Torben Riis
> --------------------------------------------------------------------
> Phone +45 96 600 600, Fax +45 96 600 601
> E-mail: riis@multi-support.com
> http://www.multi-support.com
>
>
>
>              "keith chapman"
>              <keithgchapman@gm
>              ail.com>                                                   To
>                                        axis-user@ws.apache.org
>              11-07-2007 09:27                                           cc
>
>                                                                    Subject
>              Please respond to         Re: Axis2: RESTful implementation
>              axis-user@ws.apac         with Axis2
>                   he.org
>
>
>
>
>
>
>
>
>
> here is a sample Weather.wsdl2. Please let me know if you need any
> clarifications.
>
> <description xmlns="http://www.w3.org/ns/wsdl"
>              targetNamespace=" http://example.axis2.apache.org"
>              xmlns:tns="http://example.axis2.apache.org"
>              xmlns:wsoap=" http://www.w3.org/ns/wsdl/soap"
>              xmlns:whttp="http://www.w3.org/ns/wsdl/http"
>              xmlns:xsd1=" http://example.axis2.apache.org/xsd"
>              xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
>     <documentation>
>         Just a sample service to explain WSDL 2.0 semantics
>     </documentation>
>
>     <types>
>         <xs:schema elementFormDefault="qualified"
>                    targetNamespace=" http://example.axis2.apache.org/xsd"
>                    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>                    xmlns:xsd1=" http://example.axis2.apache.org/xsd">
>
>             <xs:element name="weather" type="xsd1:weatherStructType"/>
>             <xs:complexType name="weatherStructType">
>                 <xs:sequence>
>                     <xs:element name="temparature" type="xs:int"/>
>                     <xs:element name="sky" type="xs:string"/>
>                 </xs:sequence>
>             </xs:complexType>
>
>             <xs:element name="location" type="xsd1:locationStructType"/>
>             <xs:complexType name="locationStructType">
>                 <xs:sequence>
>                     <xs:element name="country" type="xs:string"/>
>                     <xs:element name="city" type="xs:string"/>
>                 </xs:sequence>
>             </xs:complexType>
>
>             <xs:element name="response" type="xs:string"/>
>
>             <xs:element name="weatherFault"
> type="xsd1:weatherFaultStructType"/>
>             <xs:complexType name="weatherFaultStructType">
>                 <xs:sequence>
>                     <xs:element name="Fault" type="xs:string"/>
>                     <xs:element name="country" type="xs:string"/>
>                     <xs:element name="city" type="xs:string"/>
>                 </xs:sequence>
>             </xs:complexType>
>
>             <xs:element name="weatherDetails"
> type="xsd1:weatherDetailsStructType"/>
>             <xs:complexType name="weatherDetailsStructType">
>                 <xs:sequence>
>                     <xs:element name="weather"
> type="xsd1:weatherStructType"/>
>                     <xs:element name="location"
> type="xsd1:locationStructType"/>
>                 </xs:sequence>
>             </xs:complexType>
>         </xs:schema>
>     </types>
>
>     <interface name="Weather">
>         <documentation>
>             This is where the abstract descriptions of the operations are
> given. Note that WSDL 2.0
>             has the concept of reusing faults, hence they are described at
> the interface level.
>         </documentation>
>         <fault name="weatherFault" element="xsd1:weatherFault"></fault>
>
>         <operation name="getWeather" pattern="
> http://www.w3.org/ns/wsdl/in-out">
>             <input element="xsd1:location"/>
>             <output element="xsd1:weather"/>
>             <outfault ref="tns:weatherFault"/>
>         </operation>
>
>         <operation name="setWeather" pattern="
> http://www.w3.org/ns/wsdl/in-out">
>             <input element="xsd1:weatherDetails"/>
>             <output element="xsd1:response"/>
>             <outfault ref="tns:weatherFault"/>
>         </operation>
>
>     </interface>
>
>     <binding name="WeatherHTTPBinding" interface="tns:Weather"
>              type="http://www.w3.org/ns/wsdl/http">
>         <documentation>
>             This binding binds the weather interface to RESTish style
> invocations.
>             NOTE : The URL for the operation is constracted by resolving
> the httplocation against
>             the base uri.
>             e.g. If the country was srilanka and the city was colombo then
> the URL will be
>
>
> http://example.org/WeatherService/WeatherServiceSOAPEndpoint/Weather/srilanka/colombo
>
>         </documentation>
>         <fault ref="tns:weatherFault" whttp:code="402"/>
>         <operation ref="tns:getWeather" whttp:method="GET"
>
> whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>
>         <operation ref="tns:setWeather" whttp:method="PUT"
>
> whttp:location="WeatherServiceHTTPEndpoint/Update/{country}/{city}"/>
>         <!--Ideally this should be as follows. Will fux it in the trunk-->
>         <!--<operation ref="tns:setWeather" whttp:method="POST"
> whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>-->
>     </binding>
>
>     <service name="WeatherService" interface="tns:Weather">
>         <endpoint name="WeatherServiceHTTPEndpoint"
> binding="tns:WeatherHTTPBinding"
>                   address="
> http://example.org/WeatherService/WeatherServiceHTTPEndpoint/ "/>
>     </service>
>
> </description>
>
> Thanks,
> Keith.
>
> On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>       Hi Keith,
>
>       An example would be very nice. ;-)
>       An example where you format the URL in a RESTish style would be
>       perfect.
>       Maybe with both GET & POST if it isn't too much trouble.
>
>       Thanks a lot.
>
>       Regards
>       Multi-Support A/S
>
>       Torben Riis
>       --------------------------------------------------------------------
>       Phone +45 96 600 600, Fax +45 96 600 601
>       E-mail: riis@multi-support.com
>       http://www.multi-support.com
>
>
>
>                    "keith chapman"
>                    <keithgchapman@gm
>                    ail.com >
>       To
>                                              axis-user@ws.apache.org
>                    11-07-2007 07:40
>       cc
>
>
>       Subject
>                    Please respond to         Re: Axis2: RESTful
>       implementation
>                    axis-user@ws.apac          with Axis2
>                         he.org
>
>
>
>
>
>
>
>
>
>       The WSDL 2.0 primer  is a good starting place. It takes you through
>       the
>       concepts of WSDL 2.0 very nicely (without making things too
> complex).
>       WSDL
>       2.0 is a whole lot clean and easy to understand. If you like I can
>       write a
>       sample WSDL 2.0 doc for you if you have an example in mind :).
>
>       And yes you can use the http methods GET, POST, PUT & DELETE in the
>       same
>       service. Its just that you cant use them on the same operation.
>
>       Thanks,
>       Keith.
>
>       On 7/11/07, riis@multi-support.com < riis@multi-support.com> wrote:
>
>             Hi Keith,
>
>             Thank you for answering.
>
>             When I earlier talked about using the http methods GET, POST,
>       PUT &
>             DELETE,
>             I actually meant using them in the same service.
>
>             WSDL 2.0 really sounds interesting.
>
>             I have a little knowledge about WSDL 1.1/1.2, because I'm
>       studying
>             for the
>             SCDJWS exam, but I doesn't know anything about WSDL 2.0.
>             I guess a lot has changed since it is possible to describe how
>       the
>             URL
>             should be formatted and whether  to use http methods GET,
> POST,
>       PUT
>             or
>             DELETE.
>
>             Do you have or know a place where I can find simple example
>       WSDL
>             describing
>             such a service?
>             Or would it be best just start reading WSDL 2.0 HTTPBinding.
>
>
>             Regards
>             Multi-Support A/S
>
>             Torben Riis
>
>       --------------------------------------------------------------------
>             Phone +45 96 600 600, Fax +45 96 600 601
>             E-mail: riis@multi-support.com
>             http://www.multi-support.com
>
>
>
>                          "keith chapman"
>                          < keithgchapman@gm
>                          ail.com>
>             To
>                                                    axis-user@ws.apache.org
>                          11-07-2007 06:45
>             cc
>
>
>             Subject
>                          Please respond to         Re: Axis2: RESTful
>             implementation
>                          axis-user@ws.apac         with Axis2
>                               he.org
>
>
>
>
>
>
>
>
>
>             See comments inline.
>
>             On 7/10/07, riis@multi-support.com <riis@multi-support.com >
>       wrote:
>
>                   Hi,
>
>                   I have some questions regarding implementing a RESTfull
>             service.
>                   After
>                   reading a lot of previous RESTish threads I got quite
>       confused.
>                   So I hope someone can help me straightened it out.
>
>                   If I want to create a RESTful service with Axis2 would
> it
>       then
>                   require that
>                   the service is implemented as RPC, or can other message
>             receivers be
>                   used?
>
>
>                   Is it possible to create a RESTful service with Axis2
>       that can
>             be
>                   reached
>                   in the following way:
>                   http://www.boeing.com/rest/aircraft/747
>                   instead of
>
>
>       http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747
>
>             Yes this can be done. REST support in Axis2 was achieved  via
>       the
>             WSDL 2.0
>             HTTPBinding (If you are not familiar with WSDL this might
> sound
>       a bit
>             strange). The kind of question you asked can easily be done by
>             deploying
>             your service via a WSDL 2.0 description. Please have a look at
>       the
>             primer
>             it has some easy to understand examples.
>
>                   First i actually thought that a RESTful service should
>             implement some
>                   sort
>                   of interface with methods corresponding to GET, POST,
> PUT
>       &
>             DELETE.
>                   But I read in some of the other threads that a RESTful
>       service
>             should
>                   only
>                   have one method. Isn't that a problem if you try to
>       accomplice
>             the
>                   syntax
>                   that the following articles describes.
>
>             Yes you can use all 4 HTTP methods described above, depending
>       on your
>             requirement. Its all about using the appropriate method (Not
>       that you
>             must
>             use just one method)
>
>
>
>
> http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html
>
>
>
>                    http://www.xfront.com/REST-Web-Services.html
>
>                   Where the same url has different functionality depending
>       on how
>             it is
>
>                   called (GET, POST).
>                   GET   /order/{id} Get order details
>                   POST  /order/{id} Add item
>
>             the current version of Axis2 does not support this (But it can
>       be
>             included,
>             I will file a JIRA on this and try to get it into the 1.3
>       release.)
>
>             Please let us know if you need more help (Can even assist you
>       in
>             writing
>             down the WSDL 2.0 description)
>
>             Thanks,
>             Keith.
>
>                   Regards
>                   Multi-Support A/S
>
>                   Torben Riis
>
>
>       --------------------------------------------------------------------
>                   Phone +45 96 600 600, Fax +45 96 600 601
>                   E-mail: riis@multi-support.com
>                   http://www.multi-support.com
>
>
>
>
>
>       ---------------------------------------------------------------------
>
>
>                   To unsubscribe, e-mail:
>       axis-user-unsubscribe@ws.apache.org
>                   For additional commands, e-mail:
>       axis-user-help@ws.apache.org
>
>
>
>
>             --
>             Keith Chapman
>             WSO2 Inc.
>             Oxygen for Web Services Developers.
>             http://wso2.org/
>
>
>
>
>       ---------------------------------------------------------------------
>
>
>             To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>             For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
>       --
>       Keith Chapman
>       WSO2 Inc.
>       Oxygen for Web Services Developers.
>       http://wso2.org/
>
>
>
>       ---------------------------------------------------------------------
>
>       To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>       For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
> --
> Keith Chapman
> WSO2 Inc.
> Oxygen for Web Services Developers.
> http://wso2.org/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>


-- 
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/

Re: Axis2: RESTful implementation with Axis2

Posted by ri...@multi-support.com.
Hi Keith,

I have some problems generating stub/skeletons for your wsdl.

My IDE gives the following validation error for WeatherHTTPBinding.

      WSDL: Missing port type for binding {http://example.axis2.apache.org}
WeatherHTTPBinding

What does I miss?

Regards
Multi-Support A/S

Torben Riis
--------------------------------------------------------------------
Phone +45 96 600 600, Fax +45 96 600 601
E-mail: riis@multi-support.com
http://www.multi-support.com


                                                                           
             "keith chapman"                                               
             <keithgchapman@gm                                             
             ail.com>                                                   To 
                                       axis-user@ws.apache.org             
             11-07-2007 09:27                                           cc 
                                                                           
                                                                   Subject 
             Please respond to         Re: Axis2: RESTful implementation   
             axis-user@ws.apac         with Axis2                          
                  he.org                                                   
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




here is a sample Weather.wsdl2. Please let me know if you need any
clarifications.

<description xmlns="http://www.w3.org/ns/wsdl"
             targetNamespace=" http://example.axis2.apache.org"
             xmlns:tns="http://example.axis2.apache.org"
             xmlns:wsoap=" http://www.w3.org/ns/wsdl/soap"
             xmlns:whttp="http://www.w3.org/ns/wsdl/http"
             xmlns:xsd1=" http://example.axis2.apache.org/xsd"
             xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <documentation>
        Just a sample service to explain WSDL 2.0 semantics
    </documentation>

    <types>
        <xs:schema elementFormDefault="qualified"
                   targetNamespace=" http://example.axis2.apache.org/xsd"
                   xmlns:xs="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsd1=" http://example.axis2.apache.org/xsd">

            <xs:element name="weather" type="xsd1:weatherStructType"/>
            <xs:complexType name="weatherStructType">
                <xs:sequence>
                    <xs:element name="temparature" type="xs:int"/>
                    <xs:element name="sky" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>

            <xs:element name="location" type="xsd1:locationStructType"/>
            <xs:complexType name="locationStructType">
                <xs:sequence>
                    <xs:element name="country" type="xs:string"/>
                    <xs:element name="city" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>

            <xs:element name="response" type="xs:string"/>

            <xs:element name="weatherFault"
type="xsd1:weatherFaultStructType"/>
            <xs:complexType name="weatherFaultStructType">
                <xs:sequence>
                    <xs:element name="Fault" type="xs:string"/>
                    <xs:element name="country" type="xs:string"/>
                    <xs:element name="city" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>

            <xs:element name="weatherDetails"
type="xsd1:weatherDetailsStructType"/>
            <xs:complexType name="weatherDetailsStructType">
                <xs:sequence>
                    <xs:element name="weather"
type="xsd1:weatherStructType"/>
                    <xs:element name="location"
type="xsd1:locationStructType"/>
                </xs:sequence>
            </xs:complexType>
        </xs:schema>
    </types>

    <interface name="Weather">
        <documentation>
            This is where the abstract descriptions of the operations are
given. Note that WSDL 2.0
            has the concept of reusing faults, hence they are described at
the interface level.
        </documentation>
        <fault name="weatherFault" element="xsd1:weatherFault"></fault>

        <operation name="getWeather" pattern="
http://www.w3.org/ns/wsdl/in-out">
            <input element="xsd1:location"/>
            <output element="xsd1:weather"/>
            <outfault ref="tns:weatherFault"/>
        </operation>

        <operation name="setWeather" pattern="
http://www.w3.org/ns/wsdl/in-out">
            <input element="xsd1:weatherDetails"/>
            <output element="xsd1:response"/>
            <outfault ref="tns:weatherFault"/>
        </operation>

    </interface>

    <binding name="WeatherHTTPBinding" interface="tns:Weather"
             type="http://www.w3.org/ns/wsdl/http">
        <documentation>
            This binding binds the weather interface to RESTish style
invocations.
            NOTE : The URL for the operation is constracted by resolving
the httplocation against
            the base uri.
            e.g. If the country was srilanka and the city was colombo then
the URL will be

http://example.org/WeatherService/WeatherServiceSOAPEndpoint/Weather/srilanka/colombo

        </documentation>
        <fault ref="tns:weatherFault" whttp:code="402"/>
        <operation ref="tns:getWeather" whttp:method="GET"

whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>
        <operation ref="tns:setWeather" whttp:method="PUT"

whttp:location="WeatherServiceHTTPEndpoint/Update/{country}/{city}"/>
        <!--Ideally this should be as follows. Will fux it in the trunk-->
        <!--<operation ref="tns:setWeather" whttp:method="POST"
whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>-->
    </binding>

    <service name="WeatherService" interface="tns:Weather">
        <endpoint name="WeatherServiceHTTPEndpoint"
binding="tns:WeatherHTTPBinding"
                  address="
http://example.org/WeatherService/WeatherServiceHTTPEndpoint/ "/>
    </service>

</description>

Thanks,
Keith.

On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:

      Hi Keith,

      An example would be very nice. ;-)
      An example where you format the URL in a RESTish style would be
      perfect.
      Maybe with both GET & POST if it isn't too much trouble.

      Thanks a lot.

      Regards
      Multi-Support A/S

      Torben Riis
      --------------------------------------------------------------------
      Phone +45 96 600 600, Fax +45 96 600 601
      E-mail: riis@multi-support.com
      http://www.multi-support.com



                   "keith chapman"
                   <keithgchapman@gm
                   ail.com >
      To
                                             axis-user@ws.apache.org
                   11-07-2007 07:40
      cc


      Subject
                   Please respond to         Re: Axis2: RESTful
      implementation
                   axis-user@ws.apac          with Axis2
                        he.org









      The WSDL 2.0 primer  is a good starting place. It takes you through
      the
      concepts of WSDL 2.0 very nicely (without making things too complex).
      WSDL
      2.0 is a whole lot clean and easy to understand. If you like I can
      write a
      sample WSDL 2.0 doc for you if you have an example in mind :).

      And yes you can use the http methods GET, POST, PUT & DELETE in the
      same
      service. Its just that you cant use them on the same operation.

      Thanks,
      Keith.

      On 7/11/07, riis@multi-support.com < riis@multi-support.com> wrote:

            Hi Keith,

            Thank you for answering.

            When I earlier talked about using the http methods GET, POST,
      PUT &
            DELETE,
            I actually meant using them in the same service.

            WSDL 2.0 really sounds interesting.

            I have a little knowledge about WSDL 1.1/1.2, because I'm
      studying
            for the
            SCDJWS exam, but I doesn't know anything about WSDL 2.0.
            I guess a lot has changed since it is possible to describe how
      the
            URL
            should be formatted and whether  to use http methods GET, POST,
      PUT
            or
            DELETE.

            Do you have or know a place where I can find simple example
      WSDL
            describing
            such a service?
            Or would it be best just start reading WSDL 2.0 HTTPBinding.


            Regards
            Multi-Support A/S

            Torben Riis

      --------------------------------------------------------------------
            Phone +45 96 600 600, Fax +45 96 600 601
            E-mail: riis@multi-support.com
            http://www.multi-support.com



                         "keith chapman"
                         < keithgchapman@gm
                         ail.com>
            To
                                                   axis-user@ws.apache.org
                         11-07-2007 06:45
            cc


            Subject
                         Please respond to         Re: Axis2: RESTful
            implementation
                         axis-user@ws.apac         with Axis2
                              he.org









            See comments inline.

            On 7/10/07, riis@multi-support.com <riis@multi-support.com >
      wrote:

                  Hi,

                  I have some questions regarding implementing a RESTfull
            service.
                  After
                  reading a lot of previous RESTish threads I got quite
      confused.
                  So I hope someone can help me straightened it out.

                  If I want to create a RESTful service with Axis2 would it
      then
                  require that
                  the service is implemented as RPC, or can other message
            receivers be
                  used?


                  Is it possible to create a RESTful service with Axis2
      that can
            be
                  reached
                  in the following way:
                  http://www.boeing.com/rest/aircraft/747
                  instead of


      http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747

            Yes this can be done. REST support in Axis2 was achieved  via
      the
            WSDL 2.0
            HTTPBinding (If you are not familiar with WSDL this might sound
      a bit
            strange). The kind of question you asked can easily be done by
            deploying
            your service via a WSDL 2.0 description. Please have a look at
      the
            primer
            it has some easy to understand examples.

                  First i actually thought that a RESTful service should
            implement some
                  sort
                  of interface with methods corresponding to GET, POST, PUT
      &
            DELETE.
                  But I read in some of the other threads that a RESTful
      service
            should
                  only
                  have one method. Isn't that a problem if you try to
      accomplice
            the
                  syntax
                  that the following articles describes.

            Yes you can use all 4 HTTP methods described above, depending
      on your
            requirement. Its all about using the appropriate method (Not
      that you
            must
            use just one method)



      http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html



                   http://www.xfront.com/REST-Web-Services.html

                  Where the same url has different functionality depending
      on how
            it is

                  called (GET, POST).
                  GET   /order/{id} Get order details
                  POST  /order/{id} Add item

            the current version of Axis2 does not support this (But it can
      be
            included,
            I will file a JIRA on this and try to get it into the 1.3
      release.)

            Please let us know if you need more help (Can even assist you
      in
            writing
            down the WSDL 2.0 description)

            Thanks,
            Keith.

                  Regards
                  Multi-Support A/S

                  Torben Riis


      --------------------------------------------------------------------
                  Phone +45 96 600 600, Fax +45 96 600 601
                  E-mail: riis@multi-support.com
                  http://www.multi-support.com




      ---------------------------------------------------------------------


                  To unsubscribe, e-mail:
      axis-user-unsubscribe@ws.apache.org
                  For additional commands, e-mail:
      axis-user-help@ws.apache.org




            --
            Keith Chapman
            WSO2 Inc.
            Oxygen for Web Services Developers.
            http://wso2.org/



      ---------------------------------------------------------------------


            To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
            For additional commands, e-mail: axis-user-help@ws.apache.org




      --
      Keith Chapman
      WSO2 Inc.
      Oxygen for Web Services Developers.
      http://wso2.org/


      ---------------------------------------------------------------------

      To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
      For additional commands, e-mail: axis-user-help@ws.apache.org




--
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2: RESTful implementation with Axis2

Posted by keith chapman <ke...@gmail.com>.
here is a sample Weather.wsdl2. Please let me know if you need any
clarifications.

<description xmlns="http://www.w3.org/ns/wsdl"
             targetNamespace="http://example.axis2.apache.org"
             xmlns:tns="http://example.axis2.apache.org"
             xmlns:wsoap="http://www.w3.org/ns/wsdl/soap"
             xmlns:whttp="http://www.w3.org/ns/wsdl/http"
             xmlns:xsd1="http://example.axis2.apache.org/xsd"
             xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <documentation>
        Just a sample service to explain WSDL 2.0 semantics
    </documentation>

    <types>
        <xs:schema elementFormDefault="qualified"
                   targetNamespace="http://example.axis2.apache.org/xsd"
                   xmlns:xs="http://www.w3.org/2001/XMLSchema"
                   xmlns:xsd1="http://example.axis2.apache.org/xsd">

            <xs:element name="weather" type="xsd1:weatherStructType"/>
            <xs:complexType name="weatherStructType">
                <xs:sequence>
                    <xs:element name="temparature" type="xs:int"/>
                    <xs:element name="sky" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>

            <xs:element name="location" type="xsd1:locationStructType"/>
            <xs:complexType name="locationStructType">
                <xs:sequence>
                    <xs:element name="country" type="xs:string"/>
                    <xs:element name="city" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>

            <xs:element name="response" type="xs:string"/>

            <xs:element name="weatherFault"
type="xsd1:weatherFaultStructType"/>
            <xs:complexType name="weatherFaultStructType">
                <xs:sequence>
                    <xs:element name="Fault" type="xs:string"/>
                    <xs:element name="country" type="xs:string"/>
                    <xs:element name="city" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>

            <xs:element name="weatherDetails"
type="xsd1:weatherDetailsStructType"/>
            <xs:complexType name="weatherDetailsStructType">
                <xs:sequence>
                    <xs:element name="weather"
type="xsd1:weatherStructType"/>
                    <xs:element name="location"
type="xsd1:locationStructType"/>
                </xs:sequence>
            </xs:complexType>
        </xs:schema>
    </types>

    <interface name="Weather">
        <documentation>
            This is where the abstract descriptions of the operations are
given. Note that WSDL 2.0
            has the concept of reusing faults, hence they are described at
the interface level.
        </documentation>
        <fault name="weatherFault" element="xsd1:weatherFault"></fault>

        <operation name="getWeather" pattern="
http://www.w3.org/ns/wsdl/in-out">
            <input element="xsd1:location"/>
            <output element="xsd1:weather"/>
            <outfault ref="tns:weatherFault"/>
        </operation>

        <operation name="setWeather" pattern="
http://www.w3.org/ns/wsdl/in-out">
            <input element="xsd1:weatherDetails"/>
            <output element="xsd1:response"/>
            <outfault ref="tns:weatherFault"/>
        </operation>

    </interface>

    <binding name="WeatherHTTPBinding" interface="tns:Weather"
             type="http://www.w3.org/ns/wsdl/http">
        <documentation>
            This binding binds the weather interface to RESTish style
invocations.
            NOTE : The URL for the operation is constracted by resolving the
httplocation against
            the base uri.
            e.g. If the country was srilanka and the city was colombo then
the URL will be

http://example.org/WeatherService/WeatherServiceSOAPEndpoint/Weather/srilanka/colombo
        </documentation>
        <fault ref="tns:weatherFault" whttp:code="402"/>
        <operation ref="tns:getWeather" whttp:method="GET"

whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>
        <operation ref="tns:setWeather" whttp:method="PUT"

whttp:location="WeatherServiceHTTPEndpoint/Update/{country}/{city}"/>
        <!--Ideally this should be as follows. Will fux it in the trunk-->
        <!--<operation ref="tns:setWeather" whttp:method="POST"
whttp:location="WeatherServiceHTTPEndpoint/Weather/{country}/{city}"/>-->
    </binding>

    <service name="WeatherService" interface="tns:Weather">
        <endpoint name="WeatherServiceHTTPEndpoint"
binding="tns:WeatherHTTPBinding"
                  address="
http://example.org/WeatherService/WeatherServiceHTTPEndpoint/"/>
    </service>

</description>

Thanks,
Keith.

On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>
> Hi Keith,
>
> An example would be very nice. ;-)
> An example where you format the URL in a RESTish style would be perfect.
> Maybe with both GET & POST if it isn't too much trouble.
>
> Thanks a lot.
>
> Regards
> Multi-Support A/S
>
> Torben Riis
> --------------------------------------------------------------------
> Phone +45 96 600 600, Fax +45 96 600 601
> E-mail: riis@multi-support.com
> http://www.multi-support.com
>
>
>
>              "keith chapman"
>              <keithgchapman@gm
>              ail.com>                                                   To
>                                        axis-user@ws.apache.org
>              11-07-2007 07:40                                           cc
>
>                                                                    Subject
>              Please respond to         Re: Axis2: RESTful implementation
>              axis-user@ws.apac         with Axis2
>                   he.org
>
>
>
>
>
>
>
>
>
> The WSDL 2.0 primer  is a good starting place. It takes you through the
> concepts of WSDL 2.0 very nicely (without making things too complex). WSDL
> 2.0 is a whole lot clean and easy to understand. If you like I can write a
> sample WSDL 2.0 doc for you if you have an example in mind :).
>
> And yes you can use the http methods GET, POST, PUT & DELETE in the same
> service. Its just that you cant use them on the same operation.
>
> Thanks,
> Keith.
>
> On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>       Hi Keith,
>
>       Thank you for answering.
>
>       When I earlier talked about using the http methods GET, POST, PUT &
>       DELETE,
>       I actually meant using them in the same service.
>
>       WSDL 2.0 really sounds interesting.
>
>       I have a little knowledge about WSDL 1.1/1.2, because I'm studying
>       for the
>       SCDJWS exam, but I doesn't know anything about WSDL 2.0.
>       I guess a lot has changed since it is possible to describe how the
>       URL
>       should be formatted and whether  to use http methods GET, POST, PUT
>       or
>       DELETE.
>
>       Do you have or know a place where I can find simple example WSDL
>       describing
>       such a service?
>       Or would it be best just start reading WSDL 2.0 HTTPBinding.
>
>
>       Regards
>       Multi-Support A/S
>
>       Torben Riis
>       --------------------------------------------------------------------
>       Phone +45 96 600 600, Fax +45 96 600 601
>       E-mail: riis@multi-support.com
>       http://www.multi-support.com
>
>
>
>                    "keith chapman"
>                    < keithgchapman@gm
>                    ail.com>
>       To
>                                              axis-user@ws.apache.org
>                    11-07-2007 06:45
>       cc
>
>
>       Subject
>                    Please respond to         Re: Axis2: RESTful
>       implementation
>                    axis-user@ws.apac         with Axis2
>                         he.org
>
>
>
>
>
>
>
>
>
>       See comments inline.
>
>       On 7/10/07, riis@multi-support.com <riis@multi-support.com > wrote:
>
>             Hi,
>
>             I have some questions regarding implementing a RESTfull
>       service.
>             After
>             reading a lot of previous RESTish threads I got quite
> confused.
>             So I hope someone can help me straightened it out.
>
>             If I want to create a RESTful service with Axis2 would it then
>             require that
>             the service is implemented as RPC, or can other message
>       receivers be
>             used?
>
>
>             Is it possible to create a RESTful service with Axis2 that can
>       be
>             reached
>             in the following way:
>             http://www.boeing.com/rest/aircraft/747
>             instead of
>
>       http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747
>
>       Yes this can be done. REST support in Axis2 was achieved  via the
>       WSDL 2.0
>       HTTPBinding (If you are not familiar with WSDL this might sound a
> bit
>       strange). The kind of question you asked can easily be done by
>       deploying
>       your service via a WSDL 2.0 description. Please have a look at the
>       primer
>       it has some easy to understand examples.
>
>             First i actually thought that a RESTful service should
>       implement some
>             sort
>             of interface with methods corresponding to GET, POST, PUT &
>       DELETE.
>             But I read in some of the other threads that a RESTful service
>       should
>             only
>             have one method. Isn't that a problem if you try to accomplice
>       the
>             syntax
>             that the following articles describes.
>
>       Yes you can use all 4 HTTP methods described above, depending on
> your
>       requirement. Its all about using the appropriate method (Not that
> you
>       must
>       use just one method)
>
>
>
> http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html
>
>
>              http://www.xfront.com/REST-Web-Services.html
>
>             Where the same url has different functionality depending on
> how
>       it is
>
>             called (GET, POST).
>             GET   /order/{id} Get order details
>             POST  /order/{id} Add item
>
>       the current version of Axis2 does not support this (But it can be
>       included,
>       I will file a JIRA on this and try to get it into the 1.3 release.)
>
>       Please let us know if you need more help (Can even assist you in
>       writing
>       down the WSDL 2.0 description)
>
>       Thanks,
>       Keith.
>
>             Regards
>             Multi-Support A/S
>
>             Torben Riis
>
>       --------------------------------------------------------------------
>             Phone +45 96 600 600, Fax +45 96 600 601
>             E-mail: riis@multi-support.com
>             http://www.multi-support.com
>
>
>
>
>       ---------------------------------------------------------------------
>
>             To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>             For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
>       --
>       Keith Chapman
>       WSO2 Inc.
>       Oxygen for Web Services Developers.
>       http://wso2.org/
>
>
>
>       ---------------------------------------------------------------------
>
>       To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>       For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
> --
> Keith Chapman
> WSO2 Inc.
> Oxygen for Web Services Developers.
> http://wso2.org/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>


-- 
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/

Re: Axis2: RESTful implementation with Axis2

Posted by ri...@multi-support.com.
Hi Keith,

An example would be very nice. ;-)
An example where you format the URL in a RESTish style would be perfect.
Maybe with both GET & POST if it isn't too much trouble.

Thanks a lot.

Regards
Multi-Support A/S

Torben Riis
--------------------------------------------------------------------
Phone +45 96 600 600, Fax +45 96 600 601
E-mail: riis@multi-support.com
http://www.multi-support.com


                                                                           
             "keith chapman"                                               
             <keithgchapman@gm                                             
             ail.com>                                                   To 
                                       axis-user@ws.apache.org             
             11-07-2007 07:40                                           cc 
                                                                           
                                                                   Subject 
             Please respond to         Re: Axis2: RESTful implementation   
             axis-user@ws.apac         with Axis2                          
                  he.org                                                   
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




The WSDL 2.0 primer  is a good starting place. It takes you through the
concepts of WSDL 2.0 very nicely (without making things too complex). WSDL
2.0 is a whole lot clean and easy to understand. If you like I can write a
sample WSDL 2.0 doc for you if you have an example in mind :).

And yes you can use the http methods GET, POST, PUT & DELETE in the same
service. Its just that you cant use them on the same operation.

Thanks,
Keith.

On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:

      Hi Keith,

      Thank you for answering.

      When I earlier talked about using the http methods GET, POST, PUT &
      DELETE,
      I actually meant using them in the same service.

      WSDL 2.0 really sounds interesting.

      I have a little knowledge about WSDL 1.1/1.2, because I'm studying
      for the
      SCDJWS exam, but I doesn't know anything about WSDL 2.0.
      I guess a lot has changed since it is possible to describe how the
      URL
      should be formatted and whether  to use http methods GET, POST, PUT
      or
      DELETE.

      Do you have or know a place where I can find simple example WSDL
      describing
      such a service?
      Or would it be best just start reading WSDL 2.0 HTTPBinding.


      Regards
      Multi-Support A/S

      Torben Riis
      --------------------------------------------------------------------
      Phone +45 96 600 600, Fax +45 96 600 601
      E-mail: riis@multi-support.com
      http://www.multi-support.com



                   "keith chapman"
                   < keithgchapman@gm
                   ail.com>
      To
                                             axis-user@ws.apache.org
                   11-07-2007 06:45
      cc


      Subject
                   Please respond to         Re: Axis2: RESTful
      implementation
                   axis-user@ws.apac         with Axis2
                        he.org









      See comments inline.

      On 7/10/07, riis@multi-support.com <riis@multi-support.com > wrote:

            Hi,

            I have some questions regarding implementing a RESTfull
      service.
            After
            reading a lot of previous RESTish threads I got quite confused.
            So I hope someone can help me straightened it out.

            If I want to create a RESTful service with Axis2 would it then
            require that
            the service is implemented as RPC, or can other message
      receivers be
            used?


            Is it possible to create a RESTful service with Axis2 that can
      be
            reached
            in the following way:
            http://www.boeing.com/rest/aircraft/747
            instead of

      http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747

      Yes this can be done. REST support in Axis2 was achieved  via the
      WSDL 2.0
      HTTPBinding (If you are not familiar with WSDL this might sound a bit
      strange). The kind of question you asked can easily be done by
      deploying
      your service via a WSDL 2.0 description. Please have a look at the
      primer
      it has some easy to understand examples.

            First i actually thought that a RESTful service should
      implement some
            sort
            of interface with methods corresponding to GET, POST, PUT &
      DELETE.
            But I read in some of the other threads that a RESTful service
      should
            only
            have one method. Isn't that a problem if you try to accomplice
      the
            syntax
            that the following articles describes.

      Yes you can use all 4 HTTP methods described above, depending on your
      requirement. Its all about using the appropriate method (Not that you
      must
      use just one method)


      http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html


             http://www.xfront.com/REST-Web-Services.html

            Where the same url has different functionality depending on how
      it is

            called (GET, POST).
            GET   /order/{id} Get order details
            POST  /order/{id} Add item

      the current version of Axis2 does not support this (But it can be
      included,
      I will file a JIRA on this and try to get it into the 1.3 release.)

      Please let us know if you need more help (Can even assist you in
      writing
      down the WSDL 2.0 description)

      Thanks,
      Keith.

            Regards
            Multi-Support A/S

            Torben Riis

      --------------------------------------------------------------------
            Phone +45 96 600 600, Fax +45 96 600 601
            E-mail: riis@multi-support.com
            http://www.multi-support.com



      ---------------------------------------------------------------------

            To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
            For additional commands, e-mail: axis-user-help@ws.apache.org




      --
      Keith Chapman
      WSO2 Inc.
      Oxygen for Web Services Developers.
      http://wso2.org/


      ---------------------------------------------------------------------

      To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
      For additional commands, e-mail: axis-user-help@ws.apache.org




--
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2: RESTful implementation with Axis2

Posted by keith chapman <ke...@gmail.com>.
The WSDL 2.0 primer <http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626/>
is a good starting place. It takes you through the concepts of WSDL 2.0 very
nicely (without making things too complex). WSDL 2.0 is a whole lot clean
and easy to understand. If you like I can write a sample WSDL 2.0 doc for
you if you have an example in mind :).

And yes you can use the http methods GET, POST, PUT & DELETE in the same
service. Its just that you cant use them on the same operation.

Thanks,
Keith.

On 7/11/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>
> Hi Keith,
>
> Thank you for answering.
>
> When I earlier talked about using the http methods GET, POST, PUT &
> DELETE,
> I actually meant using them in the same service.
>
> WSDL 2.0 really sounds interesting.
>
> I have a little knowledge about WSDL 1.1/1.2, because I'm studying for the
> SCDJWS exam, but I doesn't know anything about WSDL 2.0.
> I guess a lot has changed since it is possible to describe how the URL
> should be formatted and whether  to use http methods GET, POST, PUT or
> DELETE.
>
> Do you have or know a place where I can find simple example WSDL
> describing
> such a service?
> Or would it be best just start reading WSDL 2.0 HTTPBinding.
>
>
> Regards
> Multi-Support A/S
>
> Torben Riis
> --------------------------------------------------------------------
> Phone +45 96 600 600, Fax +45 96 600 601
> E-mail: riis@multi-support.com
> http://www.multi-support.com
>
>
>
>              "keith chapman"
>              <keithgchapman@gm
>              ail.com>                                                   To
>                                        axis-user@ws.apache.org
>              11-07-2007 06:45                                           cc
>
>                                                                    Subject
>              Please respond to         Re: Axis2: RESTful implementation
>              axis-user@ws.apac         with Axis2
>                   he.org
>
>
>
>
>
>
>
>
>
> See comments inline.
>
> On 7/10/07, riis@multi-support.com <riis@multi-support.com > wrote:
>
>       Hi,
>
>       I have some questions regarding implementing a RESTfull service.
>       After
>       reading a lot of previous RESTish threads I got quite confused.
>       So I hope someone can help me straightened it out.
>
>       If I want to create a RESTful service with Axis2 would it then
>       require that
>       the service is implemented as RPC, or can other message receivers be
>       used?
>
>
>       Is it possible to create a RESTful service with Axis2 that can be
>       reached
>       in the following way:
>       http://www.boeing.com/rest/aircraft/747
>       instead of
>       http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747
>
> Yes this can be done. REST support in Axis2 was achieved  via the WSDL 2.0
> HTTPBinding (If you are not familiar with WSDL this might sound a bit
> strange). The kind of question you asked can easily be done by deploying
> your service via a WSDL 2.0 description. Please have a look at the primer
> it has some easy to understand examples.
>
>       First i actually thought that a RESTful service should implement
> some
>       sort
>       of interface with methods corresponding to GET, POST, PUT & DELETE.
>       But I read in some of the other threads that a RESTful service
> should
>       only
>       have one method. Isn't that a problem if you try to accomplice the
>       syntax
>       that the following articles describes.
>
> Yes you can use all 4 HTTP methods described above, depending on your
> requirement. Its all about using the appropriate method (Not that you must
> use just one method)
>
>
> http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html
>
>       http://www.xfront.com/REST-Web-Services.html
>
>       Where the same url has different functionality depending on how it
> is
>
>       called (GET, POST).
>       GET   /order/{id} Get order details
>       POST  /order/{id} Add item
>
> the current version of Axis2 does not support this (But it can be
> included,
> I will file a JIRA on this and try to get it into the 1.3 release.)
>
> Please let us know if you need more help (Can even assist you in writing
> down the WSDL 2.0 description)
>
> Thanks,
> Keith.
>
>       Regards
>       Multi-Support A/S
>
>       Torben Riis
>       --------------------------------------------------------------------
>       Phone +45 96 600 600, Fax +45 96 600 601
>       E-mail: riis@multi-support.com
>       http://www.multi-support.com
>
>
>
>       ---------------------------------------------------------------------
>       To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>       For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>
>
> --
> Keith Chapman
> WSO2 Inc.
> Oxygen for Web Services Developers.
> http://wso2.org/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>


-- 
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/

Re: Axis2: RESTful implementation with Axis2

Posted by ri...@multi-support.com.
Hi Keith,

Thank you for answering.

When I earlier talked about using the http methods GET, POST, PUT & DELETE,
I actually meant using them in the same service.

WSDL 2.0 really sounds interesting.

I have a little knowledge about WSDL 1.1/1.2, because I'm studying for the
SCDJWS exam, but I doesn't know anything about WSDL 2.0.
I guess a lot has changed since it is possible to describe how the URL
should be formatted and whether  to use http methods GET, POST, PUT or
DELETE.

Do you have or know a place where I can find simple example WSDL describing
such a service?
Or would it be best just start reading WSDL 2.0 HTTPBinding.


Regards
Multi-Support A/S

Torben Riis
--------------------------------------------------------------------
Phone +45 96 600 600, Fax +45 96 600 601
E-mail: riis@multi-support.com
http://www.multi-support.com


                                                                           
             "keith chapman"                                               
             <keithgchapman@gm                                             
             ail.com>                                                   To 
                                       axis-user@ws.apache.org             
             11-07-2007 06:45                                           cc 
                                                                           
                                                                   Subject 
             Please respond to         Re: Axis2: RESTful implementation   
             axis-user@ws.apac         with Axis2                          
                  he.org                                                   
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




See comments inline.

On 7/10/07, riis@multi-support.com <riis@multi-support.com > wrote:

      Hi,

      I have some questions regarding implementing a RESTfull service.
      After
      reading a lot of previous RESTish threads I got quite confused.
      So I hope someone can help me straightened it out.

      If I want to create a RESTful service with Axis2 would it then
      require that
      the service is implemented as RPC, or can other message receivers be
      used?


      Is it possible to create a RESTful service with Axis2 that can be
      reached
      in the following way:
      http://www.boeing.com/rest/aircraft/747
      instead of
      http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747

Yes this can be done. REST support in Axis2 was achieved  via the WSDL 2.0
HTTPBinding (If you are not familiar with WSDL this might sound a bit
strange). The kind of question you asked can easily be done by deploying
your service via a WSDL 2.0 description. Please have a look at the primer
it has some easy to understand examples.

      First i actually thought that a RESTful service should implement some
      sort
      of interface with methods corresponding to GET, POST, PUT & DELETE.
      But I read in some of the other threads that a RESTful service should
      only
      have one method. Isn't that a problem if you try to accomplice the
      syntax
      that the following articles describes.

Yes you can use all 4 HTTP methods described above, depending on your
requirement. Its all about using the appropriate method (Not that you must
use just one method)

      http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html

      http://www.xfront.com/REST-Web-Services.html

      Where the same url has different functionality depending on how it is

      called (GET, POST).
      GET   /order/{id} Get order details
      POST  /order/{id} Add item

the current version of Axis2 does not support this (But it can be included,
I will file a JIRA on this and try to get it into the 1.3 release.)

Please let us know if you need more help (Can even assist you in writing
down the WSDL 2.0 description)

Thanks,
Keith.

      Regards
      Multi-Support A/S

      Torben Riis
      --------------------------------------------------------------------
      Phone +45 96 600 600, Fax +45 96 600 601
      E-mail: riis@multi-support.com
      http://www.multi-support.com


      ---------------------------------------------------------------------
      To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
      For additional commands, e-mail: axis-user-help@ws.apache.org




--
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: Axis2: RESTful implementation with Axis2

Posted by keith chapman <ke...@gmail.com>.
See comments inline.

On 7/10/07, riis@multi-support.com <ri...@multi-support.com> wrote:
>
>
> Hi,
>
> I have some questions regarding implementing a RESTfull service. After
> reading a lot of previous RESTish threads I got quite confused.
> So I hope someone can help me straightened it out.
>
> If I want to create a RESTful service with Axis2 would it then require
> that
> the service is implemented as RPC, or can other message receivers be used?
>
>
> Is it possible to create a RESTful service with Axis2 that can be reached
> in the following way:
> http://www.boeing.com/rest/aircraft/747
> instead of
> http://www.boeing.com/rest/MyAircraftServices/getAircraft?model=747


Yes this can be done. REST support in Axis2 was achieved  via the WSDL
2.0<http://www.w3.org/2002/ws/desc/>
HTTPBinding<http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626/#http-binding>(If
you are not familiar with WSDL this might sound a bit strange). The
kind
of question you asked can easily be done by deploying your service via a WSDL
2.0 <http://www.w3.org/2002/ws/desc/> description. Please have a look at the
primer it has some easy to understand examples.

First i actually thought that a RESTful service should implement some sort
> of interface with methods corresponding to GET, POST, PUT & DELETE.
> But I read in some of the other threads that a RESTful service should only
> have one method. Isn't that a problem if you try to accomplice the syntax
> that the following articles describes.


Yes you can use all 4 HTTP methods described above, depending on your
requirement. Its all about using the appropriate method (Not that you must
use just one method)

http://www.innoq.com/blog/st/2006/06/30/rest_vs_soap_oh_no_not_again.html
> http://www.xfront.com/REST-Web-Services.html
>
> Where the same url has different functionality depending on how it is
> called (GET, POST).
> GET   /order/{id} Get order details
> POST  /order/{id} Add item


the current version of Axis2 does not support this (But it can be included,
I will file a JIRA on this and try to get it into the 1.3 release.)

Please let us know if you need more help (Can even assist you in writing
down the WSDL 2.0 description)

Thanks,
Keith.

Regards
> Multi-Support A/S
>
> Torben Riis
> --------------------------------------------------------------------
> Phone +45 96 600 600, Fax +45 96 600 601
> E-mail: riis@multi-support.com
> http://www.multi-support.com
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>


-- 
Keith Chapman
WSO2 Inc.
Oxygen for Web Services Developers.
http://wso2.org/