Author: buildbot Date: Tue Jul 29 19:47:04 2014 New Revision: 917859 Log: Production update by buildbot for cxf
Modified: websites/production/cxf/content/cache/docs.pageCache websites/production/cxf/content/docs/jax-rs.html Modified: websites/production/cxf/content/cache/docs.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/cxf/content/docs/jax-rs.html ============================================================================== --- websites/production/cxf/content/docs/jax-rs.html (original) +++ websites/production/cxf/content/docs/jax-rs.html Tue Jul 29 19:47:04 2014 @@ -118,12 +118,12 @@ Apache CXF -- JAX-RS <td height="100%"> <!-- Content --> <div class="wiki-content"> -<div id="ConfluenceContent"><p> </p><p> </p><p><span style="font-size:2em;font-weight:bold"> JAX-RS (JSR-339) </span></p><p> </p><p> </p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1400294781239 {padding: 0px;} -div.rbtoc1400294781239 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1400294781239 li {margin-left: 0px;padding-left: 0px;} +<div id="ConfluenceContent"><p> </p><p> </p><span style="font-size:2em;font-weight:bold"> JAX-RS (JSR-339) </span><p> </p><p> </p><p><style type="text/css">/*<![CDATA[*/ +div.rbtoc1406663198049 {padding: 0px;} +div.rbtoc1406663198049 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1406663198049 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1400294781239"> +/*]]>*/</style></p><div class="toc-macro rbtoc1406663198049"> <ul class="toc-indentation"><li><a shape="rect" href="#JAX-RS-Introduction">Introduction</a></li><li><a shape="rect" href="#JAX-RS-JAX-RSCompliance">JAX-RS Compliance</a> <ul class="toc-indentation"><li><a shape="rect" href="#JAX-RS-1.1">1.1</a></li><li><a shape="rect" href="#JAX-RS-2.0Final">2.0 Final</a></li></ul> </li><li><a shape="rect" href="#JAX-RS-Projectsetupandconfiguration">Project setup and configuration</a> @@ -137,7 +137,7 @@ div.rbtoc1400294781239 li {margin-left: </li><li><a shape="rect" href="#JAX-RS-AdvancedFeatures">Advanced Features</a> <ul class="toc-indentation"><li><a shape="rect" href="#JAX-RS-Multiparts">Multiparts</a></li><li><a shape="rect" href="#JAX-RS-SecureJAX-RSservices">Secure JAX-RS services</a></li><li><a shape="rect" href="#JAX-RS-FailoverandLoadDistributionFeatures">Failover and Load Distribution Features</a></li><li><a shape="rect" href="#JAX-RS-Redirection">Redirection</a></li><li><a shape="rect" href="#JAX-RS-XSLTandXPath">XSLT and XPath</a></li><li><a shape="rect" href="#JAX-RS-ComplexSearchQueries">Complex Search Queries</a></li><li><a shape="rect" href="#JAX-RS-Model-View-Controllersupport">Model-View-Controller support</a></li><li><a shape="rect" href="#JAX-RS-CombiningJAX-WSandJAX-RS">Combining JAX-WS and JAX-RS</a></li><li><a shape="rect" href="#JAX-RS-IntegrationwithDistributedOSGi">Integration with Distributed OSGi</a></li><li><a shape="rect" href="#JAX-RS-OtherAdvancedFeatures">Other Advanced Features</a></li></ul> </li><li><a shape="rect" href="#JAX-RS-MavenPlugins">Maven Plugins</a></li><li><a shape="rect" href="#JAX-RS-Deployment">Deployment</a></li><li><a shape="rect" href="#JAX-RS-Third-partyprojects">Third-party projects</a></li><li><a shape="rect" href="#JAX-RS-References">References</a></li><li><a shape="rect" href="#JAX-RS-Howtocontribute">How to contribute</a></li></ul> -</div><h1 id="JAX-RS-Introduction">Introduction</h1><p><a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/JAX-RS" rel="nofollow">JAX-RS</a>: Java API for RESTful Web Services is a Java programming language API that provides support in creating web services according to the Representational State Transfer (REST) architectural style.</p><p>CXF supports the Java API for RESTful Web Services: JAX-RS 2.0 (<a shape="rect" class="external-link" href="http://jcp.org/en/jsr/detail?id=339" rel="nofollow">JSR-339</a>) and JAX-RS 1.1 (<a shape="rect" class="external-link" href="http://jcp.org/en/jsr/detail?id=311" rel="nofollow">JSR-311</a>).</p><p>CXF 3.0.0 completely implements JAX-RS 2.0 including new Client API and has been fully tested against the first JAX-RS 2.0 TCK which became available to Apache (jaxrstck-2.0_26-Feb-2013).</p><p>Existing JAX-RS 1.1 applications can be run with CXF 3.0.0.</p><p>CXF 2.7.0 supports most of the new features introduced in JAX-RS 2.0 ( excluding 2.0 Client API for now - but note that CXF client API has been retrofitted to support new filters, interceptors, exception classes and Response API, plus the asynchronous client invoker API).</p><p>CXF 2.6.x supports <a shape="rect" class="external-link" href="https://jsr311.dev.java.net/nonav/releases/1.1/index.html" rel="nofollow">JSR-311 API 1.1</a> and is JAX-RS TCK 1.1 compliant.</p><p>JAX-RS related demos are located under the <a shape="rect" class="external-link" href="http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/jax_rs/">samples/jax_rs </a> directory.</p><p>This documentation will refer to JAX-RS 2.0 (JSR-339) API.</p><p>Outstanding JAX-RS JIRA issues can be found <a shape="rect" class="external-link" href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+CXF+AND+resolution+%3D+Unresolved+AND+component+%3D+JAX-RS+ORDER+BY+priority+DESC&mode=hide">here</a>.</p><h1 id="JAX-RS-JAX-RSCompl iance">JAX-RS Compliance</h1><h2 id="JAX-RS-1.1">1.1</h2><p>Apache CXF 2.6.x passes the final JAX-RS 1.1 TCK and is formally 1.1 compliant.</p><p>Please consult the <a shape="rect" class="external-link" href="http://tomee.apache.org/apache-tomee.html">TomEE</a> documentation on the support of Java EE related JAX-RS 1.1 options in its Apache CXF-based JAX-RS runtime.</p><p>CXF 2.7.x and CXF 3.0.0 will fully support and run JAX-RS 1.1 applications but will not pass the JAX-RS 1.1 TCK Signature tests due to</p><p>CXF 2.7.x and CXF 3.0.0 depending on 2.0-m10 and 2.0 final versions of JAX-RS 2.0 API.</p><h2 id="JAX-RS-2.0Final">2.0 Final</h2><p>CXF 3.x has been updated to implement the JAX-RS 2.0 API’s as completely as possible without access to the final JAX-RS 2.0 TCK. <br clear="none">We have done extensive testing with JAX-RS 2.0 user applications, samples, and the preliminary TCK to make sure CXF’s implementation is as complete and compatible as we can make it. <br clear ="none">CXF makes and will continue making the best possible effort to have JAX-RS 2.0 and new JAX-RS version implementations technically complete and offering an environment for running the portable JAX-RS 2.0 applications.<br clear="none">If the final 2.0 TCK is made available to Apache, we will make sure CXF is updated to pass.<br clear="none">If another TCK licensee that uses CXF’s JAX-RS 2.0 implementation in their products finds issues with CXF’s compliance, we are more than happy to fix bugs that are raised.</p><h1 id="JAX-RS-Projectsetupandconfiguration">Project setup and configuration</h1><h2 id="JAX-RS-Migration">Migration</h2><h3 id="JAX-RS-FromJAX-RS1.1to2.0">From JAX-RS 1.1 to 2.0</h3><p>JAX-RS 2.0 is backward compatible with JAX-RS 1.1. Please see <a shape="rect" href="jax-rs-basics.html">JAX-RS Basics</a> for more information about JAX-RS 2.0.</p><p>CXF 2.7.10 and CXF 3.0.0 are expected to support existing JAX-RS 1.1 applications.</p><h3 id="JAX-RS-FromCXF 2.7.xtoCXF3.0.0">From CXF 2.7.x to CXF 3.0.0</h3><p>Please check the <a shape="rect" href="http://cxf.apache.org/docs/30-migration-guide.html">CXF 3.0.0 Migration Guide</a> for the information about all the changes<br clear="none"> in CXF 3.0.0. Here are more details on the changes specifically affecting JAX-RS users:</p><p>1. CXF RequestHandler and ResponseHandler filters have been removed.</p><p>These legacy CXF filters are still supported in 2.7.x but no longer in 3.0.0. Please use <a shape="rect" class="external-link" href="https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/container/ContainerRequestFilter.html" rel="nofollow">ContainerRequestFilter</a> and <a shape="rect" class="external-link" href="https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/container/ContainerResponseFilter.html" rel="nofollow">ContainerResponseFilter</a> instead. Also, <a shape="rect" class="external-link" href="https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/ext/ReaderInter ceptor.html" rel="nofollow">ReaderInterceptor</a> and <a shape="rect" class="external-link" href="https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/ext/WriterInterceptor.html" rel="nofollow">WriterInterceptor</a> can be used too.</p><p>Note, CXF filters had org.apache.cxf.message.Message available in the signature. If CXF Message is used in the existing CXF RequestHandler or ResponseHandler then use "org.apache.cxf.phase.PhaseInterceptorChain.getCurrentMessage()" or "org.apache.cxf.jaxrs.util.JAXRSUtils.getCurrentMessage()" to get a Message which has all the contextual information available.</p><p>For example, instead of</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div><h1 id="JAX-RS-Introduction">Introduction</h1><p><a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/JAX-RS" rel="nofollow">JAX-RS</a>: Java API for RESTful Web Services is a Java programming language API that provides support in creating web services according to the Representational State Transfer (REST) architectural style.</p><p>CXF supports the Java API for RESTful Web Services: JAX-RS 2.0 (<a shape="rect" class="external-link" href="http://jcp.org/en/jsr/detail?id=339" rel="nofollow">JSR-339</a>) and JAX-RS 1.1 (<a shape="rect" class="external-link" href="http://jcp.org/en/jsr/detail?id=311" rel="nofollow">JSR-311</a>).</p><p>CXF 3.0.0 completely implements JAX-RS 2.0 including new Client API.  See <a shape="rect" href="#JAX-RS-2.0Final">below</a> for information about compliance.</p><p>Existing JAX-RS 1.1 applications can be run with CXF 3.0.0.</p><p>CXF 2.7.0 supports most of the new features introduced in JAX-RS 2.0 (excluding 2.0 Client API for now - but note that CXF client API has been retrofitted to support new filters, interceptors, exception classes and Response API, plus the asynchronous client invoker API).</p><p>CXF 2.6.x supports <a shape="rect" class="external-link" href="https://jsr311.dev.java.net/nonav/releases/1.1/index.html" rel="nofollow">JSR-311 API 1.1</a> and is JAX-RS TCK 1.1 compliant.</p><p>JAX-RS related demos are located under the <a shape="rect" class="external-link" href="http://svn.apache.org/viewvc/cxf/trunk/distribution/src/main/release/samples/jax_rs/">samples/jax_rs </a> directory.</p><p>This documentation will refer to JAX-RS 2.0 (JSR-339) API.</p><p>Outstanding JAX-RS JIRA issues can be found <a shape="rect" class="external-link" href="https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&jqlQuery=project+%3D+CXF+AND+resolution+%3D+Unresolved+AND+component+%3D+JAX-RS+ORDER+BY+priority+DESC&mode=hide">here</a>.</p><h1 id="JAX-RS-JAX-RSCompliance">JAX-RS Compli ance</h1><h2 id="JAX-RS-1.1">1.1</h2><p>Apache CXF 2.6.x passes the final JAX-RS 1.1 TCK and is formally 1.1 compliant.</p><p>Please consult the <a shape="rect" class="external-link" href="http://tomee.apache.org/apache-tomee.html">TomEE</a> documentation on the support of Java EE related JAX-RS 1.1 options in its Apache CXF-based JAX-RS runtime.</p><p>CXF 2.7.x and CXF 3.0.0 will fully support and run JAX-RS 1.1 applications but will not pass the JAX-RS 1.1 TCK Signature tests due to</p><p>CXF 2.7.x and CXF 3.0.0 depending on 2.0-m10 and 2.0 final versions of JAX-RS 2.0 API.</p><p> </p><p><span class="confluence-anchor-link" id="JAX-RS-2_0_FINAL"></span></p><h2 id="JAX-RS-2.0Final">2.0 Final</h2><p>CXF 3.x has been updated to implement the JAX-RS 2.0 API’s as completely as possible without access to the final JAX-RS 2.0 TCK. <br clear="none">We have done extensive testing with JAX-RS 2.0 user applications, samples, and the preliminary TCK to make sure CXF’s impleme ntation is as complete and compatible as we can make it. <br clear="none">CXF makes and will continue making the best possible effort to have JAX-RS 2.0 and new JAX-RS version implementations technically complete and offering an environment for running the portable JAX-RS 2.0 applications.<br clear="none">If the final 2.0 TCK is made available to Apache, we will make sure CXF is updated to pass.<br clear="none">If another TCK licensee that uses CXF’s JAX-RS 2.0 implementation in their products finds issues with CXF’s compliance, we are more than happy to fix bugs that are raised.</p><h1 id="JAX-RS-Projectsetupandconfiguration">Project setup and configuration</h1><h2 id="JAX-RS-Migration">Migration</h2><h3 id="JAX-RS-FromJAX-RS1.1to2.0">From JAX-RS 1.1 to 2.0</h3><p>JAX-RS 2.0 is backward compatible with JAX-RS 1.1. Please see <a shape="rect" href="jax-rs-basics.html">JAX-RS Basics</a> for more information about JAX-RS 2.0.</p><p>CXF 2.7.10 and CXF 3.0.0 are expected to s upport existing JAX-RS 1.1 applications.</p><h3 id="JAX-RS-FromCXF2.7.xtoCXF3.0.0">From CXF 2.7.x to CXF 3.0.0</h3><p>Please check the <a shape="rect" href="http://cxf.apache.org/docs/30-migration-guide.html">CXF 3.0.0 Migration Guide</a> for the information about all the changes<br clear="none"> in CXF 3.0.0. Here are more details on the changes specifically affecting JAX-RS users:</p><p>1. CXF RequestHandler and ResponseHandler filters have been removed.</p><p>These legacy CXF filters are still supported in 2.7.x but no longer in 3.0.0. Please use <a shape="rect" class="external-link" href="https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/container/ContainerRequestFilter.html" rel="nofollow">ContainerRequestFilter</a> and <a shape="rect" class="external-link" href="https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/container/ContainerResponseFilter.html" rel="nofollow">ContainerResponseFilter</a> instead. Also, <a shape="rect" class="external-link" href="https:// jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/ext/ReaderInterceptor.html" rel="nofollow">ReaderInterceptor</a> and <a shape="rect" class="external-link" href="https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/ext/WriterInterceptor.html" rel="nofollow">WriterInterceptor</a> can be used too.</p><p>Note, CXF filters had org.apache.cxf.message.Message available in the signature. If CXF Message is used in the existing CXF RequestHandler or ResponseHandler then use "org.apache.cxf.phase.PhaseInterceptorChain.getCurrentMessage()" or "org.apache.cxf.jaxrs.util.JAXRSUtils.getCurrentMessage()" to get a Message which has all the contextual information available.</p><p>For example, instead of</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public class CustomRequestHandler implements RequestHandler { public Response handleRequest(Message message, ClassResourceInfo cri) { } @@ -238,7 +238,7 @@ public void upload(@Multipart InputStrea </dependency> ]]></script> -</div></div><h1 id="JAX-RS-WhatisNew">What is New</h1><ul><li>Complete support for JAX-RS 2.0, please see <a shape="rect" href="jax-rs-basics.html">JAX-RS Basics</a> for more information</li><li>Bean Validation 1.1 Support, please see <a shape="rect" href="http://cxf.apache.org/docs/validationfeature.html">http://cxf.apache.org/docs/validationfeature.html</a> for more information</li><li>Swagger Feature</li></ul><h1 id="JAX-RS-GettingStartedwithJAX-RS">Getting Started with JAX-RS</h1><h2 id="JAX-RS-UnderstandingtheBasics">Understanding the Basics</h2><p>You are encouraged to read <a shape="rect" class="external-link" href="http://jcp.org/en/jsr/detail?id=339" rel="nofollow">JSR-339</a> specification to find out information not covered by this documentation. The specification introduces many terms such as root resources, resource methods, sub-resources and sub-resource locators, message body readers and writers. JAX-RS 2.0 additionally introduces filters, interceptors, new client API , features, new exception classes, server-side support for asynchronous invocations.</p><p>Please see the <a shape="rect" href="jax-rs-basics.html">JAX-RS Basics</a> page for more information.</p><h2 id="JAX-RS-SupportforDataBindings">Support for Data Bindings</h2><p>JAX-RS MessageBodyReader and MessageBodyWriter can be used to create data bindings for reading and writing data in a number of different formats. Compliant JAX-RS implementations are expected to support JAXB-annotated beans, JAXP Source objects, InputStreams, etc.</p><p>In addition, CXF JAX-RS lets users reuse existing CXF DataBindings for working with JAXB, XBeans, Aegis and SDO.</p><p>Please see the <a shape="rect" href="jax-rs-data-bindings.html">JAX-RS Data Bindings</a> page for more information.</p><h2 id="JAX-RS-HowRequestURIisMatched">How Request URI is Matched</h2><p>Lets assume you have a web application called 'rest'. CXFServlet's url-pattern is "/test/*". Finally, jaxrs:server's address is "/bar".</p><p>Reque sts like /rest/test/bar or /rest/test/bar/baz will be delivered to one of the resource classes in a given jaxrs:server endpoint. For the former request to be handled, a resource class with @Path("/") should be available, in the latter case - at least @Path("/") or a more specific @Path("/baz").</p><p>The same requirement can be expressed by having a CXFServlet with "/*" and jaxrs:server with "/test/bar".</p><p>When both CXFServlet and jaxrs:server use "/" then it's a root resource class which should provide a @Path with at least "/test/bar" for the above requests to be matched.</p><p>Generally, it can be a good idea to specify the URI segments which are more likely to change now and then with CXFServlets or jaxrs:server.</p><h2 id="JAX-RS-ClientAPI">Client API</h2><p>CXF 3.0.0 implements JAX-RS 2.0 Client API.</p><p>CXF 2.7.x or earlier provides a comprehensive support for developing RESTful clients by supporting 3 flavors of the client API: proxy-based, HTTP-centric and XML-centric . CXF-specific client API is supported alongside new JAX-RS 2.0 Client API in CXF 3.0.0.</p><p>Please see the <a shape="rect" href="jax-rs-client-api.html">JAX-RS Client API</a> page for more information.</p><h2 id="JAX-RS-BeanValidation">Bean Validation</h2><p>Bean Validation 1.1 is supported since CXF 3.0.0-milestone1. Please see the <a shape="rect" href="http://cxf.apache.org/docs/validationfeature.html">http://cxf.apache.org/docs/validationfeature.html</a> for more information.</p><h2 id="JAX-RS-Filters,InterceptorsandInvokers">Filters, Interceptors and Invokers</h2><p>It is possible to intercept and modify the inbound and outbound calls with the help of CXF JAX-RS filters and/or CXF interceptors. Additionally, custom invokers offer an option to intercept a call immediately before a service bean is invoked.</p><p>Please see the <a shape="rect" href="jax-rs-filters.html">JAX-RS Filters</a> page for more information.</p><p>Please see the <a shape="rect" href="jax-rs-basics.html">J AX-RS Basics</a> page for more information about new JAX-RS 2.0 filters and interceptors available in CXF 2.7.x and 3.0.0.</p><h2 id="JAX-RS-ServicelistingsandWADLsupport">Service listings and WADL support</h2><p><strong>New</strong>: Swagger feature has been introduced.</p><p>CXF JAX-RS supports <a shape="rect" class="external-link" href="http://www.w3.org/Submission/wadl" rel="nofollow">WADL</a>. CXF JAX-RS service endpoints can be listed in the service listings page and users can check the WADL documents.</p><p>Please see the <a shape="rect" href="jaxrs-services-description.html">JAXRS Services Description</a> page for more information.</p><h2 id="JAX-RS-ConfiguringJAX-RSservices">Configuring JAX-RS services</h2><p>JAX-RS services can be configured programmatically, using Blueprint, Spring or CXFNonSpringJAXRSServlet.</p><p>Please see the <a shape="rect" href="jaxrs-services-configuration.html">JAXRS Services Configuration</a> page for more information.</p><h2 id="JAX-RS-Testing" >Testing</h2><p>JAX-RS services can be easily tested using the embedded Jetty >or CXF Local Transport.<br clear="none"> Please see the <a shape="rect" >href="https://cwiki.apache.org/confluence/display/CXF20DOC/JAXRS+Testing">JAXRS > Testing</a> page for more information.</p><h2 >id="JAX-RS-Debugging">Debugging</h2><p>One may want to use a browser to test >how a given HTTP resource reacts to different HTTP Accept or Accept-Language >header values and request methods. For example, if a resource class supports >a "/resource" URI then one can test the resource class using one of the >following queries :</p><p><code>> GET /resource.xml</code><br >clear="none"> <code>> GET /resource.en</code></p><p>The runtime will >replace '.xml' or '.en' with an appropriate header value. For it to know the >type or language value associated with a given URI suffix, some configuration >needs to be done. Here's an example of how it can be done with >Spring:</p><div class="code panel pdl" style="border-width: 1px ;"><div class="codeContent panelContent pdl"> +</div></div><h1 id="JAX-RS-WhatisNew">What is New</h1><ul><li>Complete support for JAX-RS 2.0, please see <a shape="rect" href="jax-rs-basics.html">JAX-RS Basics</a> for more information</li><li>Bean Validation 1.1 Support, please see <a shape="rect" href="http://cxf.apache.org/docs/validationfeature.html">http://cxf.apache.org/docs/validationfeature.html</a> for more information</li><li>Swagger Feature</li></ul><h1 id="JAX-RS-GettingStartedwithJAX-RS">Getting Started with JAX-RS</h1><h2 id="JAX-RS-UnderstandingtheBasics">Understanding the Basics</h2><p>You are encouraged to read <a shape="rect" class="external-link" href="http://jcp.org/en/jsr/detail?id=339" rel="nofollow">JSR-339</a> specification to find out information not covered by this documentation. The specification introduces many terms such as root resources, resource methods, sub-resources and sub-resource locators, message body readers and writers. JAX-RS 2.0 additionally introduces filters, interceptors, new client API , features, new exception classes, server-side support for asynchronous invocations.</p><p>Please see the <a shape="rect" href="jax-rs-basics.html">JAX-RS Basics</a> page for more information.</p><h2 id="JAX-RS-SupportforDataBindings">Support for Data Bindings</h2><p>JAX-RS MessageBodyReader and MessageBodyWriter can be used to create data bindings for reading and writing data in a number of different formats. Compliant JAX-RS implementations are expected to support JAXB-annotated beans, JAXP Source objects, InputStreams, etc.</p><p>In addition, CXF JAX-RS lets users reuse existing CXF DataBindings for working with JAXB, XBeans, Aegis and SDO.</p><p>Please see the <a shape="rect" href="jax-rs-data-bindings.html">JAX-RS Data Bindings</a> page for more information.</p><h2 id="JAX-RS-HowRequestURIisMatched">How Request URI is Matched</h2><p>Lets assume you have a web application called 'rest'. CXFServlet's url-pattern is "/test/*". Finally, jaxrs:server's address is "/bar".</p><p>Reque sts like /rest/test/bar or /rest/test/bar/baz will be delivered to one of the resource classes in a given jaxrs:server endpoint. For the former request to be handled, a resource class with @Path("/") should be available, in the latter case - at least @Path("/") or a more specific @Path("/baz").</p><p>The same requirement can be expressed by having a CXFServlet with "/*" and jaxrs:server with "/test/bar".</p><p>When both CXFServlet and jaxrs:server use "/" then it's a root resource class which should provide a @Path with at least "/test/bar" for the above requests to be matched.</p><p>Generally, it can be a good idea to specify the URI segments which are more likely to change now and then with CXFServlets or jaxrs:server.</p><h2 id="JAX-RS-ClientAPI">Client API</h2><p>CXF 3.0.0 implements JAX-RS 2.0 Client API.</p><p>CXF 2.7.x or earlier provides a comprehensive support for developing RESTful clients by supporting 3 flavors of the client API: proxy-based, HTTP-centric and XML-centric . CXF-specific client API is supported alongside new JAX-RS 2.0 Client API in CXF 3.0.0.</p><p>Please see the <a shape="rect" href="jax-rs-client-api.html">JAX-RS Client API</a> page for more information.</p><h2 id="JAX-RS-BeanValidation">Bean Validation</h2><p>Bean Validation 1.1 is supported since CXF 3.0.0-milestone1. Please see the <a shape="rect" href="http://cxf.apache.org/docs/validationfeature.html">http://cxf.apache.org/docs/validationfeature.html</a> for more information.</p><h2 id="JAX-RS-Filters,InterceptorsandInvokers">Filters, Interceptors and Invokers</h2><p>It is possible to intercept and modify the inbound and outbound calls with the help of CXF JAX-RS filters and/or CXF interceptors. Additionally, custom invokers offer an option to intercept a call immediately before a service bean is invoked.</p><p>Please see the <a shape="rect" href="jax-rs-filters.html">JAX-RS Filters</a> page for more information.</p><p>Please see the <a shape="rect" href="jax-rs-basics.html">J AX-RS Basics</a> page for more information about new JAX-RS 2.0 filters and interceptors available in CXF 2.7.x and 3.0.0.</p><h2 id="JAX-RS-ServicelistingsandWADLsupport">Service listings and WADL support</h2><p><strong>New</strong>: Swagger feature has been introduced.</p><p>CXF JAX-RS supports <a shape="rect" class="external-link" href="http://www.w3.org/Submission/wadl" rel="nofollow">WADL</a>. CXF JAX-RS service endpoints can be listed in the service listings page and users can check the WADL documents.</p><p>Please see the <a shape="rect" href="jaxrs-services-description.html">JAXRS Services Description</a> page for more information.</p><h2 id="JAX-RS-ConfiguringJAX-RSservices">Configuring JAX-RS services</h2><p>JAX-RS services can be configured programmatically, using Blueprint, Spring or CXFNonSpringJAXRSServlet.</p><p>Please see the <a shape="rect" href="jaxrs-services-configuration.html">JAXRS Services Configuration</a> page for more information.</p><h2 id="JAX-RS-Testing" >Testing</h2><p>JAX-RS services can be easily tested using the embedded Jetty >or CXF Local Transport.<br clear="none"> Please see the <a shape="rect" >href="https://cwiki.apache.org/confluence/display/CXF20DOC/JAXRS+Testing">JAXRS > Testing</a> page for more information.</p><h2 >id="JAX-RS-Debugging">Debugging</h2><p>One may want to use a browser to test >how a given HTTP resource reacts to different HTTP Accept or Accept-Language >header values and request methods. For example, if a resource class supports >a "/resource" URI then one can test the resource class using one of the >following queries :</p><p><code>> GET /resource.xml</code> <br >clear="none"> <code>> GET /resource.en</code></p><p>The runtime will >replace '.xml' or '.en' with an appropriate header value. For it to know the >type or language value associated with a given URI suffix, some configuration >needs to be done. Here's an example of how it can be done with >Spring:</p><div class="code panel pdl" style="border-width: 1p x;"><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[ <jaxrs:server id="customerService" address="/"> <jaxrs:serviceBeans> <bean class="org.apache.cxf.jaxrs.systests.CustomerService" /> @@ -252,7 +252,7 @@ public void upload(@Multipart InputStrea </jaxrs:languageMappings> </jaxrs:server> ]]></script> -</div></div><p>CXF also supports a _type query as an alternative to appending extensions like '.xml' to request URIs:</p><p>{{ > GET /resource?_type=xml}}</p><p>Overriding a request method is also easy:</p><p><code>> GET /resource?_method=POST</code></p><p>Alternatively, one can specify an HTTP header X-HTTP-Method-Override:</p><p><code>> POST /books</code><br clear="none"> <code>> X-HTTP-Method-Override : PATCH</code></p><p>For example, at the moment the http-centric client API does not support arbitrary HTTP verbs except for those supported <br clear="none"> by Java HTTPUrlConnection. When needed, X-HTTP-Method-Override can be set to overcome this limitation.</p><p>Finally, a "_ctype" query allows for overriding Content-Type.</p><p>Please see the <a shape="rect" href="debugging-and-logging.html">Debugging and Logging</a> page for more information on how to debug and log service calls in CXF.</p><h2 id="JAX-RS-Logging">Logging</h2><p>Many of the existing CXF features ca n be applied either to <code>jaxrs:server</code> or <code>jaxrs:client</code>. For example, to enable logging of requests and responses, simply do:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>CXF also supports a _type query as an alternative to appending extensions like '.xml' to request URIs:</p><p>{{ > GET /resource?_type=xml}}</p><p>Overriding a request method is also easy:</p><p><code>> GET /resource?_method=POST</code></p><p>Alternatively, one can specify an HTTP header X-HTTP-Method-Override:</p><p><code>> POST /books</code> <br clear="none"> <code>> X-HTTP-Method-Override : PATCH</code></p><p>For example, at the moment the http-centric client API does not support arbitrary HTTP verbs except for those supported <br clear="none"> by Java HTTPUrlConnection. When needed, X-HTTP-Method-Override can be set to overcome this limitation.</p><p>Finally, a "_ctype" query allows for overriding Content-Type.</p><p>Please see the <a shape="rect" href="debugging-and-logging.html">Debugging and Logging</a> page for more information on how to debug and log service calls in CXF.</p><h2 id="JAX-RS-Logging">Logging</h2><p>Many of the existing CXF features c an be applied either to <code>jaxrs:server</code> or <code>jaxrs:client</code>. For example, to enable logging of requests and responses, simply do:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[<beans xmlns:cxf="http://cxf.apache.org/core" xsi:schemaLocation="http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd"> @@ -263,7 +263,7 @@ public void upload(@Multipart InputStrea <jaxrs:server> </beans> ]]></script> -</div></div><p>Please make sure the <code><a shape="rect" href="http://cxf.apache.org/core">http://cxf.apache.org/core</a></code> namespace is in scope.</p><p>Starting from CXF 2.3.0 it is also possible to convert log events into Atom entries and either push them to receivers or make them available for polling.</p><p>Please see the <a shape="rect" href="debugging-and-logging.html">Debugging and Logging</a> page for more information.</p><h1 id="JAX-RS-AdvancedFeatures">Advanced Features</h1><h2 id="JAX-RS-Multiparts">Multiparts</h2><p>Multiparts can be handled in a number of ways. The CXF core runtime provides advanced support for handling attachments which CXF JAX-RS builds upon.</p><p>Please see the <a shape="rect" href="jax-rs-multiparts.html">JAX-RS Multiparts</a> page for more information.</p><h2 id="JAX-RS-SecureJAX-RSservices">Secure JAX-RS services</h2><p>Transport level HTTPS security can be used to protect messages exchanged between CXF JAX-RS endpoints and providers.</p><p >Authentication and authorization can be enforced in a number of >ways.</p><p>Please see the <a shape="rect" >href="secure-jax-rs-services.html">Secure JAX-RS Services</a> page for more >information.</p><p>Please also check <a shape="rect" >href="http://cxf.apache.org/docs/jax-rs-xml-security.html">JAX-RS XML >Security</a>, <a shape="rect" href="jax-rs-saml.html">JAX-RS SAML</a> and <a >shape="rect" href="jax-rs-oauth2.html">JAX-RS OAuth2</a> pages for more >information about the advanced security topics.</p><h2 >id="JAX-RS-FailoverandLoadDistributionFeatures">Failover and Load >Distribution Features</h2><p>Starting from CXF 2.4.1, CXF JAX-RS proxy and >WebClient consumers can be backed up by failover and load distribution >features.<br clear="none"> Please see the <a shape="rect" >href="jax-rs-failover.html">JAX-RS Failover</a> page for more >information.</p><h2 id="JAX-RS-Redirection">Redirection</h2><p>Starting from >CXF 2.2.5 it is possible to redirect the request or response call to other se rvlet resources by configuring CXFServlet or using CXF JAX-RS RequestDispatcherProvider.</p><p>Please see the <a shape="rect" href="jax-rs-redirection.html">JAX-RS Redirection</a> page for more information.</p><h2 id="JAX-RS-XSLTandXPath">XSLT and XPath</h2><p>XSLT and XPath are promoted and treated as first-class citizens in CXF JAX-RS. These technologies can be very powerful when generating complex data or retrieving data of interest out of complex XML fragments.</p><p>Please see the <a shape="rect" href="jax-rs-advanced-xml.html">JAX-RS Advanced XML</a> page for more information.</p><h2 id="JAX-RS-ComplexSearchQueries">Complex Search Queries</h2><p>Using <a shape="rect" href="http://cxf.apache.org/docs/jax-rs.html#JAX-RS-Parameterbeans">query parameter beans</a> provides a way to capture search requirements that can be expressed by enumerating name/value pairs, for example, a query such as '?name=CXF&version=2.3' can be captured by a bean containing setName and setVersion met hods. This 'template' bean can be used in the code to compare it against all available local data.</p><p>Versions 2.3 and later of CXF JAXRS support another option for doing advanced search queries using the <a shape="rect" class="external-link" href="http://tools.ietf.org/html/draft-nottingham-atompub-fiql-00" rel="nofollow">Feed Item Query Language</a>(FIQL).</p><p>Please see the <a shape="rect" href="jax-rs-search.html">JAX-RS Search</a> page for more information.</p><h2 id="JAX-RS-Model-View-Controllersupport">Model-View-Controller support</h2><p><strong>XSLT</strong><br clear="none"> Please see the <a shape="rect" href="jax-rs-advanced-xml.html">JAX-RS Advanced XML</a> page for more information. on how <code>XSLTJaxbProvider</code> can be used to generate complex (X)HTML views.</p><p><strong>JSP</strong></p><p>With the introduction of <code>RequestDispatcherProvider</code> it is now possible for JAXRS service responses be redirected to JSP pages for further processing. Please s ee the <a shape="rect" href="jax-rs-redirection.html">JAX-RS Redirection</a> page for more information.</p><h2 id="JAX-RS-CombiningJAX-WSandJAX-RS">Combining JAX-WS and JAX-RS</h2><p>CXF JAX-RS tries to make it easy for SOAP developers to experiment with JAX-RS and combine both JAX-WS and JAX-RS in the same service bean when needed.</p><p>Please see the <a shape="rect" href="jax-rs-and-jax-ws.html">JAX-RS and JAX-WS</a> page for more information.</p><h2 id="JAX-RS-IntegrationwithDistributedOSGi">Integration with Distributed OSGi</h2><p>Distributed OSGi RI is a CXF <a shape="rect" href="http://cxf.apache.org/distributed-osgi.html">subproject</a>. DOSGi mandates how registered Java interfaces can be exposed<br clear="none"> and consumed as remote services. DOSGi single and multi bundle distributions contain all the OSGI bundles required for a CXF endpoint be successfully published.</p><p>CXF JAX-RS implementations has been integrated with DOSGi RI 1.1-SNAPSHOT which makes it possible to expose Java interfaces as RESTful services and consume such services using a proxy-based client API.</p><p>Please see the <a shape="rect" href="http://cxf.apache.org/distributed-osgi-reference.html#DistributedOSGiReference-ServiceProviderproperties">DOSGI Reference page</a> ('org.apache.cxf.rs' properties) and a <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/dosgi/trunk/samples/greeter_rest/">greeter_rest</a> sample for more information. Note that this demo can be run exactly as a SOAP-based <a shape="rect" href="http://cxf.apache.org/distributed-osgi-greeter-demo-walkthrough.html">greeter</a> demo as it registers and consumes a similar (but) JAX-RS annotated <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/dosgi/trunk/samples/greeter_rest/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/rest/GreeterService.java">GreeterService</a>. In addition, this demo shows how one can register and consume a given int erface (<a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/dosgi/trunk/samples/greeter_rest/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/rest/GreeterService2.java">GreeterService2</a>) without using explicit JAX-RS annotations but providing an out-of-band <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/dosgi/trunk/samples/greeter_rest/interface/src/main/resources/OSGI-INF/cxf/jaxrs/GreeterService2-model.xml">user model description</a>.</p><h2 id="JAX-RS-OtherAdvancedFeatures">Other Advanced Features</h2><p>CXF JAX-RS provides a number of advanced extensions such as the support for the JMS transport, one-way invocations (HTTP and JMS), suspended invocations (HTTP and JMS), making existing code REST-aware by applying external user models, etc.</p><p>Please see the <a shape="rect" href="jax-rs-advanced-features.html">JAX-RS Advanced Features</a> page for more information.</p><h1 id="JAX-RS-MavenPlugins">Maven Plugins</h1><p>Please see the <a shape="rect" href="jax-rs-maven-plugins.html">JAX-RS Maven Plugins</a> page for more information about the Maven plugins and archetypes which can help with creating CXF JAX-RS applications.</p><h1 id="JAX-RS-Deployment">Deployment</h1><p>CXF JAX-RS applications packaged as WAR archives can be deployed into standalone Servlet containers such as Tomcat or Jetty.<br clear="none"> Please see the <a shape="rect" href="https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Deployment">JAX-RS Deployment</a> page for the tips on how to deploy the CXF JAX-RS applications into various Java EE and OSGI application servers successfully.</p><h1 id="JAX-RS-Third-partyprojects">Third-party projects</h1><ul><li>REST Utilities: <a shape="rect" class="external-link" href="https://github.com/taimos/RESTUtils" rel="nofollow">RESTUtils</a></li></ul><h1 id="JAX-RS-References">References</h1><ul><li><a shape="rect" class="external-link" href="http://jcp.org/aboutJava/ communityprocess/final/jsr311/index.html" rel="nofollow">JSR-000311 JAX-RS: The JavaTM API for RESTful Web Services</a></li><li><a shape="rect" class="external-link" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm" rel="nofollow">Architectural Styles and the Design of Network-based Software Architectures</a></li><li><a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/Representational_State_Transfer" rel="nofollow">Representational State Transfer - Wikipedia </a></li><li><a shape="rect" class="external-link" href="http://oreilly.com/catalog/9780596801694/" rel="nofollow">RESTful Web Services Cookbook - Solutions for Improving Scalability and Simplicity</a> <em>by Subbu Allamarajuy</em> (O'Reilly Media, February 2010)</li><li><a shape="rect" class="external-link" href="http://oreilly.com/catalog/9780596158057/" rel="nofollow">RESTful Java with JAX-RS</a> <em>by Bill Burke</em> (O'Reilly Media, November 2009)</li><li><a shape="rect" class="external -link" href="http://oreilly.com/catalog/9780596521134/" rel="nofollow">Java Web Services: Up and Running </a> <em>by Martin Kalin</em> (O'Reilly Media, February 2009)</li><li><a shape="rect" class="external-link" href="http://oreilly.com/catalog/9780596529260/" rel="nofollow">RESTful Web Services - Web services for the real world</a> <em>by Leonard Richardson, Sam Ruby</em> (O'Reilly Media, May 2007)</li><li><a shape="rect" class="external-link" href="http://www.oracle.com/technetwork/articles/javase/index-137171.html" rel="nofollow">RESTful Web Services</a> <em>by Sameer Tyagi</em> (Oracle , August 2006)</li><li><a shape="rect" class="external-link" href="http://www.crummy.com/writing/RESTful-Web-Services/" rel="nofollow">RESTful Web Services - "Unofficial homepage for a book about simple web services."</a> <em>Unknown</em></li><li><a shape="rect" class="external-link" href="http://tomayko.com/writings/rest-to-my-wife" rel="nofollow">How I Explained REST to My Wife</a> <em>by Ryan Tomayko</em> (<a shape="rect" class="external-link" href="http://tomayko.com" rel="nofollow">http://tomayko.com</a>, December 2004)</li></ul><h1 id="JAX-RS-Howtocontribute">How to contribute</h1><p>CXF JAX-RS implementation sits on top of the core CXF runtime and is quite self-contained and isolated from other CXF modules such as jaxws and simple frontends.</p><p>Please check the <a shape="rect" class="external-link" href="http://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&mode=hide&pid=12310511&sorter/order=DESC&sorter/field=priority&resolution=-1&component=12311911">issue list</a> and see if you are interested in fixing one of the issues.</p><p>If you decide to go ahead then the fastest way to start is to</p><ul><li>do the fast trunk build using '<code>mvn install -Pfastinstall</code>'</li><li>setup the workspace 'mvn -Psetup.eclipse' which will create a workspace in a 'workspace' folder, next to 'trunk'</li><li>import cxf modules from the trunk into the workspace and start working with the cxf-frontend-jaxrs module</li></ul><p>If you are about to submit a patch after building a trunk/rt/frontend/jaxrs, then please also run JAX-RS system tests in trunk/systests/jaxrs :<br clear="none"> <code>> mvn install</code></p><p>You can also check out the general <a shape="rect" href="http://cxf.apache.org/getting-involved.html">Getting Involved</a> web page for more information on contributing.</p></div> +</div></div><p>Please make sure the <code> <a shape="rect" href="http://cxf.apache.org/core">http://cxf.apache.org/core</a> </code> namespace is in scope.</p><p>Starting from CXF 2.3.0 it is also possible to convert log events into Atom entries and either push them to receivers or make them available for polling.</p><p>Please see the <a shape="rect" href="debugging-and-logging.html">Debugging and Logging</a> page for more information.</p><h1 id="JAX-RS-AdvancedFeatures">Advanced Features</h1><h2 id="JAX-RS-Multiparts">Multiparts</h2><p>Multiparts can be handled in a number of ways. The CXF core runtime provides advanced support for handling attachments which CXF JAX-RS builds upon.</p><p>Please see the <a shape="rect" href="jax-rs-multiparts.html">JAX-RS Multiparts</a> page for more information.</p><h2 id="JAX-RS-SecureJAX-RSservices">Secure JAX-RS services</h2><p>Transport level HTTPS security can be used to protect messages exchanged between CXF JAX-RS endpoints and providers.</p> <p>Authentication and authorization can be enforced in a number of ways.</p><p>Please see the <a shape="rect" href="secure-jax-rs-services.html">Secure JAX-RS Services</a> page for more information.</p><p>Please also check <a shape="rect" href="http://cxf.apache.org/docs/jax-rs-xml-security.html">JAX-RS XML Security</a>, <a shape="rect" href="jax-rs-saml.html">JAX-RS SAML</a> and <a shape="rect" href="jax-rs-oauth2.html">JAX-RS OAuth2</a> pages for more information about the advanced security topics.</p><h2 id="JAX-RS-FailoverandLoadDistributionFeatures">Failover and Load Distribution Features</h2><p>Starting from CXF 2.4.1, CXF JAX-RS proxy and WebClient consumers can be backed up by failover and load distribution features.<br clear="none"> Please see the <a shape="rect" href="jax-rs-failover.html">JAX-RS Failover</a> page for more information.</p><h2 id="JAX-RS-Redirection">Redirection</h2><p>Starting from CXF 2.2.5 it is possible to redirect the request or response call to other servlet resources by configuring CXFServlet or using CXF JAX-RS RequestDispatcherProvider.</p><p>Please see the <a shape="rect" href="jax-rs-redirection.html">JAX-RS Redirection</a> page for more information.</p><h2 id="JAX-RS-XSLTandXPath">XSLT and XPath</h2><p>XSLT and XPath are promoted and treated as first-class citizens in CXF JAX-RS. These technologies can be very powerful when generating complex data or retrieving data of interest out of complex XML fragments.</p><p>Please see the <a shape="rect" href="jax-rs-advanced-xml.html">JAX-RS Advanced XML</a> page for more information.</p><h2 id="JAX-RS-ComplexSearchQueries">Complex Search Queries</h2><p>Using <a shape="rect" href="http://cxf.apache.org/docs/jax-rs.html#JAX-RS-Parameterbeans">query parameter beans</a> provides a way to capture search requirements that can be expressed by enumerating name/value pairs, for example, a query such as '?name=CXF&version=2.3' can be captured by a bean containing setName and setVersion m ethods. This 'template' bean can be used in the code to compare it against all available local data.</p><p>Versions 2.3 and later of CXF JAXRS support another option for doing advanced search queries using the <a shape="rect" class="external-link" href="http://tools.ietf.org/html/draft-nottingham-atompub-fiql-00" rel="nofollow">Feed Item Query Language</a>(FIQL).</p><p>Please see the <a shape="rect" href="jax-rs-search.html">JAX-RS Search</a> page for more information.</p><h2 id="JAX-RS-Model-View-Controllersupport">Model-View-Controller support</h2><p><strong>XSLT</strong> <br clear="none"> Please see the <a shape="rect" href="jax-rs-advanced-xml.html">JAX-RS Advanced XML</a> page for more information. on how <code>XSLTJaxbProvider</code> can be used to generate complex (X)HTML views.</p><p><strong>JSP</strong></p><p>With the introduction of <code>RequestDispatcherProvider</code> it is now possible for JAXRS service responses be redirected to JSP pages for further processing. Pleas e see the <a shape="rect" href="jax-rs-redirection.html">JAX-RS Redirection</a> page for more information.</p><h2 id="JAX-RS-CombiningJAX-WSandJAX-RS">Combining JAX-WS and JAX-RS</h2><p>CXF JAX-RS tries to make it easy for SOAP developers to experiment with JAX-RS and combine both JAX-WS and JAX-RS in the same service bean when needed.</p><p>Please see the <a shape="rect" href="jax-rs-and-jax-ws.html">JAX-RS and JAX-WS</a> page for more information.</p><h2 id="JAX-RS-IntegrationwithDistributedOSGi">Integration with Distributed OSGi</h2><p>Distributed OSGi RI is a CXF <a shape="rect" href="http://cxf.apache.org/distributed-osgi.html">subproject</a>. DOSGi mandates how registered Java interfaces can be exposed<br clear="none"> and consumed as remote services. DOSGi single and multi bundle distributions contain all the OSGI bundles required for a CXF endpoint be successfully published.</p><p>CXF JAX-RS implementations has been integrated with DOSGi RI 1.1-SNAPSHOT which makes it possib le to expose Java interfaces as RESTful services and consume such services using a proxy-based client API.</p><p>Please see the <a shape="rect" href="http://cxf.apache.org/distributed-osgi-reference.html#DistributedOSGiReference-ServiceProviderproperties">DOSGI Reference page</a> ('org.apache.cxf.rs' properties) and a <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/dosgi/trunk/samples/greeter_rest/">greeter_rest</a> sample for more information. Note that this demo can be run exactly as a SOAP-based <a shape="rect" href="http://cxf.apache.org/distributed-osgi-greeter-demo-walkthrough.html">greeter</a> demo as it registers and consumes a similar (but) JAX-RS annotated <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/dosgi/trunk/samples/greeter_rest/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/rest/GreeterService.java">GreeterService</a>. In addition, this demo shows how one can register and consume a given interface (<a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/dosgi/trunk/samples/greeter_rest/interface/src/main/java/org/apache/cxf/dosgi/samples/greeter/rest/GreeterService2.java">GreeterService2</a>) without using explicit JAX-RS annotations but providing an out-of-band <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/cxf/dosgi/trunk/samples/greeter_rest/interface/src/main/resources/OSGI-INF/cxf/jaxrs/GreeterService2-model.xml">user model description</a>.</p><h2 id="JAX-RS-OtherAdvancedFeatures">Other Advanced Features</h2><p>CXF JAX-RS provides a number of advanced extensions such as the support for the JMS transport, one-way invocations (HTTP and JMS), suspended invocations (HTTP and JMS), making existing code REST-aware by applying external user models, etc.</p><p>Please see the <a shape="rect" href="jax-rs-advanced-features.html">JAX-RS Advanced Features</a> page for more information.</p><h1 id="JAX-RS-MavenPlugins">Mav en Plugins</h1><p>Please see the <a shape="rect" href="jax-rs-maven-plugins.html">JAX-RS Maven Plugins</a> page for more information about the Maven plugins and archetypes which can help with creating CXF JAX-RS applications.</p><h1 id="JAX-RS-Deployment">Deployment</h1><p>CXF JAX-RS applications packaged as WAR archives can be deployed into standalone Servlet containers such as Tomcat or Jetty.<br clear="none"> Please see the <a shape="rect" href="https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Deployment">JAX-RS Deployment</a> page for the tips on how to deploy the CXF JAX-RS applications into various Java EE and OSGI application servers successfully.</p><h1 id="JAX-RS-Third-partyprojects">Third-party projects</h1><ul><li>REST Utilities: <a shape="rect" class="external-link" href="https://github.com/taimos/RESTUtils" rel="nofollow">RESTUtils</a></li></ul><h1 id="JAX-RS-References">References</h1><ul><li><a shape="rect" class="external-link" href="http://jcp.org/aboutJa va/communityprocess/final/jsr311/index.html" rel="nofollow">JSR-000311 JAX-RS: The JavaTM API for RESTful Web Services</a></li><li><a shape="rect" class="external-link" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm" rel="nofollow">Architectural Styles and the Design of Network-based Software Architectures</a></li><li><a shape="rect" class="external-link" href="http://en.wikipedia.org/wiki/Representational_State_Transfer" rel="nofollow">Representational State Transfer - Wikipedia </a></li><li><a shape="rect" class="external-link" href="http://oreilly.com/catalog/9780596801694/" rel="nofollow">RESTful Web Services Cookbook - Solutions for Improving Scalability and Simplicity</a> <em>by Subbu Allamarajuy</em> (O'Reilly Media, February 2010)</li><li><a shape="rect" class="external-link" href="http://oreilly.com/catalog/9780596158057/" rel="nofollow">RESTful Java with JAX-RS</a> <em>by Bill Burke</em> (O'Reilly Media, November 2009)</li><li><a shape="rect" class="exter nal-link" href="http://oreilly.com/catalog/9780596521134/" rel="nofollow">Java Web Services: Up and Running </a> <em>by Martin Kalin</em> (O'Reilly Media, February 2009)</li><li><a shape="rect" class="external-link" href="http://oreilly.com/catalog/9780596529260/" rel="nofollow">RESTful Web Services - Web services for the real world</a> <em>by Leonard Richardson, Sam Ruby</em> (O'Reilly Media, May 2007)</li><li><a shape="rect" class="external-link" href="http://www.oracle.com/technetwork/articles/javase/index-137171.html" rel="nofollow">RESTful Web Services</a> <em>by Sameer Tyagi</em> (Oracle , August 2006)</li><li><a shape="rect" class="external-link" href="http://www.crummy.com/writing/RESTful-Web-Services/" rel="nofollow">RESTful Web Services - "Unofficial homepage for a book about simple web services."</a> <em>Unknown</em></li><li><a shape="rect" class="external-link" href="http://tomayko.com/writings/rest-to-my-wife" rel="nofollow">How I Explained REST to My Wife</a> <em>by Ry an Tomayko</em> (<a shape="rect" class="external-link" href="http://tomayko.com" rel="nofollow">http://tomayko.com</a>, December 2004)</li></ul><h1 id="JAX-RS-Howtocontribute">How to contribute</h1><p>CXF JAX-RS implementation sits on top of the core CXF runtime and is quite self-contained and isolated from other CXF modules such as jaxws and simple frontends.</p><p>Please check the <a shape="rect" class="external-link" href="http://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&mode=hide&pid=12310511&sorter/order=DESC&sorter/field=priority&resolution=-1&component=12311911">issue list</a> and see if you are interested in fixing one of the issues.</p><p>If you decide to go ahead then the fastest way to start is to</p><ul><li>do the fast trunk build using '<code>mvn install -Pfastinstall</code>'</li><li>setup the workspace 'mvn -Psetup.eclipse' which will create a workspace in a 'workspace' folder, next to 'trunk'</li><li>import cxf modules from t he trunk into the workspace and start working with the cxf-frontend-jaxrs module</li></ul><p>If you are about to submit a patch after building a trunk/rt/frontend/jaxrs, then please also run JAX-RS system tests in trunk/systests/jaxrs :<br clear="none"> <code>> mvn install</code></p><p>You can also check out the general <a shape="rect" href="http://cxf.apache.org/getting-involved.html">Getting Involved</a> web page for more information on contributing.</p></div> </div> <!-- Content --> </td>