# Servlet.service() threw exception



## sheepy (11. Dez 2010)

Hey Leute,
ich bin auf dem Gebiet der Servlets noch ziemlich unerfahren und bräuchte mal euren Ratschlag.

Ich hab hier folgendes MiniServlet

```
package test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class Test extends HttpServlet {
	private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
	PrintWriter out;
	String ort;
    public Test() {
        super();
        // TODO Auto-generated constructor stub
        
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
    @Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	ort=request.getParameter("ort");
    	out=response.getWriter();
    	if(ort!=null){
    		response.containsHeader("text/html");	
    		out.println("blaa");
    		out.close();
    	}else out.println("Es wurde aus irgendeinem Grund kein Ort angegeben....");
   

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	}
}
```

Wenn nun die Bedienung eintritt, das ort leer ist, funktioniert alles.
Wenn die Variable jedoch nicht leer ist wirft er mit sehr vielen exceptions um sich....


```
SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
java.io.IOException: Stream closed
	at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
	at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
	at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
	at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
	at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
	at org.apache.jsp.index_jsp._jspService(index_jsp.java:238)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:636)
```

Was passt ihm denn hier nicht? Mag er den PrintWriter nicht?
Habe leider nich keine gescheite Literatur für JavaEE gefunden.

Gruß sHeepy


----------



## XHelp (11. Dez 2010)

Ohne mich jetzt mit Servlets auszukennen: was ist, wenn du .close() weglässt?


----------



## sheepy (11. Dez 2010)

tjoa  wenn ich den stream nicht schließe funktioniert es....warum?


----------



## XHelp (11. Dez 2010)

Weil vermutlich noch irgendwer in den Stream schreiben will.
Daumenregel: wenn du selber was aufmachst, solltest du es auch selber schließen. Wenn du es selber NICHT aufmachst, solltest du es auf NICHT selber schließen.


----------



## KSG9|sebastian (14. Dez 2010)

1. Wozu die Instanzvariablen? Lass die gleich weg!
2. Einen Stream den man selber nicht öffnet schließt man auch nicht


----------

