You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Prateek Temkar (JIRA)" <de...@tuscany.apache.org> on 2009/04/03 00:41:13 UTC
[jira] Updated: (TUSCANY-2919) Implement JAX-RS Support in Tuscany
1.4
[ https://issues.apache.org/jira/browse/TUSCANY-2919?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Prateek Temkar updated TUSCANY-2919:
------------------------------------
Attachment: jersey-server.zip
SamplesAndDoc.zip
tuscanyModules.zip
Please refer to the doc (contribute JAX-RS to Tuscany_1-4.doc) for the exact changes.
Attaching the following:
- tuscanyModules.zip (Tuscany 1.4)
Includes the following modules: binding-rest, binding-rest-runtime, host-webapp, implementation-java-runtime
- jersey-server.zip(1.0.1-Snapshot)
I could not attach the whole Jersey distribution because it exceeded 10.00 MB. I have only changed jersey-server.
- SamplesAndDoc.zip
Samples to test the REST binding and Document on contents of the changed/newly added modules.
> Implement JAX-RS Support in Tuscany 1.4
> ---------------------------------------
>
> Key: TUSCANY-2919
> URL: https://issues.apache.org/jira/browse/TUSCANY-2919
> Project: Tuscany
> Issue Type: New Feature
> Environment: Windows/Linux; Tomcat/Jetty
> Reporter: Prateek Temkar
> Fix For: Java-SCA-1.4
>
> Attachments: jersey-server.zip, SamplesAndDoc.zip, tuscanyModules.zip
>
> Original Estimate: 336h
> Remaining Estimate: 336h
>
> 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
> 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/dev@tuscany.apache.org/msg05857.html but
> nevertheless thought we'd share our experience.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.