cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jason Gustafson (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CXF-4643) Initial non-GET request returns 404 if it has query parameters
Date Wed, 21 Nov 2012 18:51:58 GMT
Jason Gustafson created CXF-4643:
------------------------------------

             Summary: Initial non-GET request returns 404 if it has query parameters
                 Key: CXF-4643
                 URL: https://issues.apache.org/jira/browse/CXF-4643
             Project: CXF
          Issue Type: Bug
    Affects Versions: 2.7.0
         Environment: Jetty Maven Plugin (default version) 
            Reporter: Jason Gustafson


Hello, I ran into a weird case where an initial HTTP non-GET request returns 404 if there
happens to be query parameters in it. Basically, you can take the code below, start up a servlet
container, and do the following curl commands:

> curl -v -X PUT http://localhost:8080/cxf-test/woot?foo=bar -d "Name"
404
> curl -v http://localhost:8080/cxf-test/woot
200
> curl -v -X PUT http://localhost:8080/cxf-test/woot?foo=bar -d "Name"
204

I tracked the problem down to ServletController:184 (in the 2.7.0 sources). I don't know why
"updateDestination" is invoked only for GET, but this case works fine if it is invoked regardless
of the method. Is there perhaps a problem in my configuration?



RestService
-----------
@Service("theRestService")
@Path("/")
public class TheRestService {
    
    @PUT
    public void putHello(@QueryParam("foo") String foo, String name) {
        System.out.println("Hello " + name);
    }
    
    @GET 
    public String getHello() {
        return "foo";
    }

}


web.xml
-------
<web-app>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:/META-INF/spring/spring.xml
		</param-value>
	</context-param>
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
    <servlet>
        <servlet-name>TheServlet</servlet-name>
        <display-name>The 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>TheServlet</servlet-name>
        <url-pattern>/woot/*</url-pattern>
    </servlet-mapping>	

</web-app>


spring.xml
----------
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:jaxrs="http://cxf.apache.org/jaxrs"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:cxf="http://cxf.apache.org/core"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
         
       http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
       http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd
      
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
       http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd
       http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
       http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd                 
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 

	<!-- Spring Bean Setup -->
	<context:annotation-config />
	<context:component-scan base-package="test.cxf" />
    
    <jaxrs:server id="theServer" address="/">
        <jaxrs:serviceBeans>
            <ref bean="theRestService" />              
        </jaxrs:serviceBeans>
    </jaxrs:server>
       	
</beans>


--
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

Mime
View raw message