java - 静态变量在 Apache tomcat servlet 实例化中没有得到更新

标签 java apache tomcat servlets static

我是一个 tomcat/servlet 新手,在过去的 3/4 天里一直被困在这个问题上。任何帮助表示赞赏! 我有一个 servlet 类,它有一个静态变量 name_print。静态函数 appInput 接受一个字符串并将 name_print 设置为该字符串。此类 appmonitor.java 的代码如下:

打包AppMonitor_pack;

导入报表...

private static String name_print;
public app_monitor() {
    // TODO Auto-generated constructor stub
}

/**
 * @param args
 */
public static void main(String[] args) {
    // TOsDO Auto-generated method stub

}

public static void appInput (String name){
    name_print = name;
    System.out.println("From appInput " + name_print);
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    PrintWriter writer = resp.getWriter();
    writer.println("<body> "+ name_print +" </body>");
}

我已将这个简单的项目包含在另一个名为 Sockets 的项目中。在那里,我有一个监听套接字,它接收一个名为 name 的字符串。我调用第一个项目的静态函数 appInput 并将接收到的字符串名称传递给它,以便它将 name_print 设置为这个新值。

Socket.java 中与此相关的行是: app_monitor.appInput(名称);

当我编译并运行它时,我看到值名称被设置为某个输入值“abc”。然后调试器进入另一个项目的 appInput 函数,并将 name_print 的值也设置为“abc”。

但是当我刷新运行tomcat服务器的网页时,它不再显示新设置的name_print值,而是继续显示第一次加载appMonitor servlet类时设置的旧值“null”。

我已经尝试找出问题 4 天无果。有什么想法/帮助吗? 谢谢!

最佳答案

WHen I compile and run this, I see that the value name is set to some input value "abc". Then the debugger goes into the appInput function of the other project, and sets the value of name_print to "abc" too.

听起来您正在独立于 Tomcat 运行它。这意味着您不仅拥有两个不同的类加载器——您拥有两个完全独立的 JVM,它们恰好运行在同一台计算机上。静态变量不会在这些进程之间共享。

目前还不清楚您要实现什么目标,但是如果您希望一个进程中的信息在一个单独的进程中可用,则需要使用一些跨进程通信,或者共享一些更全局的东西,而不仅仅是静态变量 - 例如在一个进程中将数据写入文件,然后在另一个进程中从文件中读取数据。

关于java - 静态变量在 Apache tomcat servlet 实例化中没有得到更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048018/

相关文章:

java 和 jboss,带有 SQL 服务器。使用实体管理器在 native 查询中插入多个语句,不起作用;但确实在 sql 中工作

apache - 使用多个 ProxyPass 配置 Apache

java - Apache HTTPClient 抛出 java.net.SocketException : Connection reset for many domains

Grails 应用程序的 apache ajp 配置

使用 f :loadBundle. 时出现 javax.el.PropertyNotFoundException .. 这是否正确实现了规范?

java - 如何在Java中忽略数据类型读取数据流

java - 带有 --jars 的 spark-submit yarn-cluster 不起作用?

django - mod_python 错误 : ImportError: Could not import settings

java - 在 Tomcat docker 容器中启用 JMX

java - 如何使用Java swing备份MySQL数据库中的单个表?