You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Antoine Reilles (JIRA)" <ji...@apache.org> on 2013/04/19 17:07:15 UTC

[jira] [Updated] (TOMEE-900) jax-rs resource constructor with @PathParam always recieves the path param of the first call

     [ https://issues.apache.org/jira/browse/TOMEE-900?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Antoine Reilles updated TOMEE-900:
----------------------------------

    Description: 
If I define a service using a constructor for injecting path parameters, as described in [http://cxf.apache.org/docs/jax-rs-basics.html#JAX-RSBasics-DealingwithParameters], the service will always be intantiated by recieving the value of the path parameter that was obtained during the first invocation of the service. Injecting the UriInfo in the service allows to compare the constructor injected path parameter value with the one used in the service, showing the issue.

The attached war exhibits the issue:
    GET http://localhost/testconstructor/a/b/one
returns "OK: one", and prints in the logs:

    Service Constructor called with: one
    Service nameparam one

A subsequent call to
    http://localhost/testconstructor/a/b/two
returns an HTTP 500 (since the code raises an exception), with value "one!= two", and prints in the server logs:
    Service Constructor called with: one
    Service nameparam two
    MyExceptionMapper: javax.ws.rs.WebApplicationException

The issue cannot be reproduced on a plain tomcat (tested with tomcat-7.0.39). Please have a look at [CXF-4973|https://issues.apache.org/jira/browse/CXF-4973] for an analysis of the issue by the cxf folks.


  was:
If I define a service using a constructor for injecting path parameters, as described in [http://cxf.apache.org/docs/jax-rs-basics.html#JAX-RSBasics-DealingwithParameters], the service will always be intantiated by recieving the value of the path parameter that was obtained during the first invocation of the service. Injecting the {{UriInfo}} in the service allows to compare the constructor injected path parameter value with the one used in the service, showing the issue.

The attached war exhibits the issue:
{code}GET http://localhost/testconstructor/a/b/one{code}
returns {{OK: one}}, and prints in the logs:
{code}
Service Constructor called with: one
Service nameparam one
{code}
A subsequent call to
{code}http://localhost/testconstructor/a/b/two{code}
returns an HTTP 500 (since the code raises an exception), with value {{one!= two}}, and prints in the server logs:
{code}
Service Constructor called with: one
Service nameparam two
MyExceptionMapper: javax.ws.rs.WebApplicationException
{code}

The issue cannot be reproduced on a plain tomcat (tested with tomcat-7.0.39). Please have a look at [CXF-4973|https://issues.apache.org/jira/browse/CXF-4973] for an analysis of the issue by the cxf folks.


    
> jax-rs resource constructor with @PathParam always recieves the path param of the first call
> --------------------------------------------------------------------------------------------
>
>                 Key: TOMEE-900
>                 URL: https://issues.apache.org/jira/browse/TOMEE-900
>             Project: TomEE
>          Issue Type: Bug
>         Environment: tomee-1.6.0-SNAPSHOT from 20130417
>            Reporter: Antoine Reilles
>         Attachments: testconstructor.war
>
>
> If I define a service using a constructor for injecting path parameters, as described in [http://cxf.apache.org/docs/jax-rs-basics.html#JAX-RSBasics-DealingwithParameters], the service will always be intantiated by recieving the value of the path parameter that was obtained during the first invocation of the service. Injecting the UriInfo in the service allows to compare the constructor injected path parameter value with the one used in the service, showing the issue.
> The attached war exhibits the issue:
>     GET http://localhost/testconstructor/a/b/one
> returns "OK: one", and prints in the logs:
>     Service Constructor called with: one
>     Service nameparam one
> A subsequent call to
>     http://localhost/testconstructor/a/b/two
> returns an HTTP 500 (since the code raises an exception), with value "one!= two", and prints in the server logs:
>     Service Constructor called with: one
>     Service nameparam two
>     MyExceptionMapper: javax.ws.rs.WebApplicationException
> The issue cannot be reproduced on a plain tomcat (tested with tomcat-7.0.39). Please have a look at [CXF-4973|https://issues.apache.org/jira/browse/CXF-4973] for an analysis of the issue by the cxf folks.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira