创建连接时出错:致命:剩余的连接插槽保留用于非复制超级用户连接

问题描述

我的日程安排中有一个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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...