首页 文章

在运行时更改全局变量的值

提问于
浏览
0

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

3 回答

  • 0

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

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

  • 0

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

  • 0

    我不会试图理解全局变量的细节,但我认为“全局变量”是每个Application全局变量 .

    我将重点介绍如何动态更新应该以何种方式执行状态更改 .
    我认为通常管理操作的正确方法是使用JMX标准 . 必须使用操作公开MBean以在运行时动态更新值 . 使用某种内存屏障更新值应为"thread safe" .

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

相关问题