java如何将propertyfile与GlassFish一起使用
我正在创建一个web服务,它在GlassFish中运行,我希望有一些自定义属性。为此,我使用了Properties
类。我使用的代码是:
Properties p=new Properties();
File f=new File(System.getProperty("user.dir"), "settings.properties");
p.load(new FileInputStream(f));
但是如何在我的配置目录中获取settings.properties
-文件呢
我不确定我的类路径,因为它是由NetBeans和GlassFish管理的。我假设我的.war
-文件在部署时被添加到类路径中
我已经添加了我自己的解决方案,但如果有人能提出更好的解决方案,那将是非常受欢迎的
# 1 楼答案
我尝试了很多,但我用以下方法解决了这个问题:
我必须通过调用
getServletContext()getServletContext()
从jsp页面传递ServletContext。不太理想,但这是我唯一能让它工作的方法不过,如果有人能想出另一个解决方案,那就太好了,可以在
ServletContext
中使用# 2 楼答案
有关如何从类路径读取属性文件的信息,请参见here:
然后只需要将配置目录添加到类路径中
如果您在使用上述代码时遇到问题,请尝试ServletContext.getResource
# 3 楼答案
有效的解决方案实际上非常简单:
为什么没有人带着这个来
# 4 楼答案
备选方案:
根据域的配置方式,您可能可以从命令行使用
asadmin create-system-properties
。有关详细信息,请运行/查看asadmin create-system-properties --help
或者,您可能希望通过Glassfish管理界面管理系统属性。这里是默认链接:http://localhost:4848/configuration/systemProperties.jsf?configName=server-config
# 5 楼答案
+1用于将其放在类路径中
如果您正在使用Spring(我强烈建议您这样做,如果您还没有使用Spring,原因很多),那么您可以加载如下属性文件:
并在应用程序上下文中放置引用,如:
(假设您已配置属性配置器),如果无法加载文件或属性不存在,则会导致错误。应用程序将无法启动。这其实是一件好事。它能让你很快发现问题,而且比默默失败要好得多,因为默默失败有时会带来灾难性的后果
# 6 楼答案
将属性文件放在中<;glassfish安装目录>/玻璃鱼/域/<;域名>/lib/classes目录,可以通过ResourceBundle类从应用程序中访问它们。例如,添加名为设置的属性文件。属性访问此目录,然后访问文件中的值,如下所示: