diff --git a/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java b/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java index 41a86f5bd2..61a105951c 100644 --- a/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java +++ b/src/main/java/com/alibaba/druid/support/http/StatViewServlet.java @@ -212,7 +212,8 @@ public class StatViewServlet extends HttpServlet { return; } - if (isRequireAuth() && session.getAttribute(SESSION_USER_KEY) == null + if (isRequireAuth() + && session.getAttribute(SESSION_USER_KEY) == null && !("/login.html".equals(path) || path.startsWith("/css") || path.startsWith("/js") || path.startsWith("/img"))) { if (contextPath == null || contextPath.equals("") || contextPath.equals("/")) { response.sendRedirect("/login.html"); @@ -251,6 +252,15 @@ public class StatViewServlet extends HttpServlet { private void returnResourceFile(String fileName, String uri, HttpServletResponse response) throws ServletException, IOException { + if (fileName.endsWith(".jpg")) { + byte[] bytes = IOUtils.readByteArrayFromResource(RESOURCE_PATH + fileName); + if (bytes != null) { + response.getOutputStream().write(bytes); + } + + return; + } + String text = IOUtils.readFromResource(RESOURCE_PATH + fileName); if (text == null) { response.sendRedirect(uri + "/index.html"); diff --git a/src/main/java/com/alibaba/druid/util/IOUtils.java b/src/main/java/com/alibaba/druid/util/IOUtils.java index 496a1faa2e..eb5cba6956 100644 --- a/src/main/java/com/alibaba/druid/util/IOUtils.java +++ b/src/main/java/com/alibaba/druid/util/IOUtils.java @@ -15,9 +15,11 @@ */ package com.alibaba.druid.util; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.OutputStream; import java.io.PrintWriter; import java.io.Reader; import java.io.StringWriter; @@ -52,6 +54,37 @@ public class IOUtils { JdbcUtils.close(in); } } + + public static byte[] readByteArrayFromResource(String resource) throws IOException { + InputStream in = null; + try { + in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource); + if (in == null) { + return null; + } + + ByteArrayOutputStream output = new ByteArrayOutputStream(); + copy(in, output); + return output.toByteArray(); + } finally { + JdbcUtils.close(in); + } + } + + public static long copy(InputStream input, OutputStream output) + throws IOException { + final int EOF = -1; + + byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; + + long count = 0; + int n = 0; + while (EOF != (n = input.read(buffer))) { + output.write(buffer, 0, n); + count += n; + } + return count; + } public static String read(Reader reader) { try { diff --git a/src/main/resources/support/http/resources/img/logo.jpg b/src/main/resources/support/http/resources/img/logo.jpg new file mode 100644 index 0000000000..fe2d4e9dbc Binary files /dev/null and b/src/main/resources/support/http/resources/img/logo.jpg differ diff --git a/src/main/resources/support/http/resources/js/common.js b/src/main/resources/support/http/resources/js/common.js index 1fddb51c82..6868de1c3a 100644 --- a/src/main/resources/support/http/resources/js/common.js +++ b/src/main/resources/support/http/resources/js/common.js @@ -41,7 +41,8 @@ druid.common = function () { buildFooter : function() { var html = ''; $(document.body).append(html); diff --git a/src/test/java/com/alibaba/druid/benckmark/pool/Case1.java b/src/test/java/com/alibaba/druid/benckmark/pool/Case1.java index fa851a30c2..d8f5de9a2c 100644 --- a/src/test/java/com/alibaba/druid/benckmark/pool/Case1.java +++ b/src/test/java/com/alibaba/druid/benckmark/pool/Case1.java @@ -45,9 +45,9 @@ public class Case1 extends TestCase { private int maxPoolSize = 50; private int maxActive = 50; private String validationQuery = "SELECT 1"; - private int threadCount = 2; + private int threadCount = 10; private int loopCount = 4; - final int LOOP_COUNT = 1000 * 1000; + final int LOOP_COUNT = 1000 * 100; protected void setUp() throws Exception { jdbcUrl = "jdbc:fake:dragoon_v25masterdb"; @@ -56,7 +56,7 @@ public class Case1 extends TestCase { driverClass = "com.alibaba.druid.mock.MockDriver"; } - public void test_0() throws Exception { + public void f_test_0() throws Exception { DruidDataSource dataSource = new DruidDataSource(); dataSource.setInitialSize(initialSize); @@ -110,6 +110,7 @@ public class Case1 extends TestCase { dataSource.setDriverClass(driverClass); dataSource.setJdbcUrl(jdbcUrl); dataSource.setStatementsCacheSize(100); + dataSource.setServiceOrder("LIFO"); // dataSource.setMaxOpenPreparedStatements(100); dataSource.setUsername(user); dataSource.setPassword(password);