Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在没有资源标识的情况下处理RESTful服务请求的理想方法是什么_Rest_Spring Mvc - Fatal编程技术网

在没有资源标识的情况下处理RESTful服务请求的理想方法是什么

在没有资源标识的情况下处理RESTful服务请求的理想方法是什么,rest,spring-mvc,Rest,Spring Mvc,我有一个使用Spring开发的RESTful服务。服务尝试使用请求方法为GET的标识字符串查找资源 请求模式是:https://api.rest.com/resource/RESOURCEID 为其定义的方法为 @RequestMapping( value = "/{RESOURCEID}", method = RequestMethod.GET, produces = "application/json") public

我有一个使用Spring开发的RESTful服务。服务尝试使用请求方法为GET的标识字符串查找资源

请求模式是:
https://api.rest.com/resource/RESOURCEID

为其定义的方法为

@RequestMapping(
            value = "/{RESOURCEID}",
            method = RequestMethod.GET,
            produces = "application/json")
public @ResponseBody String retrieve(
            @PathVariable String resourceID,
            HttpServletRequest request,
            HttpServletResponse response)
                throws AbstractBaseAppException,
                       JsonGenerationException,
                       JsonMappingException,
                       IOException
现在,当我尝试发出一个请求时,比如:
https://api.rest.com/resource/
,我得到以下异常:

[6/10/14 17:48:56:942 IST] 00000018 PmiRegistry   W   CWPMI0023W: Unable to register PMI module due to duplicate name: SimpleFileServlet
[6/10/14 17:48:56:982 IST] 00000018 StatsFactoryU W   CWPMI0103W: Unable to register custom PMI module due to duplicate name under the same parent or invalid PMI tree path: SimpleFileServlet
[6/10/14 17:48:57:015 IST] 00000018 stats         E com.ibm.ws.wswebcontainer.stats.ServletPmiModule ServletPmiModule error creating stats instance 
                                 com.ibm.wsspi.pmi.factory.StatsFactoryException: CWPMI0103W: Unable to register custom PMI module due to duplicate name under the same parent or invalid PMI tree path: SimpleFileServlet
     at com.ibm.ws.pmi.factory.StatsFactoryUtil.registerModule(StatsFactoryUtil.java:92)
     at com.ibm.ws.pmi.factory.StatsInstanceImpl._register(StatsInstanceImpl.java:81)
     at com.ibm.ws.pmi.factory.StatsInstanceImpl.createGroupInstance(StatsInstanceImpl.java:126)
     at com.ibm.wsspi.pmi.factory.StatsFactory.createStatsInstance(StatsFactory.java:354)
     at com.ibm.wsspi.pmi.factory.StatsFactory.createStatsInstance(StatsFactory.java:319)
     at com.ibm.ws.wswebcontainer.stats.ServletPmiModule.<init>(ServletPmiModule.java:91)
     at com.ibm.ws.wswebcontainer.stats.WebAppModule.onServletStartInit(WebAppModule.java:241)
     at com.ibm.ws.webcontainer.WebAppPmiListener.onServletStartInit(WebAppPmiListener.java:178)
     at com.ibm.ws.webcontainer.webapp.FireOnServletStartInit.fireEvent(FireOnEventListenerVisitors.java:85)
     at com.ibm.ws.webcontainer.util.EventListeners.fireEvent(EventListeners.java:53)
     at com.ibm.ws.webcontainer.webapp.WebAppEventSource.onServletStartInit(WebAppEventSource.java:121)
     at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:314)
     at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:168)
     at com.ibm.ws.webcontainer.servlet.ServletWrapper.load(ServletWrapper.java:1267)
     at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:970)
     at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1370)
     at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:179)
     at org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler.handleRequest(DefaultServletHttpRequestHandler.java:119)
     at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
     at com.metlife.gsp.tenancy.TenantDispatcherServlet.service(TenantDispatcherServlet.java:103)
     at com.metlife.gsp.tenancy.TenantDispatcherServletProxy.service(TenantDispatcherServletProxy.java:82)
     at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1131)
     at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:706)
     at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:433)
     at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:125)
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:92)
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
     at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:191)
     at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
     at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:916)
     at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1005)
     at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
     at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:903)
     at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1593)
     at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:192)
     at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
     at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
     at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272)
     at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
     at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
     at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
     at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
     at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
     at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
     at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
     at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
     at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
     at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1574)
