I have a RESTful service configured with Spring. Here is the interface:

@WebService
public interface IUserService {
@Post
   @HttpResource(location="/authenticate")
AuthenticateResponse authenticate(AuthenticateRequest request) throws KilterException;

   @Post
   @HttpResource(location="/getEntities")
ArrayList<User> getUsers(GetUsersRequest request) throws KilterException;

}


This service works without error. However, I made one change, which was changing the return type of the getUsers method from the ArrayList listed to a Collection, as follows:

   @Post
   @HttpResource(location="/getEntities")
Collection<User> getUsers(GetUsersRequest request) throws KilterException;


This was the ONLY change made. Though my server loaded the service without error, oddly, invoking the authenticate method, in the same way as before, with the same exact data, resulted in the following exception (NOTE: the code of my actual service was never invoked, this exception occurred in the CXF API which was processing parameters). So apparently, this Collection type, though on the getUsers method, prevented the authenticate method from being invoked. ??? Does anyone have any idea why this would be, and how to rectify it? The exception is below:

INFO: Invoking POST on /authenticate
Jul 15, 2007 8:59:17 PM org.apache.cxf.binding.http.interceptor.URIParameterInInterceptor handleMessage INFO: URIParameterInterceptor handle message on path [/authenticate] with content-type [application/xml] Jul 15, 2007 8:59:17 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept
INFO: Interceptor has thrown exception, unwinding now
java.lang.NullPointerException
at org.apache.cxf.binding.http.IriDecoderHelper.interopolateParams(IriDecoderHelper.java:264) at org.apache.cxf.binding.http.interceptor.URIParameterInInterceptor.mergeParams(URIParameterInInterceptor.java:124) at org.apache.cxf.binding.http.interceptor.URIParameterInInterceptor.handleMessage(URIParameterInInterceptor.java:105) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:206) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:67) at org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletDestination.java:100) at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:224) at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:103) at org.apache.cxf.transport.servlet.CXFServlet.invoke(CXFServlet.java:261) at org.apache.cxf.transport.servlet.CXFServlet.doPost(CXFServlet.java:239)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:270) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:191) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:227) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:211) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:817) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:623) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:444)
   at java.lang.Thread.run(Thread.java:595)

Thanks,

Brad

Reply via email to