I have a simple JAX-RS controller exposing 2 methods, one marked @GET and one
marked @PUT. Issuing a PUT request first to the controller after application
startup causes a 404 response and exceptions from CXF that no method is
matched on the controller. If I issue a GET request first, then a PUT
request, both methods are found. Any ideas on what I'm doing wrong?

public class LoggerController {

    @GET
    @Produces("application/json")
    public Map<String,Object> getLevel(@QueryParam(LOGGER) String logger) {
    ...
    }

    @PUT
    @Produces("application/json")
    public Map<String,Object> setLevel(@QueryParam(LOGGER) String logger,
@QueryParam(LEVEL) String level) {
    ...
    }

}

org.apache.cxf.jaxrs.utils.JAXRSUtils - Trying to select a resource
operation on the resource class servlet.LoggerController
org.apache.cxf.jaxrs.utils.JAXRSUtils - No method match, method name :
getLevel, request path : /com/ws/log, method @Path : /, HTTP Method : PUT,
method HTTP Method : GET, ContentType : */*, method @Consumes : */*,, Accept
: */*,, method @Produces : application/json,.
org.apache.cxf.jaxrs.utils.JAXRSUtils - No method match, method name :
setLevel, request path : /com/ws/log, method @Path : /, HTTP Method : PUT,
method HTTP Method : PUT, ContentType : */*, method @Consumes : */*,, Accept
: */*,, method @Produces : application/json,.
org.apache.cxf.jaxrs.utils.JAXRSUtils - No operation matching request path
"/com/ws/log" is found, Relative Path: /com/ws/log, HTTP Method: PUT,
ContentType: */*, Accept: */*,. Please enable FINE/TRACE log level for more
details.

applicationContext.xml:

    <jaxrs:server id="logger" address="/log">
        <jaxrs:serviceBeans>
            <bean id="loggerController" class="servlet.LoggerController"/>
        </jaxrs:serviceBeans>
        <jaxrs:providers>
            <ref bean="jacksonJsonProvider" />
        </jaxrs:providers>
    </jaxrs:server>

web.xml:

  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <display-name>CXF Servlet</display-name>
    <servlet-class>
        org.apache.cxf.transport.servlet.CXFServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/ws/*</url-pattern>
  </servlet-mapping>






--
View this message in context: 
http://cxf.547215.n5.nabble.com/JAX-RS-GET-request-required-before-PUT-is-recognized-tp5723847.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to