0

有没有办法在 websphere 应用程序服务器运行时更​​改 java 全局变量的值?我在我的 java 应用程序中使用属性文件来指定全局变量的值。但有时我需要在运行时更改变量的值。例如,如果我有一个名为“fileServerLocation”的变量,其值为“C:\Users\test\Downloads”,如果我想将其更改为“C:\Users\test\Desktop”,则为有没有一种方法可以更改变量的值而无需在服务器上重新部署应用程序?

4

3 回答 3

0

我不会尝试了解全局变量的详细信息,但我认为“全局变量”是每个应用程序的全局变量。

我将重点关注应该如何以何种方式进行状态更改的动态更新。
我认为执行此典型管理操作的正确方法是使用 JMX 标准。您必须使用操作公开 MBean,以在运行时动态更新值。使用某种内存屏障,值的更新应该是“线程安全的”。

值的更新将使用某种管理工具(JMX 客户端)执行。

于 2013-08-23T06:41:07.330 回答
0

您可以构建通过 HTTP 请求触发的 Web 服务或 EJB 调用,它所做的只是在运行时更改字段值。您可能需要发出此“管理员请求”以要求执行身份验证(例如用户名/密码)。此外,您可能需要声明此字段volatile,以便在更改后在所有线程中可见。

请注意,每个ClassLoader静态字段(全局变量)都有自己的值。通常所有 EJB 共享相同的类加载器,但每个war模块都有自己的类加载器。

于 2013-08-22T18:05:42.810 回答
0

不要使用“全局变量”。创建一个在运行时向客户端提供值的内部服务,并设计该服务,使其具有可以通过 servlet、消息驱动 bean 和/或其他一些机制在运行时接受更改的接口。此外,让服务允许客户端注册回调(“侦听器”),当特定变量值(或任何变量值)更改时可以通知这些回调。

于 2013-08-22T18:10:15.557 回答