0

我在 Glassfish 中有一个关于处理设置 Web 应用程序的属性的问题我们正在从使用 Jetty 转移到在 Amazon AWS 上使用 GlassFish 设置集群环境

按照惯例,在处理 Servlet 时,当您想要解析环境变量时,您应该使用 .properties 文件,但是当您使用分布式环境时,这会导致问题(您必须将 .properties 文件放置在每个集群节点中)。GlassFish 能够通过其管理控制台配置 W​​eb 容器的属性,这意味着这些属性将通过集群自动分发

问题是,我在检索变量时遇到了随机行为。第一次运行测试应用程序时,我无法检索变量,但是它不再起作用

基本上我是通过管理 UI 设置环境变量。在 Configurations 下有 3 个配置项,一个用于集群(通常命名为 .config),一个 default-config 和一个 server-config。在 Web Container 下,我在所有 3 个名为“someVal”的文件中都放置了一个测试属性。

然后,我在 Scala(使用 Servlet 2.5)中创建了一个快速的 Scalatra 应用程序,并使用这一行来尝试获取属性

getServletContext.getInitParameter("someVal")

任何想法我做错了什么,它总是返回null?

更新 看来我试图做的不是“正确”的做事方式。所以我的问题是,在处理 GlassFish 中的集群时,提供特定应用程序设置(在 .war 之外和运行时之外)的标准方法是什么。myfear 表示使用数据库是标准方法,但是我使用这些配置设置本身来定义 JDBC 连接

4

1 回答 1

0

我知道了。您指的是 Web 容器设置 http://docs.oracle.com/cd/E18930_01/html/821-2431/abedw.html

恐怕这从未被认为是提供特定于应用程序的配置,我坚信您将永远无法从 servlet 上下文访问这些属性。因此,如果您谈论的是应用程序特定信息,您可以(应该)使用 web.xml 中的 servlet init 参数。如果你使用

getServletContext().setInitParameter("param", "value");

您也许可以设置它们(至少在应用程序的运行时)。我不确定这里的集群复制。正常的方法是让您在数据库中进行配置设置。

于 2012-07-12T06:11:33.753 回答