Hi,
  I have attached the source-code, test samples and a document
describing the changes to the JIRA TUSCANY-2919
(https://issues.apache.org/jira/browse/TUSCANY-2919).
Let me know if you need more information.
Can the JIRA be assigned?

thnx,
-Prateek Temkar

On Wed, Mar 18, 2009 at 11:39 AM, Raymond Feng <[email protected]> wrote:
> Thanks. This is great. I look forward to seeing the code and working with
> you to refine it.
>
> Raymond
> --------------------------------------------------
> From: "Prateek Temkar" <[email protected]>
> Sent: Wednesday, March 18, 2009 10:57 AM
> To: <[email protected]>
> Subject: Re: Implemented JAX-RS support
>
>> Created JIRA TUSCANY-2919
>> (https://issues.apache.org/jira/browse/TUSCANY-2919)
>>
>> I'll post the code in a week. Need to do some refactoring to remove
>> stuff not pertaining to the JAX-RS extension.
>>
>> thnx,
>> -Prateek Temkar
>>
>>
>> --------------------------------------------------------------------------------------------------------------------------------------
>>
>>
>>
>> On Tue, Mar 17, 2009 at 3:22 PM, Luciano Resende <[email protected]>
>> wrote:
>>>
>>> On Tue, Mar 17, 2009 at 3:08 PM, Prateek Temkar <[email protected]>
>>> wrote:
>>>>
>>>> Hello All,
>>>>
>>>>    We have been working on a REST binding in Tuscany and have been
>>>> able to implement one. It  lets the Tuscany components expose RESTful
>>>> services in addition to other services they can already expose. We
>>>> have used Jersey, the JAX-RS Reference implementation developed by
>>>> Sun.
>>>>
>>>
>>> Great, Jersey is licensed under CDDL and we would be able to use it
>>> based on Apache Third-Party Licensing Policy.
>>>
>>> [1] http://www.apache.org/legal/3party.html
>>>
>>>> I came across
>>>> http://www.mail-archive.com/[email protected]/msg05857.html
>>>> where Tuscany devs have expressed interest in implementing JAX-RS
>>>> support and  figured that I'd share what we have done. (Unfortunately,
>>>> I could not reply to that thread and had to start a new one as I had
>>>> not subscribed to the dev mailer)
>>>>
>>>> At a high level, what we do is, after Tuscany identifies that the
>>>> binding involved is the REST-binding, we transfer the request to
>>>> Jersey's ServletContainer. Jersey facilitates the addition of runtime
>>>> annotations to Java programming language class files to define
>>>> resources and the actions that can be performed on those resources.
>>>> Plain Jersey would identify the method (and the arguments )to be
>>>> invoked on a root resource class instance given the URI; Instead, we
>>>> invoke a method in our binding (Tuscany), details below, and return
>>>> the result to Jersey which forms and returns the Http response.
>>>>
>>>> Here is what we have done in detail:
>>>>
>>>>  - Tuscany ships with the JSON RPC binding. We replicated the JSONRPC
>>>> binding and made the ServiceServlet forward all REST-requests to
>>>> Jersey's servlet engine.
>>>>
>>>> -We have modified Jersey source code.
>>>> When Jersey is done mapping the URI to the resource and interpreting
>>>> all the annotations in the resource, it transfers control to Tuscany
>>>> (rest-runtime-binding) by invoking a method in our binding. Jersey has
>>>> the following information: - The resource instance on which the method
>>>> is to be invoked, - The Method object corresponding to the method to
>>>> be invoked, - The arguments to the method.
>>>>
>>>>  - We pass the Method object and the arguments to Tuscany by invoking
>>>> a method. We don't pass the instance right away but save it in a
>>>> static map with the thread id as the key (it is a single thread of
>>>> execution). This method creates an instance of Operation using the
>>>> method information and calls wire.invoke() with the Operation and the
>>>> method arguments.
>>>>
>>>>  - Inside the ReflectiveInstanceFactory, in the newInstance() method,
>>>> we get the instance that Jersey has stored in its map (using the
>>>> thread id) and let Tuscany's Injectors operate on it.The result is
>>>> returned by the same chain back to Jersey which eventually returns the
>>>> http response.
>>>>
>>>> We are aware that there are better ways to officially extend Tuscany
>>>> like how Raymond mentioned at
>>>> http://www.mail-archive.com/[email protected]/msg05857.html but
>>>> nevertheless thought we'd share our experience. We would be more than
>>>> happy to discuss contributing our code back to Tuscany if there is
>>>> enough interest.
>>>>
>>>
>>> This is really good, please raise a JIRA and provide the extension so
>>> we can provide any feedback and get it applied to Tuscany svn.
>>>
>>>> thnx,
>>>>
>>>> - Prateek Temkar
>>>>
>>>
>>>
>>>
>>> --
>>> Luciano Resende
>>> Apache Tuscany, Apache PhotArk
>>> http://people.apache.org/~lresende
>>> http://lresende.blogspot.com/
>>>
>

Reply via email to