From 369d01dd8ef5596893b99ea36b5ac7fd22d9b935 Mon Sep 17 00:00:00 2001 From: huangyangjun Date: Tue, 13 Nov 2012 23:21:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9loadConfig=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86file://C:\..=E5=BD=A2?= =?UTF-8?q?=E5=BC=8F=E6=9C=AC=E5=9C=B0=E6=96=87=E4=BB=B6=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=8C=E4=BB=A5=E5=8F=8Aclasspath=EF=BC=9A=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E7=9A=84xml=E5=90=8E=E7=BC=80=E7=9A=84=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../druid/filter/config/ConfigFilter.java | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java b/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java index c07216692e..6f54d09769 100644 --- a/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java +++ b/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java @@ -17,8 +17,10 @@ package com.alibaba.druid.filter.config; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.InputStream; import java.net.URL; +import java.net.UnknownHostException; import java.security.PublicKey; import java.sql.SQLException; import java.util.Properties; @@ -231,22 +233,29 @@ public class ConfigFilter extends FilterAdapter { InputStream inStream = null; try { boolean xml = false; - if (filePath.startsWith("http://") || filePath.startsWith("https://") || filePath.startsWith("file://")) { + if (filePath.startsWith("http://") || filePath.startsWith("https://") || filePath.startsWith("file://")) { URL url = new URL(filePath); - inStream = url.openStream(); + try { + inStream = url.openStream(); + xml = url.getPath().endsWith(".xml"); + } catch (UnknownHostException e) { + // 处理本地的文件,格式:file://C:\Users\UserName\AppData\Local\Temp\MyTest6192238555052741793919301884303 + if(url.getHost().length() == 1 && filePath.startsWith("file://")) { + filePath = filePath.substring("file://".length()); + inStream = getFileAsStream(filePath); + xml = filePath.endsWith(".xml"); + } else { + throw new UnknownHostException(e.getMessage()); + } + } - xml = url.getPath().endsWith(".xml"); } else if (filePath.startsWith("classpath:")) { String resourcePath = filePath.substring("classpath:".length()); inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourcePath); + // 在classpath下应该也可以配置xml文件吧? + xml = resourcePath.endsWith(".xml"); } else { - File file = new File(filePath); - if (file.exists()) { - inStream = new FileInputStream(file); - } else { - inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath); - } - + inStream = getFileAsStream(filePath); xml = filePath.endsWith(".xml"); } @@ -269,4 +278,15 @@ public class ConfigFilter extends FilterAdapter { JdbcUtils.close(inStream); } } + + private InputStream getFileAsStream(String filePath) throws FileNotFoundException { + InputStream inStream = null; + File file = new File(filePath); + if (file.exists()) { + inStream = new FileInputStream(file); + } else { + inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath); + } + return inStream; + } }