11 configuration properties glassfish java-ee
我正在尝试编写一些简单的Java Web服务,以便我们可以从.NET调用Java代码.到目前为止,我在Glassfish下有一个概念验证工作.当IDE完成所有工作时非常简单.
现在,我真的陷入了Java 应该非常简单的事情.例如,我想要外化我的配置,这样我就可以更改连接字符串/用户名/应用程序变量/等内容,而无需重新编译.
在.NET中,您只需在网站根目录中的web.config文件中添加一些字符串,然后使用: ConfigurationManager.AppSettings["whateverIwant"];
我可以让java.util.Properties做我想要的(来自独立客户端),但我无法弄清楚.properties文件的放置位置以及如何从Web服务中获取它的路径.
我也需要我的方法在WebSphere Application Server中工作.谢谢!
正如其他人所提到的,它在很大程度上取决于容器,但几乎总是动态配置存储在数据库中而不是XML或.properties文件中.
我认为这就像一个概念证明,这是一个快速而肮脏的解决方案:(不要为生产代码执行此操作)使用系统属性.缺点:每次更改都需要重启容器,但不需要重新编译应用程序.
要在Glassfish中使用系统属性,您可以转到"配置 - >系统属性"部分并在其中添加属性.然后从您的应用程序内部调用
String myValue = System.getProperty("myProperty");
Run Code Online (Sandbox Code Playgroud)
获得价值.所有Java应用程序都支持这些属性,但我不知道如何在Websphere中配置它们.
唉,Java EE在应用程序配置方面有一个巨大的漏洞.
你最好的选择是:
使用JNDI在应用程序服务器环境中存储配置.对于用户来说,进行任何配置都很难做到便携,痛苦和绝对的噩梦.配置UI取决于正在使用的应用服务器和版本,可能是特定于该应用服务器的命令行实用程序.
使用Preferences API存储您的配置,并生成您自己的UI以进行编辑.这没关系...除了您无法控制何时刷新和重新设置您的设置.某些应用服务器会在您重新部署应用时执行此操作,这可能是您不想要的.
总而言之,情况绝对臭.应用服务器没有干净,明智的方式为应用提供简单的属性映射和UI,以便使用应用服务器的管理工具对其进行编辑.
我尝试使用Web上下文参数来解决这个问题,但发现它们也是错误的.Glassfish忽略的不仅仅是正在设置的第一个Web上下文参数,如果没有servlet上下文,它们很难访问,因此您无法在整个应用程序中轻松访问它们.
如果有人有更好的答案,我很乐意听到它,因为现在的情况对于经过几次重大迭代的规范来说似乎是非常惊人的.
另请参阅:存储和编辑Java EE应用程序的配置
小智 3
不幸的是,应用程序配置依赖于容器。通常,您通过 JNDI 访问您的配置。我最近使用的方法如下:
@实体
公共课设置{
@ID
私有字符串名称;
私有字符串值;
...
}
那么就是做的问题了em.find(Setting.class, "whateveriwant").getValue()。或者,您可以创建一个实体 bean,并将所有设置作为属性。无论哪种方式,这种方法都会将容器依赖性降至最低。
| 归档时间: |
|
| 查看次数: |
8721 次 |
| 最近记录: |