我们的组织有大量代码(C、C++、Java)在 Tandem(不间断)上运行并满足业务需求。这是一个关键任务环境,每秒处理大约 80 到 90 个请求。
我对 Tandem 环境完全陌生,但我从开发代码的人那里了解到,他们的 Java 代码以单线程模式运行。基本上它们会产生多个路径进程,并且每个路径都包含多个 JVM 进程。可以假设在该环境下工作的开发人员的心态是“单线程的”。
我的团队被赋予了这项任务,将这段代码移动到已经运行应用程序的 JBoss(我们知道它是多线程的)下运行,这个想法是最终将来自 Tandem 的 Java 代码合并到我们现有的代码中。
重要的是要知道,由于政治原因,我们已决定执行“提升和转移”作为第一步,稍后将处理此应用程序,将该应用程序合并到现有 JBoss 应用程序下以真正的多线程运行时尚。
我们正在考虑将此代码(它是一个独立的组件)作为无状态会话 bean 与我们现有的应用程序一起运行。现有应用程序不使用任何 EJB 或 Spring/hibernate,并且运行良好。基于 SSLB 的工作方式,我们假设 SLSB 的一个对象在任何给定时间点都会被一个线程访问。然而,令人担忧的是静态变量本质上不是线程安全的。我了解我们的方法并非 100% 正确,需要就可能的解决方法提出建议。
重要的一点是尽快获得代码的所有权并使其以某种方式在生产中工作,然后再处理实际代码的复杂性并慢慢将其与现有应用程序合并。
考虑到限制,是否有更好的方法来处理这种情况?任何设计输入都会有所帮助。