witam, napisałem servlet ktory w założeniu ma wysłać Vector z obektami klasy Kontrahenci do apletu, zrobilem to prawie tak samo jak w pewnym przykladzie ktory znalazłem na necie, ale cos jednak nie działa wywala mi nastepyjący błąd :
java.lang.IllegalStateException: getWriter() has already been called for this response
at org.apache.catalina.connector.Response.getOutputStream(Response.java:568)
at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:180)
at javax.servlet.ServletResponseWrapper.getOutputStream(ServletResponseWrapper.java:101)
at Controller.sendKontrVector(Controller.java:87)
at Controller.doGet(Controller.java:61)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:619)
czy ktos moglby doradzić co jest nie tak? oto kod servletu :
import java.io.*;
import java.net.*;
import java.sql.SQLException;
import java.util.Vector;
import javax.servlet.*;
import javax.servlet.http.*;
import klasy.*;
public class Controller extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
/* TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Controller</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet Controller at " + request.getContextPath () + "</h1>");
out.println("</body>");
out.println("</html>");
*/
out.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
String action = null;
action = request.getParameterValues("Action")[0];
AccessDB accessDB = new AccessDB();
Vector dataVector = null;
if(action.equals("Kontrahenci")) {
try {
dataVector = accessDB.getKontrahenci();
} catch (SQLException ex) {
ex.printStackTrace();
}
sendKontrVector(response,dataVector);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/** Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
// </editor-fold>
protected void sendKontrVector(HttpServletResponse response, Vector dataVector) {
ObjectOutputStream outputToApplet;
try
{
outputToApplet = new ObjectOutputStream(response.getOutputStream());
outputToApplet.writeObject(dataVector);
outputToApplet.flush();
outputToApplet.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}