public void processConnection(TcpConnection connection,
Object[] theData) {
try {
Socket socket=connection.getSocket();
socket.setSoLinger( true, 100);
Request request = new Request();
AJP12RequestAdapter reqA = new AJP12RequestAdapter(socket);
Response response=new Response();
AJP12ResponseAdapter resA=new AJP12ResponseAdapter();
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
request.setRequestAdapter(reqA);
response.setResponseAdapter( resA );
resA.setOutputStream(socket.getOutputStream());
request.setResponse(response);
response.setRequest(request);
reqA.readNextRequest();
if (response.getStatus() >= 400) {
response.finish();
socket.close();
return;
}
// resolve the server that we are for
int contentLength = request.getIntHeader("content-length");
if (contentLength != -1) {
BufferedServletInputStream sis =
(BufferedServletInputStream)request.getInputStream();
sis.setLimit(contentLength);
}
contextM.service( request, response );
response.finish();
socket.close();
} catch (Exception e) {
// XXX
// this isn't what we want, we want to log the problem somehow
System.out.println("HANDLER THREAD PROBLEM: " + e);
e.printStackTrace();
}
}
|