如何解决创建连接时出错:致命:剩余的连接插槽保留用于非复制超级用户连接
我的日程安排中有一个SendDaily电子邮件作业,该作业每天8 AM运行,执行此作业时,我遇到了错误
FATAL:剩余的连接插槽保留用于非复制超级用户连接
public class SendDailyEmail implements Job {
private static Logger LOG = Logger.getLogger(SendDailyEmail.class);
public void execute(JobExecutionContext arg0) throws JobExecutionException {
LOG.info("Sending Daily Email ");
Schedulars.date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(Schedulars.date);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
String check = "false";
try {
LOG.info("hour of the day:" + hours);
if (hours == 8) {
if (LoggerInitializer.dailymailflag) {
LoggerInitializer.dailymailflag = false;
LOG.debug("In Send Daily Email Schedular" + LoggerInitializer.dailymailflag);
LOG.debug("Before Execute");
if (LoggerInitializer.sessioncheckfordailyemail != null) {
check = LoggerInitializer.sessioncheckfordailyemail.get("" + hours);
LOG.debug("hashmap " + LoggerInitializer.sessioncheckfordailyemail.containsKey("" + hours));
if (check == null) {
LoggerInitializer.sessioncheckfordailyemail.put("" + hours,"true");
LOG.debug("In Send Daily Email Schedular" + LoggerInitializer.dailymailflag);
UserDaoInterface userDaoInterface = JndiLookup.getUserDAO();
ArrayList<SystemUser> arrUpdateSystemUsers = new ArrayList<SystemUser>();
ArrayList<SystemUser> arraySystemUsers = userDaoInterface
.getAllClientsForDailyEmail("sysadmin");
LOG.debug("size-------------------" + arraySystemUsers.size());
if (arraySystemUsers != null) {
LOG.debug("size-------------------" + arraySystemUsers.size());
for (SystemUser systemUser : arraySystemUsers) {
LOG.info("Client Credits " + systemUser.getCredits());
LOG.info("Client ref " + systemUser.getClientref());
LOG.info("--------------------------------------In Sending Daily email");
if (systemUser.getBillingType().equalsIgnoreCase("Prepaid")) {
ArrayList<SystemUser> clientUsers = userDaoInterface
.getUserByUsermasterID("" + systemUser.getId());
for (SystemUser user : clientUsers) {
LOG.info("System User User Id" + user.getUserid());
LOG.info("System User credits " + user.getCredits());
LOG.info("System User clientref " + user.getClientref());
senddailyEmail(user,systemUser);
user.setDate(new Date());
arrUpdateSystemUsers.add(user);
}
}
}
}
for (SystemUser systemUser : arrUpdateSystemUsers) {
userDaoInterface.mergeUser(systemUser);
}
userDaoInterface = null;
} else {
System.out.println("Mail Already sent");
}
}
}
} else {
if (hours == 9) {
System.out.println("In Send Daily Email Schedular" + LoggerInitializer.dailymailflag);
LoggerInitializer.dailymailflag = true;
LoggerInitializer.sessioncheckfordailyemail.remove("" + "8");
}
}
} catch (Exception e) {
LOG.info(e.getMessage(),e);
} finally {
}
Schedulars.date = null;
}
我的getAllClientsForDailyEmail方法实现
public ArrayList<SystemUser> getAllClientsForDailyEmail(String clientref) {
em = getEm();
Date currentdate = new Date();
ArrayList<SystemUser> systemUsers = null;
try {
Query query = em.createNativeQuery(
"SELECT * FROM \"CLIENT\" WHERE clientref !=:clientref and \"ID\"=CAST(nullif(\"Usermaster\",'') AS INTEGER) and"
+ " \"SendMailDate\" < :currentdate or \"SendMailDate\" is null",SystemUser.class);
query.setParameter("clientref",clientref);
query.setParameter("currentdate",currentdate);
if (query.getResultList().size() > 0)
systemUsers = (ArrayList<SystemUser>) query.getResultList();
} catch (Exception e) {
// TODO Auto-generated catch block
LOG.error(e.getMessage());
} finally {
em.close();
}
return systemUsers;
}
我的getUserByUsermasterID方法实现
public ArrayList<SystemUser> getUserByUsermasterID(String usermasterId) {
em = getEm();
// String userrole="User";
ArrayList<SystemUser> users = null;
try {
String qlString = "SELECT user FROM SystemUser user " + "WHERE user.usermasterId = :usermasterId";
TypedQuery<SystemUser> query = em.createQuery(qlString,SystemUser.class);
query.setParameter("usermasterId",usermasterId);
if (query.getResultList().size() > 0)
users = (ArrayList<SystemUser>) query.getResultList();
} catch (Exception exception) {
LOG.error(exception);
} finally {
em.close();
}
return users;
}
我将同时关闭这两种方法的实体管理器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。