sto cercando di modificare la risposta http in un filtro e sto ottenendo il seguente eccezioneJetty di filtro per modificare la risposta - java.lang.IllegalStateException: SCRITTORE
java.lang.IllegalStateException: SCRITTORE a org .eclipse.jetty.server.Response.getOutputStream (Response.java:657) a javax.servlet.ServletResponseWrapper.getOutputStream (ServletResponseWrapper.java:142) a org.eclipse.jetty.servlets.ProxyServlet.service (ProxyServlet .java: 414) a org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.jav un: 643) a org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1331) a com.cisco.vsx.node.proxy.http.RegexFilter.doFilter (RegexFilter.java: 36)
Sto utilizzando SelectChannelSelector e ProxyServlet.Transparent proxy.
riportano di seguito le frammento classe di test
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
ProxyServlet.Transparent p1 = new ProxyServlet.Transparent("/proxy",
"www.cisco.com", 80);
ServletHolder servletHolder = new ServletHolder(p1);
context.addServlet(servletHolder, "/proxy/*");
context.addFilter(new FilterHolder(RegexFilter.class), "/*", null);
server.setHandler(context);
server.start();
server.join();
Questo è il codice dalla classe filtro
PrintWriter out = response.getWriter();
CharResponseWrapper wrapper = new CharResponseWrapper((HttpServletResponse) response);
chain.doFilter(request, wrapper);
String html = wrapper.toString();
if (regex != null && response.getContentType() != null
&& response.getContentType().startsWith("text/html")) {
Matcher matcher = regex.matcher(html);
Map<Integer, Integer> matches = new LinkedHashMap<Integer, Integer>();
while (matcher.find()) {
int start = matcher.start(1);
System.out.println("START" + start);
int end = matcher.end(1);
System.out.println("END" + end);
matches.put(start, end - start);
}
StringBuffer sb = new StringBuffer();
int start = 0;
for (int startIndex : matches.keySet()) {
String str = html.substring(start, startIndex) + "/proxy/";
sb.append(str);
start = startIndex + matches.get(startIndex);
}
html = sb.toString();
}
response.setContentLength(html.getBytes().length);
out.write(html);
Non sai da dove roba sta andando male.