[6/10/14 17:48:56:942 IST]00000018 PmiRegistry W CWPMI0023W:由于名称重复,无法注册PMI模块:SimpleFileServlet
[6/10/14 17:48:56:982 IST]00000018 StatsFactoryU W CWPMI0103W:无法注册自定义PMI模块,因为同一父级下的名称重复或PMI树路径无效:SimpleFileServlet
[6/10/14 17:48:57:015 IST]00000018 stats E com.ibm.ws.wswebcontainer.stats.servletpmodule servletpmodule创建统计实例时出错
com.ibm.wsspi.pmi.factory.StatsFactoryException:CWPMI0103W:无法注册自定义pmi模块,因为同一父级下的名称重复或pmi树路径无效:SimpleFileServlet
位于com.ibm.ws.pmi.factory.StatsFactoryUtil.registerModule(StatsFactoryUtil.java:92)
在com.ibm.ws.pmi.factory.statinstanceimpl.注册处(statinstanceimpl.java:81)
位于com.ibm.ws.pmi.factory.statistanceimpl.createGroupInstance(statistanceimpl.java:126)
位于com.ibm.wsspi.pmi.factory.StatsFactory.CreateStatInstance(StatsFactory.java:354)
位于com.ibm.wsspi.pmi.factory.StatsFactory.CreateStatInstance(StatsFactory.java:319)
位于com.ibm.ws.wswebcontainer.stats.ServletPmiModule.(ServletPmiModule.java:91)
位于com.ibm.ws.wswebcontainer.stats.WebAppModule.onServletStartInit(WebAppModule.java:241)
位于com.ibm.ws.webcontainer.webapppmistener.onServletStartInit(webapppmistener.java:178)
在com.ibm.ws.webcontainer.webapp.FireOnServletStartInit.firevent(FireOnEventListenerVisitors.java:85)
位于com.ibm.ws.webcontainer.util.EventListeners.fireEvent(EventListeners.java:53)
位于com.ibm.ws.webcontainer.webapp.WebAppEventSource.onServletStartInit(WebAppEventSource.java:121)
位于com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:314)
位于com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:168)
位于com.ibm.ws.webcontainer.servlet.ServletWrapper.load(ServletWrapper.java:1267)
在com.ibm.ws.webcontainer.filter.webappfiltermanger.invokeFilters上(webappfiltermanger.java:970)
位于com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1370)
位于com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:179)
位于org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler.HandlerRequest(DefaultServletHttpRequestHandler.java:119)
位于org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
位于org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
位于org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
位于com.metlife.gsp.tenancy.tenantispatcherservlet.service(tenantispatcherservlet.java:103)
在com.metlife.gsp.tenancy.TenantDispatcherServletProxy.service(TenantDispatcherServletProxy.java:82)
位于com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1131)
位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:706)
位于com.ibm.ws.webcontainer.servlet.ServletWrapper.HandlerRequest(ServletWrapper.java:433)
位于com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.HandlerRequest(ServletWrapperImpl.java:178)
位于com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:125)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:92)
位于org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
位于org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
位于com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:191)
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:89)
在com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:916)
在com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters上(WebAppFilterManager.java:1005)
位于com.ibm.ws.webcontainer.servlet.CacheServletWrapper.HandlerRequest(CacheServletWrapper.java:87)
位于com.ibm.ws.webcontainer.webcontainer.handleRequest(webcontainer.java:903)
位于com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1593)
位于com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:192)
位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
位于com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272)
位于com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
位于com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
在com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted上(AioReadCompletionListener.java:165)
在com