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

最简单做法:

写在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. Web Worker 是什么鬼?

    前言 前端工程师们一定有过这样的体验,当一个页面加载了大量的 js 文件时,用户界面可能会短暂地"冻结".这很好理解,因为 js 是单线程的语言.我们再走的极端点,一段 js 中出 ...

  2. Groovy与Gradle在Android中的应用

    大家都知道, Android Studio 的编译构建,是基于Gradle的, 而Gradle又是基于Groovy, Groovy又是基于Java的 Android Studio 的gradle 本身 ...

  3. Resharper快捷键

    建议你使用 Reshaper 的快捷键,不要担心 Reshaper 会把你原来的快捷键设置给覆盖了,因为如果某个快捷键和 VS 是冲突的,Reshaper会让你自己选择需要使用 VS 还是 Resha ...

  4. javascript面试题(一)

    答案和解析在问题下一行,为白色字体 单选题 1.以下哪条语句会产生运行错误:(a) A.var obj = ();//语法错误 B.var obj = [];//创建数组 C.var obj = {} ...

  5. import random 模块导入

    import random print(random.random()) #浮点数值 print(random.randint(1,2))#循环显示1,2 print(random.randrange ...

  6. springMVC之AOP

    AOP(Aspect-Oriented Programming,面向切面编程) 切面(Aepect):横切关注点(跨越应用程序多个模块的功能)被模块化的对象: 通知(Advice):切面必须要完成的工 ...

  7. 哈希 poj 1480

    计算可能的数目 a3*x3^3+a4*x4^3+a5*x5^5=-(a1*x1^3+a2*x2^3); 列举右边的  结果存到数组  z[i] 和为i的右边等式的数目 如果和小于0  +2500000 ...

  8. 区间DP HDU 2476

    两个字符串s1,s2 从s1->s2 最少刷几次 刷 i->j 都变成一样的+1 #include<stdio.h> #include<string.h> usin ...

  9. Oracle数据库下sde用户系统表开放权限sql语句

    --sde用户登陆执行以下语句 grant insert, update, delete on sde.table_registry to PUBLIC; grant insert, update, ...

  10. jquery-遍历each

    使用案例一 $.ajax({ url : webPath + "/clickCount", type : "POST", dataType : "js ...