Hi,
it seems that my server doesn't support the PUT and DELETE-Method and i cant fix it.![]()
The error at the client:
The error at the server:Code:UPDATE 01.06.2011 09:51:14 org.springframework.web.client.RestTemplate handleResponseError WARNUNG: PUT request for "http://localhost:8080/core/users/patients/26" resulted in 405 (Request method 'PUT' not supported); invoking error handler I/O error: Server returned HTTP response code: 405 for URL: http://localhost:8080/core/users/patients/26; nested exception is java.io.IOException: Server returned HTTP response code: 405 for URL: http://localhost:8080/core/users/patients/26 DELETE 01.06.2011 09:51:14 org.springframework.web.client.RestTemplate handleResponseError WARNUNG: DELETE request for "http://localhost:8080/core/users/patients/26" resulted in 405 (Request method 'DELETE' not supported); invoking error handler I/O error: Server returned HTTP response code: 405 for URL: http://localhost:8080/core/users/patients/26; nested exception is java.io.IOException: Server returned HTTP response code: 405 for URL: http://localhost:8080/core/users/patients/26
my web.xmlCode:2011-06-01 09:51:14.867:INFO:/core:org.tuckey.web.filters.urlrewrite.utils.ServerNameMatcher DEBUG: looking for hostname match on current server name localhost 2011-06-01 09:51:14.867:INFO:/core:org.tuckey.web.filters.urlrewrite.UrlRewriteFilter DEBUG: checking for status path on /core/users/patients/26 2011-06-01 09:51:14.868:INFO:/core:org.tuckey.web.filters.urlrewrite.UrlRewriteFilter DEBUG: urlRewriter engine not loaded ignoring request (could be a conf fil e problem) <2011-06-01 09:51:14> DEBUG : DispatcherServlet servlet.DispatcherServlet : DispatcherServlet with name 'DispatcherServlet' processing DELETE request for [/core /users/patients/26] <2011-06-01 09:51:14> DEBUG : AbstractUrlHandlerMapping annotation.DefaultAnnotationHandlerMapping : Matching patterns for request [/users/patients/26] are [/us ers/patients/{id}] <2011-06-01 09:51:14> DEBUG : AbstractUrlHandlerMapping annotation.DefaultAnnotationHandlerMapping : URI Template variables for request [/users/patients/26] are {id=26} <2011-06-01 09:51:14> DEBUG : AbstractUrlHandlerMapping annotation.DefaultAnnotationHandlerMapping : Mapping [/users/patients/26] to HandlerExecutionChain with handler [de.luebeck.uni.itm.mss.controller.user.PatientController@a40787] and 4 interceptors <2011-06-01 09:51:14> DEBUG : AbstractHandlerExceptionResolver annotation.AnnotationMethodHandlerExceptionResolver : Resolving exception from handler [de.luebec k.uni.itm.mss.controller.user.PatientController@a40787]: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'DELETE' not supported <2011-06-01 09:51:14> DEBUG : AbstractHandlerExceptionResolver annotation.ResponseStatusExceptionResolver : Resolving exception from handler [de.luebeck.uni.itm .mss.controller.user.PatientController@a40787]: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'DELETE' not supported <2011-06-01 09:51:14> DEBUG : AbstractHandlerExceptionResolver support.DefaultHandlerExceptionResolver : Resolving exception from handler [de.luebeck.uni.itm.ms s.controller.user.PatientController@a40787]: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'DELETE' not supported <2011-06-01 09:51:14> WARN : DefaultHandlerExceptionResolver servlet.PageNotFound : Request method 'DELETE' not supported <2011-06-01 09:51:14> DEBUG : DispatcherServlet servlet.DispatcherServlet : Null ModelAndView returned to DispatcherServlet with name 'DispatcherServlet': assum ing HandlerAdapter completed request handling <2011-06-01 09:51:14> DEBUG : FrameworkServlet servlet.DispatcherServlet : Successfully completed request
myServer.xmlCode:<display-name>spring-3.0-rest</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/META-INF/*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/static/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value></param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <!-- URL rewrite filter, used to access the static resources to http://localhost/static/foo.css http://localhost/foo.css --> <filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>confReloadCheckInterval</param-name> <param-value>60</param-value> </init-param> <init-param> <param-name>logLevel</param-name> <param-value>DEBUG</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>httpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>httpMethodFilter</filter-name> <servlet-name>DispatcherServlet</servlet-name> </filter-mapping> </web-app>
my Controller:Code:<?xml version="1.0" encoding="UTF-8"?> <!-- Enable annotation scanning. --> <context:component-scan base-package="de.luebeck.uni.itm.mss" /> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref local="jsonConverter" /> <ref local="xmlMarshallingConverter" /> </list> </property> </bean> <!-- Define the JSON marshaller which is used to convert the Objects <-> JSON. --> <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json" /> </bean> <!-- Define the OXM marshaller which is used to convert the Objects <-> XML. --> <bean id="xmlMarshallingConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> <property name="supportedMediaTypes" value="application/xml" /> <property name="unmarshaller" ref="xmlMarshaller" /> <property name="marshaller" ref="xmlMarshaller" /> </bean> <!--marshallers --> <bean id="xmlMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller"> <property name="useAttributeForTypes"> <list> <value>java.lang.Long</value> <value>java.lang.String</value> <value>java.util.Date</value> <value>java.util.Locale</value> </list> </property> </bean> <!-- <bean id="oxmMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller"/> <bean id="marshallingHttpMessageConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter"> <property name="supportedMediaTypes" value="application/xml" /> <property name="marshaller" ref="oxmMarshaller" /> <property name="unmarshaller" ref="oxmMarshaller" /> </bean> Define the JSON marshaller which is used to convert the Objects <-> JSON. <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json" /> </bean> Required for REST services in order to bind the return value to the ResponseBody. <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <util:list id="beanList"> <ref bean="jsonConverter" /> <ref bean="marshallingHttpMessageConverter" /> </util:list> </property> </bean> --> <!-- Should be defined last! --> <mvc:annotation-driven /> </beans>
My Client:Code:@Controller @RequestMapping("/users/patients") @Transactional public class PatientController{ private IPatientRepository repository; public PatientController() { super(); //... @RequestMapping(value="/{id}", method=RequestMethod.DELETE, headers = "Accept=application/json, application/xml") @ResponseBody public ModelAndView delete( @PathVariable Integer id) { repository.remove(id); return new ModelAndView("redirect:home"); } }
Can u help me pls?Code:public static void main(String[] args) { //... //DELETE String url = "http://localhost:8080/core"; String cmd = "/users/patients"; RestTemplate template = RESTTemplateConnection.REST_TEMPLATE; System.out.println("DELETE"); try{ delete(template,url,cmd,"/{id}",id); }catch (Exception e) { System.out.println(e.getLocalizedMessage()); } } private static void delete(RestTemplate template, String url, String cmd, String resource, Integer id){ template.delete(url+cmd+resource,id); }
Greetings
MK



Reply With Quote