[FindBugs] Ensure resources are closed/freed properly
Removing dumb connector.close during server.getURI()
This commit is contained in:
parent
ec310dca90
commit
0c66f3a68e
|
@ -606,6 +606,7 @@ public class Server extends HandlerWrapper implements Attributes
|
|||
/**
|
||||
* @return The URI of the first {@link NetworkConnector} and first {@link ContextHandler}, or null
|
||||
*/
|
||||
@SuppressWarnings("resource")
|
||||
public URI getURI()
|
||||
{
|
||||
NetworkConnector connector=null;
|
||||
|
|
|
@ -117,62 +117,63 @@ public class DefaultHandler extends AbstractHandler
|
|||
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
|
||||
response.setContentType(MimeTypes.Type.TEXT_HTML.toString());
|
||||
|
||||
ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer(1500);
|
||||
|
||||
writer.write("<HTML>\n<HEAD>\n<TITLE>Error 404 - Not Found");
|
||||
writer.write("</TITLE>\n<BODY>\n<H2>Error 404 - Not Found.</H2>\n");
|
||||
writer.write("No context on this server matched or handled this request.<BR>");
|
||||
writer.write("Contexts known to this server are: <ul>");
|
||||
|
||||
Server server = getServer();
|
||||
Handler[] handlers = server==null?null:server.getChildHandlersByClass(ContextHandler.class);
|
||||
|
||||
for (int i=0;handlers!=null && i<handlers.length;i++)
|
||||
try (ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer(1500);)
|
||||
{
|
||||
ContextHandler context = (ContextHandler)handlers[i];
|
||||
if (context.isRunning())
|
||||
{
|
||||
writer.write("<li><a href=\"");
|
||||
if (context.getVirtualHosts()!=null && context.getVirtualHosts().length>0)
|
||||
writer.write("http://"+context.getVirtualHosts()[0]+":"+request.getLocalPort());
|
||||
writer.write(context.getContextPath());
|
||||
if (context.getContextPath().length()>1 && context.getContextPath().endsWith("/"))
|
||||
writer.write("/");
|
||||
writer.write("\">");
|
||||
writer.write(context.getContextPath());
|
||||
if (context.getVirtualHosts()!=null && context.getVirtualHosts().length>0)
|
||||
writer.write(" @ "+context.getVirtualHosts()[0]+":"+request.getLocalPort());
|
||||
writer.write(" ---> ");
|
||||
writer.write(context.toString());
|
||||
writer.write("</a></li>\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.write("<li>");
|
||||
writer.write(context.getContextPath());
|
||||
if (context.getVirtualHosts()!=null && context.getVirtualHosts().length>0)
|
||||
writer.write(" @ "+context.getVirtualHosts()[0]+":"+request.getLocalPort());
|
||||
writer.write(" ---> ");
|
||||
writer.write(context.toString());
|
||||
if (context.isFailed())
|
||||
writer.write(" [failed]");
|
||||
if (context.isStopped())
|
||||
writer.write(" [stopped]");
|
||||
writer.write("</li>\n");
|
||||
}
|
||||
}
|
||||
writer.write("<HTML>\n<HEAD>\n<TITLE>Error 404 - Not Found");
|
||||
writer.write("</TITLE>\n<BODY>\n<H2>Error 404 - Not Found.</H2>\n");
|
||||
writer.write("No context on this server matched or handled this request.<BR>");
|
||||
writer.write("Contexts known to this server are: <ul>");
|
||||
|
||||
writer.write("</ul><hr>");
|
||||
writer.write("<a href=\"http://eclipse.org/jetty\"><img border=0 src=\"/favicon.ico\"/></a> ");
|
||||
writer.write("<a href=\"http://eclipse.org/jetty\">Powered by Jetty:// Java Web Server</a><hr/>\n");
|
||||
Server server = getServer();
|
||||
Handler[] handlers = server==null?null:server.getChildHandlersByClass(ContextHandler.class);
|
||||
|
||||
writer.write("\n</BODY>\n</HTML>\n");
|
||||
writer.flush();
|
||||
response.setContentLength(writer.size());
|
||||
try (OutputStream out=response.getOutputStream())
|
||||
{
|
||||
writer.writeTo(out);
|
||||
}
|
||||
for (int i=0;handlers!=null && i<handlers.length;i++)
|
||||
{
|
||||
ContextHandler context = (ContextHandler)handlers[i];
|
||||
if (context.isRunning())
|
||||
{
|
||||
writer.write("<li><a href=\"");
|
||||
if (context.getVirtualHosts()!=null && context.getVirtualHosts().length>0)
|
||||
writer.write("http://"+context.getVirtualHosts()[0]+":"+request.getLocalPort());
|
||||
writer.write(context.getContextPath());
|
||||
if (context.getContextPath().length()>1 && context.getContextPath().endsWith("/"))
|
||||
writer.write("/");
|
||||
writer.write("\">");
|
||||
writer.write(context.getContextPath());
|
||||
if (context.getVirtualHosts()!=null && context.getVirtualHosts().length>0)
|
||||
writer.write(" @ "+context.getVirtualHosts()[0]+":"+request.getLocalPort());
|
||||
writer.write(" ---> ");
|
||||
writer.write(context.toString());
|
||||
writer.write("</a></li>\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.write("<li>");
|
||||
writer.write(context.getContextPath());
|
||||
if (context.getVirtualHosts()!=null && context.getVirtualHosts().length>0)
|
||||
writer.write(" @ "+context.getVirtualHosts()[0]+":"+request.getLocalPort());
|
||||
writer.write(" ---> ");
|
||||
writer.write(context.toString());
|
||||
if (context.isFailed())
|
||||
writer.write(" [failed]");
|
||||
if (context.isStopped())
|
||||
writer.write(" [stopped]");
|
||||
writer.write("</li>\n");
|
||||
}
|
||||
}
|
||||
|
||||
writer.write("</ul><hr>");
|
||||
writer.write("<a href=\"http://eclipse.org/jetty\"><img border=0 src=\"/favicon.ico\"/></a> ");
|
||||
writer.write("<a href=\"http://eclipse.org/jetty\">Powered by Jetty:// Java Web Server</a><hr/>\n");
|
||||
|
||||
writer.write("\n</BODY>\n</HTML>\n");
|
||||
writer.flush();
|
||||
response.setContentLength(writer.size());
|
||||
try (OutputStream out=response.getOutputStream())
|
||||
{
|
||||
writer.writeTo(out);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
|
|
|
@ -133,6 +133,7 @@ public class ShutdownHandler extends HandlerWrapper
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("resource")
|
||||
private String getServerUrl()
|
||||
{
|
||||
NetworkConnector connector=null;
|
||||
|
|
|
@ -665,14 +665,14 @@ public class HashSessionManager extends AbstractSessionManager
|
|||
return session;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@SuppressWarnings("resource")
|
||||
private void restoreSessionAttributes (InputStream is, int size, HashedSession session)
|
||||
throws Exception
|
||||
{
|
||||
if (size>0)
|
||||
{
|
||||
// input stream should not be closed here
|
||||
@SuppressWarnings("resource")
|
||||
ClassLoadingObjectInputStream ois = new ClassLoadingObjectInputStream(is);
|
||||
for (int i=0; i<size;i++)
|
||||
{
|
||||
|
|
|
@ -684,87 +684,89 @@ public class UrlEncoded extends MultiMap<String> implements Cloneable
|
|||
int c;
|
||||
|
||||
int totalLength = 0;
|
||||
ByteArrayOutputStream2 output = new ByteArrayOutputStream2();
|
||||
|
||||
int size=0;
|
||||
|
||||
while ((c=in.read())>0)
|
||||
try(ByteArrayOutputStream2 output = new ByteArrayOutputStream2();)
|
||||
{
|
||||
switch ((char) c)
|
||||
int size=0;
|
||||
|
||||
while ((c=in.read())>0)
|
||||
{
|
||||
case '&':
|
||||
size=output.size();
|
||||
value = size==0?"":output.toString(charset);
|
||||
output.setCount(0);
|
||||
if (key != null)
|
||||
{
|
||||
map.add(key,value);
|
||||
}
|
||||
else if (value!=null&&value.length()>0)
|
||||
{
|
||||
map.add(value,"");
|
||||
}
|
||||
key = null;
|
||||
value=null;
|
||||
if (maxKeys>0 && map.size()>maxKeys)
|
||||
throw new IllegalStateException("Form too many keys");
|
||||
break;
|
||||
case '=':
|
||||
if (key!=null)
|
||||
{
|
||||
switch ((char) c)
|
||||
{
|
||||
case '&':
|
||||
size=output.size();
|
||||
value = size==0?"":output.toString(charset);
|
||||
output.setCount(0);
|
||||
if (key != null)
|
||||
{
|
||||
map.add(key,value);
|
||||
}
|
||||
else if (value!=null&&value.length()>0)
|
||||
{
|
||||
map.add(value,"");
|
||||
}
|
||||
key = null;
|
||||
value=null;
|
||||
if (maxKeys>0 && map.size()>maxKeys)
|
||||
throw new IllegalStateException("Form too many keys");
|
||||
break;
|
||||
case '=':
|
||||
if (key!=null)
|
||||
{
|
||||
output.write(c);
|
||||
break;
|
||||
}
|
||||
size=output.size();
|
||||
key = size==0?"":output.toString(charset);
|
||||
output.setCount(0);
|
||||
break;
|
||||
case '+':
|
||||
output.write(' ');
|
||||
break;
|
||||
case '%':
|
||||
int code0=in.read();
|
||||
if ('u'==code0)
|
||||
{
|
||||
int code1=in.read();
|
||||
if (code1>=0)
|
||||
{
|
||||
int code2=in.read();
|
||||
if (code2>=0)
|
||||
{
|
||||
int code3=in.read();
|
||||
if (code3>=0)
|
||||
output.write(new String(Character.toChars((convertHexDigit(code0)<<12)+(convertHexDigit(code1)<<8)+(convertHexDigit(code2)<<4)+convertHexDigit(code3))).getBytes(charset));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (code0>=0)
|
||||
{
|
||||
int code1=in.read();
|
||||
if (code1>=0)
|
||||
output.write((convertHexDigit(code0)<<4)+convertHexDigit(code1));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
output.write(c);
|
||||
break;
|
||||
}
|
||||
size=output.size();
|
||||
key = size==0?"":output.toString(charset);
|
||||
output.setCount(0);
|
||||
break;
|
||||
case '+':
|
||||
output.write(' ');
|
||||
break;
|
||||
case '%':
|
||||
int code0=in.read();
|
||||
if ('u'==code0)
|
||||
{
|
||||
int code1=in.read();
|
||||
if (code1>=0)
|
||||
{
|
||||
int code2=in.read();
|
||||
if (code2>=0)
|
||||
{
|
||||
int code3=in.read();
|
||||
if (code3>=0)
|
||||
output.write(new String(Character.toChars((convertHexDigit(code0)<<12)+(convertHexDigit(code1)<<8)+(convertHexDigit(code2)<<4)+convertHexDigit(code3))).getBytes(charset));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (code0>=0)
|
||||
{
|
||||
int code1=in.read();
|
||||
if (code1>=0)
|
||||
output.write((convertHexDigit(code0)<<4)+convertHexDigit(code1));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
output.write(c);
|
||||
break;
|
||||
}
|
||||
|
||||
totalLength++;
|
||||
if (maxLength>=0 && totalLength > maxLength)
|
||||
throw new IllegalStateException("Form too large");
|
||||
}
|
||||
}
|
||||
|
||||
size=output.size();
|
||||
if (key != null)
|
||||
{
|
||||
value = size==0?"":output.toString(charset);
|
||||
output.setCount(0);
|
||||
map.add(key,value);
|
||||
totalLength++;
|
||||
if (maxLength>=0 && totalLength > maxLength)
|
||||
throw new IllegalStateException("Form too large");
|
||||
}
|
||||
|
||||
size=output.size();
|
||||
if (key != null)
|
||||
{
|
||||
value = size==0?"":output.toString(charset);
|
||||
output.setCount(0);
|
||||
map.add(key,value);
|
||||
}
|
||||
else if (size>0)
|
||||
map.add(output.toString(charset),"");
|
||||
}
|
||||
else if (size>0)
|
||||
map.add(output.toString(charset),"");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue