JDK1.6下 ResourceBundle 本身提供了 ResourceBundle.clearCache(); 方法,在eclipse
下正常测试都是可以正常刷新到修改后资源文件的值,不过当部署到tomcat下后,ResourceBundle.clearCache();这个方法,
看起来就不起作用了。
经过一翻调试,终于可以了,贴上代码:
private static ResourceBundle resourceBundle;
private static long lastUpdateTime = 0l;
private static final Logger LOGGER = Logger.getLogger(ResourceBundleService.class);
private ResourceBundleService() {
}
/**
* 载入 ResourceBundle
*/
public static void loadResourceBundle() {
try {
// 这个是必须的
ResourceBundle.clearCache();
//产生ResourceBundle对象时,
//重写ResourceBundle.Control 的newBundle方法,
//将reload标识位置为true
resourceBundle = ResourceBundle.getBundle("resource", new Locale(GameConfig.locale.substring(0, 2),
GameConfig.locale.substring(3, 5)), new ResourceBundle.Control() {
public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader,
boolean reload) throws IllegalAccessException, InstantiationException, IOException {
// 将reload标识位置为true
return super.newBundle(baseName, locale, format, loader, true);
}
});
lastUpdateTime = System.currentTimeMillis();
} catch (MissingResourceException e) {
LOGGER.error("There is no " + GameConfig.locale + " resource file found!!");
}
}
/**
* 资源文件有改动时才会重新载入 ResourceBundle
*/
public static void reloadResourceBundle() {
final String absPath = Thread.currentThread().getContextClassLoader().getResource("").getPath().replaceAll(
"%20", " ");
final StringBuffer resourceFullName = new StringBuffer(512);
resourceFullName.append(absPath);
resourceFullName.append("resource_");
resourceFullName.append(GameConfig.locale);
resourceFullName.append(".properties");
final File resFile = new File(resourceFullName.toString());
if (resFile.exists()) {
if (resFile.lastModified() > lastUpdateTime) {
System.out.println(("lastUpdateTime==" + lastUpdateTime + " Curr lastModified:" + resFile
.lastModified()));
ResourceBundleService.loadResourceBundle();
}
} else {
LOGGER.error("resorce file not found :" + resourceFullName.toString());
}
}
主要做了两个事:
1.调用了ResourceBundle.clearCache();
2.产生ResourceBundle对象时, 重写ResourceBundle.Control 的newBundle方法,
将reload标识位置为true
定时检测到资源文件,有改动时重生成ResourceBundle实例,就可以获取到最新的资源文件值。
分享到:
相关推荐
然而,对于JDK 1.6,虽然在Tomcat 8.5的早期版本中可能可以运行,但随着Java新特性的引入,Tomcat的后续版本可能会逐渐弃用对较旧JDK的支持,因此不建议在生产环境中使用JDK 1.6搭配Tomcat 8.5.20。 在实际运维中,...
在JDK 1.6中,重点改进包括: 1. **增强的Swing组件**:JDK 1.6对Swing库进行了大量更新,提升了GUI应用程序的性能和用户体验。例如,添加了新的LookAndFeel和组件,使得桌面应用更美观。 2. **改进的内存管理**:...
mac for jdk1.6 jdk6 安装版 里面有两个jdk1.6的安装包,都可以用 如果电脑上安装有1.7,1.8等高版本jdk就不要再下安装包了,安装包安装会报错 命令是这个:brew install java6或 brew install homebrew/cask-...
【描述】"压缩包中是Tomcat7, 正常, 可用, 需要JDK1.6版本" 提供了更具体的信息,即提供的文件是一个包含Tomcat7的压缩包,该服务器环境已经配置完成,可以正常启动和使用。然而,重要的是要理解,为了使这个Tomcat...
标题“jdk1.6+tomcat7.0.90”指的是这个压缩包包含了Java Development Kit(JDK)的1.6版本和Apache Tomcat服务器的7.0.90版本,这两个组件都是IT领域中非常重要的软件工具,主要用于开发和部署Java应用程序。...
标题中的“jdk1.6集成jjwt的问题”指的是在Java Development Kit (JDK) 版本1.6的环境下,尝试整合JSON Web Token (JWT) 库jjwt时遇到的挑战。JWT是一种开放标准(RFC 7519),用于在各方之间安全地传输信息作为 ...
- **下载**:从Oracle官网或其他可信源下载JDK 1.6的安装文件,如"jdk1.6.exe"。 - **安装**:双击执行安装文件,按照向导步骤进行安装,选择合适的安装路径。 - **环境变量设置**:安装完成后,需要在系统环境变量...
这个Demo项目展示了如何在较旧的环境,如JDK 1.6和Tomcat 6上运行SpringBoot 1.5.6的Web程序。尽管SpringBoot通常建议使用更新的Java版本和内置的Tomcat服务器,但有时由于兼容性或遗留系统的需求,可能需要在较低...
总的来说,JDK 1.6在提升开发效率、运行性能以及安全性等方面都有显著的进步,是Java发展历程中不可或缺的一环。对于那些需要在旧系统上运行或兼容JDK 1.6的应用来说,了解并掌握这个版本的特性至关重要。
Java开发工具包(JDK)1.6 64位和Tomcat 6.0.45 64位是两个关键组件,用于在Windows x64操作系统上构建和部署Java应用程序,特别是Web应用程序。以下是关于这两个组件及其相关知识点的详细说明: 1. **Java ...
1.okhttp3.8源码使用jdk1.6重新编译,已集成了okio,在javaweb项目中使用,未在安卓项目中使用 2.okhttp3.8源码使用jdk1.6重新编译_okhttp3.8.0-jdk1.6.jar
在压缩包文件名称列表中只列出了一个文件名"jdk1.6",这可能是整个JDK1.6的压缩文件。解压后,用户通常会找到以下目录结构: - bin:包含可执行文件,如javac、java等。 - lib:包含JDK的类库和资源文件。 - doc:...
aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-15.8.0-jdk1.6aspose-words-...
综上所述,JDK1.6虽然已经不是最新版本,但在某些应用场景下仍然具有一定的实用价值。了解其主要特性以及如何安全地下载和安装,对于开发者来说都是非常重要的。同时,在分享和下载资源时也要注意遵守相关规定,确保...
标题“tomcat+jdk 1.6”暗示了我们正在讨论的是使用Java开发环境,具体是JDK 1.6版本以及Tomcat 6应用服务器的集成与配置。这两个组件在早期的Java Web应用程序开发中非常常见。让我们深入探讨一下它们各自的功能、...
在Windows环境下使用JDK1.6,你需要设置环境变量,主要包括`JAVA_HOME`指向JDK的安装目录,以及`PATH`添加%JAVA_HOME%\bin,确保系统可以找到JDK的可执行文件。 JDK1.6相对于更早的版本,引入了一些新特性,如: -...
6. **NIO.2**:Java 7之前,Java的非阻塞I/O特性在NIO(New I/O)包中,而在JDK1.6中,虽然没有完整的NIO.2,但已经开始引入了一些新特性,如FileChannel的transferTo和transferFrom方法,用于提高文件传输效率。...
使用OkHttp3.8.0-jdk1.6.jar,开发者可以在JDK1.6的环境下享受到高效且稳定的网络请求服务。同时,结合json-20160810.jar,可以实现数据的快速转换,进一步提升项目的开发效率。对于那些需要在老版本Java环境中工作...
这个特定的更新主要集中在错误修复和安全补丁上,确保开发者在使用JDK 1.6时,能避免已知的安全风险,同时提高系统的稳定性。这些更新可能包括对Java插件、Java运行时环境、Javadoc工具、Java编译器等各个组件的改进...
然而,在某些特殊情况下,如旧项目维护或与特定版本的软件兼容性需求,仍然可能需要使用JDK 1.6。 总的来说,这个JDK 1.6 32位免安装纯绿色版是一个便捷的开发工具,适用于那些需要快速部署Java环境或者仍在维护...