Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何只加载一次属性文件?_Java - Fatal编程技术网

Java 如何只加载一次属性文件?

Java 如何只加载一次属性文件?,java,Java,我正在通过从属性文件获取数据来读取电子邮件。我正在使用计时器计划在一段时间后以固定间隔读取新邮件。我如何才能做到这一点 TimerSchedule.java public class TimeScheduler { public static void main(String[] args) { Timer timer = new Timer(); GmailConfiguration gmailConfiguration = new GmailC

我正在通过从属性文件获取数据来读取电子邮件。我正在使用计时器计划在一段时间后以固定间隔读取新邮件。我如何才能做到这一点

TimerSchedule.java

public class TimeScheduler
{
    public static void main(String[] args)
    {
        Timer timer = new Timer();
        GmailConfiguration gmailConfiguration = new GmailConfiguration();
        TimerTask timerTask = new TimerTask()
        {
            @Override
            public void run()
            {
                gmailConfiguration.configure();
            }
        };
        timer.scheduleAtFixedRate(timerTask, 500, 30000);
    }
}
我正在从GmailConfiguration.java中的属性文件获取数据

public class GmailConfiguration
{
    private static final Logger LOGGER = LoggerFactory.getLogger(GmailConfiguration.class);

    public void configure()
    {
        JSONParser parser = new JSONParser();
        try
        {
            String propertyFileName = "emailServer.properties";
            InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propertyFileName);

            JSONObject jsonObject = (JSONObject) parser.parse(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
            JSONArray jadata = (JSONArray) jsonObject.get("Servers");
            int len = jadata.size();
            AccessMailMessages readGmail = new AccessMailMessages();
            JSONObject server;
            String name;
            String host;
            String username;
            String password;
            int port;
            String folderName;
            for (int i = 0; i < len; i++)
            {
                server = (JSONObject) jadata.get(i);
                name = (String) server.get("Name");
                host = (String) server.get("Host");
                username = (String) server.get("UserName");
                password = (String) server.get("Password");
                port = ((Long) server.get("Port")).intValue();
                folderName = (String) server.get("FolderName");

                readGmail.recieveGmail(name, host, port, username, password, folderName);
            }

        }
        catch (Exception e)
        {
            LOGGER.error("Exception", e);
        }
    }

}
这是我的GmailConfiguration.java

public class GmailConfiguration
{
    private static final Logger LOGGER = LoggerFactory.getLogger(GmailConfiguration.class);

    public void configure()
    {
        JSONParser parser = new JSONParser();
        try
        {
            String propertyFileName = "emailServer.properties";
            InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propertyFileName);

            JSONObject jsonObject = (JSONObject) parser.parse(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
            JSONArray jadata = (JSONArray) jsonObject.get("Servers");
            int len = jadata.size();
            AccessMailMessages readGmail = new AccessMailMessages();
            JSONObject server;
            String name;
            String host;
            String username;
            String password;
            int port;
            String folderName;
            for (int i = 0; i < len; i++)
            {
                server = (JSONObject) jadata.get(i);
                name = (String) server.get("Name");
                host = (String) server.get("Host");
                username = (String) server.get("UserName");
                password = (String) server.get("Password");
                port = ((Long) server.get("Port")).intValue();
                folderName = (String) server.get("FolderName");

                readGmail.recieveGmail(name, host, port, username, password, folderName);
            }

        }
        catch (Exception e)
        {
            LOGGER.error("Exception", e);
        }
    }

}
公共类Gmail配置
{
私有静态最终记录器Logger=LoggerFactory.getLogger(GmailConfiguration.class);
public void configure()
{
JSONParser=新的JSONParser();
尝试
{
String propertyFileName=“emailServer.properties”;
InputStream InputStream=getClass().getClassLoader().getResourceAsStream(propertyFileName);
JSONObject JSONObject=(JSONObject)parser.parse(新的InputStreamReader(inputStream,StandardCharsets.UTF_8));
JSONArray jadata=(JSONArray)jsonObject.get(“服务器”);
int len=jadata.size();
AccessMailMessages readGmail=新建AccessMailMessages();
JSONObject服务器;
字符串名;
字符串主机;
字符串用户名;
字符串密码;
国际港口;
字符串folderName;
对于(int i=0;i
配置
类与
电子邮件接收器
类分开:

//使用“单例”模式
类Gmail配置{
私有静态最终Gmail配置实例=新Gmail配置();
布尔配置;
字符串主机;
字符串端口;
//等等。
public void configure(){
如果(!已配置){
//读取属性,填充主机/端口等。
isConfigured=true;
}
//第二次调用时,不会进行读取
}
}
然后,关于接收电子邮件:

class-GmailReceiver{
公共接收(){
AccessMailMessages readGmail=新建AccessMailMessages();
GmailConfiguration config=GmailConfiguration.INSTANCE;
config.configure();
readGmail.ReceiveGmail(config.getName(),
config.getHost(),
config.getPort()/*etc*/);
}
}

并确保只安排
GmailReceiver
配置
类与
电子邮件接收器
类分开:

//使用“单例”模式
类Gmail配置{
私有静态最终Gmail配置实例=新Gmail配置();
布尔配置;
字符串主机;
字符串端口;
//等等。
public void configure(){
如果(!已配置){
//读取属性,填充主机/端口等。
isConfigured=true;
}
//第二次调用时,不会进行读取
}
}
然后,关于接收电子邮件:

class-GmailReceiver{
公共接收(){
AccessMailMessages readGmail=新建AccessMailMessages();
GmailConfiguration config=GmailConfiguration.INSTANCE;
config.configure();
readGmail.ReceiveGmail(config.getName(),
config.getHost(),
config.getPort()/*etc*/);
}
}

确保只安排
GmailReceiver

我不知道你在问什么。你想做一些“只做一次”的事情,然后谈论一个按计划执行的计时器任务。对不起,伙计,但我想问一下,程序什么时候第一次执行,然后只从属性文件加载数据,然后重用相同加载的数据。程序的运行方式是在固定的间隔时间后一次又一次地执行。我不知道你在问什么。你想做一些“只做一次”的事情,然后谈论一个按计划执行的计时器任务。对不起,伙计,但我想问一下,程序什么时候第一次执行,然后只从属性文件加载数据,然后重用相同加载的数据。程序的运行方式是在固定的间隔时间后一次又一次地执行。