有时需要写属性文件,保存配置值,当然也可以写在数据库。这里我们用文件方式。

最简单做法:

写在wildfly的配置目录里面:

   File confDir = new File(System.getProperty("jboss.server.config.dir"));
logger.info("jboss.server.config.dir:" + confDir);
fileProp = new File(confDir, "stats.properties");
package com.italktv.colnv.stat.task;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.logging.Logger; import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.ScheduleExpression;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerConfig;
import javax.ejb.TimerService;
import javax.inject.Inject; @Singleton
@Startup
public class CustomTimerService { @Inject
private Logger logger; @Resource
private TimerService timerService; @Inject
private JobStarter job; File fileProp;
Properties prop; @PostConstruct
public void initTimer() {
File confDir = new File(System.getProperty("jboss.server.config.dir"));
logger.info("jboss.server.config.dir:" + confDir);
fileProp = new File(confDir, "stats.properties");
prop = read();
setTimber(prop.getProperty("hour", "6"), prop.getProperty("minute", "0"), prop.getProperty("second", "0"));
} public boolean setTimber(String hour, String minute, String second) {
boolean suc = true;
hour = hour.trim();
minute = minute.trim();
if (minute.equals("*") && hour.equals("*"))
return false; if (timerService.getTimers() != null) {
for (Timer timer : timerService.getTimers()) { logger.info("Cancel timer:" + timer.getInfo().toString() + timer.getSchedule().toString());
timer.cancel();
}
}
try {
timerService.createCalendarTimer(new ScheduleExpression().hour(hour).minute(minute).second(second), new TimerConfig("定时统计任务",
false));
} catch (Exception e) {
e.printStackTrace();
suc = false;
}
if (suc) {
save(hour, minute, second);
}
return suc;
} private void cancelTimers() {
for (Timer timer : timerService.getTimers()) {
// timer.cancel();
}
} public String getTimerInfo() {
StringBuffer sb = new StringBuffer();
if (timerService.getTimers() != null) {
for (Timer timer : timerService.getTimers()) {
sb.append("任务每天执行时间:");
sb.append(timer.getSchedule().getHour() + "点" + timer.getSchedule().getMinute() + "分");
}
}
return sb.toString();
} private void save(String hour, String minute, String second) {
prop.setProperty("hour", hour);
prop.setProperty("minute", minute);
prop.setProperty("second", second); try {
FileWriter f = new FileWriter(fileProp);
prop.store(f, prop.toString());
f.close();
} catch (IOException e) {
e.printStackTrace();
}
} private Properties read() { InputStream in = null;
Properties properties = new Properties();
if (fileProp.exists()) {
try {
in = new FileInputStream(fileProp);
properties.load(in);
logger.info("properties:" + properties.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
in.close();
} catch (Exception ignored) {
}
}
} else {
logger.info("not exist:" + fileProp.getAbsolutePath());
}
return properties;
} @Timeout
public void timeout(Timer timer) {
logger.info("=== job " + " started ====");
String id = job.start();
logger.info("=== job id: " + id);
} }

用cdi的复杂做法:

http://piotrnowicki.com/2012/06/inject-java-properties-in-java-ee-using-cdi/

https://blog.jyore.com/2013/05/jboss-eap6as7wildfly-how-to-use-properties-files-outside-your-archive/

wildfly 在 jee war 外部写配置文件的更多相关文章

  1. JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件

    http://www.tuicool.com/articles/M7ZR3y 原文 http://blog.csdn.net/kylinsoong/article/details/12623997 主 ...

  2. Spring使用外部的配置文件

    在使用Spring做web项目的时候,通常会使用到数据库的连接信息 jdbcUrl driverClass username password 那么应该如何使用这些属性呢? 如在Spring中使用数据 ...

  3. Maven将依赖包、jar/war包及配置文件输出到指定目录

    使用Maven插件将依赖包 jar包 war包及配置文件输出到指定目录 写在前面 ​ 最近遇到一个朋友遇到一个项目需要将 maven 的依赖包和配置文件分开打包然后用脚本执行程序.这样的好处在于可以随 ...

  4. vue-cli3.0读取外部化配置文件来修改公共路径

    之前我写过一篇通过nginx配置代理转发的博客,正常来说也是正确的,但不足之处在了甲方还用了F5负载均衡和gateway来代理转发.所以之前我认为的请求->nginx转发代理->后端服务, ...

  5. $Django importlib与dir知识,手写配置文件, 配置查找顺序 drf分页器&drf版本控制

    1  importlib与dir知识 # importlib简介动态导入字符串模块 # 常规导入 from ss.aa import b from ss import a print(b,type(b ...

  6. jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法

    jar包读取jar包内部和外部的配置文件,springboot读取外部配置文件的方法 用系统属性System.getProperty("user.dir")获得执行命令的目录(网上 ...

  7. PHP正则配合写配置文件导致Getshell

    PHP正则配合写配置文件导致Getshell,偶然间看到的一个题目, p 牛的小密圈的一个问题. 分析一下,漏洞代码: index.php <?php $str=addslashes($_GET ...

  8. Maven War包 POM配置文件

    如何为你的Web程序(war包设定配置文件) 约定 http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering ...

  9. 【Java Web开发学习】Spring加载外部properties配置文件

    [Java Web开发学习]Spring加载外部properties配置文件 转载:https://www.cnblogs.com/yangchongxing/p/9136505.html 1.声明属 ...

随机推荐

  1. JS之获取属性总结

    嗨,我是沐晴,今天来说说JS中关于获取属性的一些方法和区别.闲话不说,来正题. 首先什么是属性呢,比如input标签,标签中的value id type style等,这些就是属性.我们JS获取属性一 ...

  2. 常用hadoop web

    http://localhost:50070 Hadoop服务 http://localhost:8088/ 集群中的所有应用程序 http://localhost:16010 hbase

  3. 前端Mvvm QC 上传了测试版

    QC是一个前端MVVM框架,适合用来构建复杂的业务逻辑 项目地址:https://github.com/time-go/qc 技术支持QQ群:330603020 QC特点: 1.良好的浏览器兼容性(兼 ...

  4. .Net分布式异常报警系统-服务端站点管理

    管理站点 对于管理站点, 并没有太复杂的内容, 主要就是对数据库表中的数据进行维护.  管理的实体有3个 WebSite(站点信息), WebService(站点服务器信息), ErrorEntity ...

  5. 如何快速从一个Storage Account拷贝到另一个账号

    当您有两个Storage Account的时候,怎样快速做到从一个账号拷贝到另一个账号呢.当拷贝的文件比较,例如100多G(VHD文件). http://code.msdn.microsoft.com ...

  6. JAVA多线程(二)

    Synchronized的使用: (一)synchronized:  Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 当某个方法或者代 ...

  7. splay HYSBZ1588

    n天 n个营业额; sum(min(abs(wi-前面))); splay维护一下就可以 #include<stdio.h> #include<algorithm> #incl ...

  8. CSS3动画属性之Animation

    首先定义一个动画规则: @keyframes mymove { from {top:0px;} to {top:200px;} } @-moz-keyframes mymove /* Firefox ...

  9. nodejs-helloword案例

    确认正确看着了node 本例处理环境win10 创建文件helloword.js.如下图:存放位置 具体内容详细 var http = require('http'); http.createServ ...

  10. 如何生成HTMLTestRunner报告

    今天,学习了如何生成HTMLTestRunner测试报告. 接上篇文章,对于unittest框架,运行后,测试结果不便于查看,同时多个case存在的时候,可能会导致case result记录不正确的情 ...