Commit d8608b5c authored by Liang Ding's avatar Liang Ding

🐛 修复数据库连接泄露

parent 60c2350d
...@@ -22,6 +22,7 @@ import org.b3log.latke.ioc.inject.Inject; ...@@ -22,6 +22,7 @@ import org.b3log.latke.ioc.inject.Inject;
import org.b3log.latke.logging.Level; import org.b3log.latke.logging.Level;
import org.b3log.latke.logging.Logger; import org.b3log.latke.logging.Logger;
import org.b3log.latke.model.User; import org.b3log.latke.model.User;
import org.b3log.latke.repository.jdbc.JdbcRepository;
import org.b3log.latke.service.annotation.Service; import org.b3log.latke.service.annotation.Service;
import org.b3log.latke.util.Strings; import org.b3log.latke.util.Strings;
import org.b3log.solo.SoloServletListener; import org.b3log.solo.SoloServletListener;
...@@ -37,7 +38,7 @@ import java.util.*; ...@@ -37,7 +38,7 @@ import java.util.*;
* Import service. * Import service.
* *
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.2, Jul 3, 2017 * @version 1.0.1.0, Aug 31, 2017
* @since 2.2.0 * @since 2.2.0
*/ */
@Service @Service
...@@ -71,72 +72,76 @@ public class ImportService { ...@@ -71,72 +72,76 @@ public class ImportService {
*/ */
public void importMarkdowns() { public void importMarkdowns() {
new Thread(() -> { new Thread(() -> {
final ServletContext servletContext = SoloServletListener.getServletContext();
final String markdownsPath = servletContext.getRealPath("markdowns");
LOGGER.debug("Import directory [" + markdownsPath + "]");
JSONObject admin;
try { try {
admin = userQueryService.getAdmin(); final ServletContext servletContext = SoloServletListener.getServletContext();
} catch (final Exception e) { final String markdownsPath = servletContext.getRealPath("markdowns");
return; LOGGER.debug("Import directory [" + markdownsPath + "]");
}
if (null == admin) { // Not init yet
return;
}
final String adminEmail = admin.optString(User.USER_EMAIL); JSONObject admin;
try {
int succCnt = 0, failCnt = 0; admin = userQueryService.getAdmin();
final Set<String> failSet = new TreeSet<>(); } catch (final Exception e) {
final Collection<File> mds = FileUtils.listFiles(new File(markdownsPath), new String[]{"md"}, true); return;
if (null == mds || mds.isEmpty()) {
return;
}
for (final File md : mds) {
final String fileName = md.getName();
if (StringUtils.equalsIgnoreCase(fileName, "README.md")) {
continue;
} }
try { if (null == admin) { // Not init yet
final String fileContent = FileUtils.readFileToString(md, "UTF-8"); return;
final JSONObject article = parseArticle(fileName, fileContent); }
article.put(Article.ARTICLE_AUTHOR_EMAIL, adminEmail);
final JSONObject request = new JSONObject(); final String adminEmail = admin.optString(User.USER_EMAIL);
request.put(Article.ARTICLE, article);
final String id = articleMgmtService.addArticle(request); int succCnt = 0, failCnt = 0;
FileUtils.moveFile(md, new File(md.getPath() + "." + id)); final Set<String> failSet = new TreeSet<>();
LOGGER.info("Imported article [" + article.optString(Article.ARTICLE_TITLE) + "]"); final Collection<File> mds = FileUtils.listFiles(new File(markdownsPath), new String[]{"md"}, true);
succCnt++; if (null == mds || mds.isEmpty()) {
} catch (final Exception e) { return;
LOGGER.log(Level.ERROR, "Import file [" + fileName + "] failed", e); }
failCnt++; for (final File md : mds) {
failSet.add(fileName); final String fileName = md.getName();
if (StringUtils.equalsIgnoreCase(fileName, "README.md")) {
continue;
}
try {
final String fileContent = FileUtils.readFileToString(md, "UTF-8");
final JSONObject article = parseArticle(fileName, fileContent);
article.put(Article.ARTICLE_AUTHOR_EMAIL, adminEmail);
final JSONObject request = new JSONObject();
request.put(Article.ARTICLE, article);
final String id = articleMgmtService.addArticle(request);
FileUtils.moveFile(md, new File(md.getPath() + "." + id));
LOGGER.info("Imported article [" + article.optString(Article.ARTICLE_TITLE) + "]");
succCnt++;
} catch (final Exception e) {
LOGGER.log(Level.ERROR, "Import file [" + fileName + "] failed", e);
failCnt++;
failSet.add(fileName);
}
} }
}
if (0 == succCnt && 0 == failCnt) { if (0 == succCnt && 0 == failCnt) {
return; return;
} }
final StringBuilder logBuilder = new StringBuilder(); final StringBuilder logBuilder = new StringBuilder();
logBuilder.append("[").append(succCnt).append("] imported, [").append(failCnt).append("] failed"); logBuilder.append("[").append(succCnt).append("] imported, [").append(failCnt).append("] failed");
if (failCnt > 0) { if (failCnt > 0) {
logBuilder.append(": ").append(Strings.LINE_SEPARATOR); logBuilder.append(": ").append(Strings.LINE_SEPARATOR);
for (final String fail : failSet) { for (final String fail : failSet) {
logBuilder.append(" ").append(fail).append(Strings.LINE_SEPARATOR); logBuilder.append(" ").append(fail).append(Strings.LINE_SEPARATOR);
}
} else {
logBuilder.append(" :p");
} }
} else { LOGGER.info(logBuilder.toString());
logBuilder.append(" :p"); } finally {
JdbcRepository.dispose();
} }
LOGGER.info(logBuilder.toString());
}).start(); }).start();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment