Question

Je me fais une exception sur WAS 7.0.0.13 mise à jour 1 serveur. Je travaille sur le développement de services Web REST utilisant le cadre ressort 3. Lorsque le cadre du printemps tente d'obtenir le flux de sortie pour écrire le corps de la réponse http, WAS lancer une exception

  

Writer déjà obtenu (à com.ibm.ws.webcontainer.srt.SRTServletResponse.getOutputStream (SRTServletResponse.java:699))

Voici la pile d'appel. S'il vous plaît conseiller.

[1/7/11 13:25:02:600 CST] 0000001a webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[terms]: java.lang.IllegalStateException: SRVE0209E: Writer already obtained
 at com.ibm.ws.webcontainer.srt.SRTServletResponse.getOutputStream(SRTServletResponse.java:699)
 at com.ibm.ws.cache.servlet.FragmentComposer.obtainOutputStream(FragmentComposer.java:689)
 at com.ibm.ws.cache.servlet.FragmentComposer.getOutputStream(FragmentComposer.java:753)
 at com.ibm.ws.cache.servlet.CacheProxyResponse.getOutputStream(CacheProxyResponse.java:215)
 at org.springframework.http.server.ServletServerHttpResponse.getBody(ServletServerHttpResponse.java:64)
 at org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter.writeInternal(AbstractXmlHttpMessageConverter.java:66)
 at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:181)
 at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.writeWithMessageConverters(AnnotationMethodHandlerAdapter.java:975)
 at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.handleResponseBody(AnnotationMethodHandlerAdapter.java:933)
 at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.getModelAndView(AnnotationMethodHandlerAdapter.java:882)
 at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:428)
 at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414)
 at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
 at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
 at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:718)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
 at com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:307)
 at com.ibm.ws.cache.servlet.CacheHook.handleFragment(CacheHook.java:574)
 at com.ibm.ws.cache.servlet.CacheHook.handleServlet(CacheHook.java:250)
 at com.ibm.ws.cache.servlet.ServletWrapper.service(ServletWrapper.java:259)
 at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1663)
 at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:939)
 at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
 at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
 at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3826)
 at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
 at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
 at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
 at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:445)
 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:504)
 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:301)
 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:275)
 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:1563)

Merci, Satya.

Était-ce utile?

La solution

trouvé quelques petites choses pour vous d'aller sur:

Voici une erreur semblable à travailler avec l'écrivain et de sortie dans un Servlet sur WebSphere. Légèrement différent. Mais il pourrait vous donner quelque chose à continuer. Les deux réponses avaient l'air bien.

J'ai aussi trouvé cette sur le site fixe d'IBM. Il est pour une ancienne version de WAS, mais parfois les choses pause, ou les contournements de travail présentés sont encore utiles au dépannage.

Enfin, s'il est utile que j'ai une recherche Google sur le nom d'erreur ici .

Mais je pense que je vais essayer le premier lien de la pile de flux par rapport au premier. Il avait l'air le plus prometteur.

Autres conseils

Je l'ai ouvert un fil similaire sur les developerWorks d'IBM, on n'a pas eu de réponse.

Mais je pense que je l'ai trouvé une réponse à cette question. bien que je ne connais pas la raison exacte de l'apparition d'exception que j'ai trouvé un travail autour pour l'instant. I a pu éviter l'exception en réinitialisant le tampon de l'objet de réponse. Voici l'exemple de code de mon contrôleur (ressort 3).

@RequestMapping(value = "/codesystems", method = RequestMethod.GET)

public @ResponseBody
CodeSystemVersionDirectory getAllAvailableCodeSystems(HttpServletResponse response) throws Exception {

    response.resetBuffer();

    response.setHeader("Location", "/codeSystems");
    response.setContentType("application/xml");

    return codeSystemService_.getCodesystemVersionDirectory();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top