Java 是否有任何本机机制可以覆盖现有部署的Struts2应用程序中的类?

Java 是否有任何本机机制可以覆盖现有部署的Struts2应用程序中的类?,java,jakarta-ee,struts2,Java,Jakarta Ee,Struts2,具体来说,如果我们在应用服务器中部署了一个原始的.war文件,那么可以部署一个.war文件,它在原始文件中提供不同的类实现,而不必修改基本代码来支持它吗 编辑。我把这个问题表述错了,其实我觉得更简单。我们希望在同一条基本路径上揭露两次不同战争的行动,而不是每一次战争都有不同的路径。这可以在容器配置级别完成吗?或者您建议采用URL重写之类的方法吗?不容易。通常,已部署的WAR会成为JavaEE服务器中的一个离散webapp,并获得自己的类加载器。您的第二次部署将获得另一个类加载器,尽管它们肯定有一

具体来说,如果我们在应用服务器中部署了一个原始的.war文件,那么可以部署一个.war文件,它在原始文件中提供不同的类实现,而不必修改基本代码来支持它吗


编辑。我把这个问题表述错了,其实我觉得更简单。我们希望在同一条基本路径上揭露两次不同战争的行动,而不是每一次战争都有不同的路径。这可以在容器配置级别完成吗?或者您建议采用URL重写之类的方法吗?

不容易。通常,已部署的WAR会成为JavaEE服务器中的一个离散webapp,并获得自己的类加载器。您的第二次部署将获得另一个类加载器,尽管它们肯定有一些共同的祖先,但不可能从另一场战争中重新实现—您的第二次部署将无法“看到”它,因为类加载器是链接在一起的

可以使用重写来重写正在运行的类,尽管这并不重要。您可以转换(重写传入的)类,并且应该能够重写活动(实例化的)类,尽管问题是堆上可能有使用新旧代码的对象

类重写是Eclipse的工作方式,也是重新部署解决方案发挥作用的速度


如果你真的想这样做的话,你也许可以使用这样一个系统——但听起来你是在试图解决一个构建或部署问题,而不是一个AOP更适合解决的问题

war是一个完整的web应用程序,它不是在运行的应用程序上分层的一组增量类。你能重新部署war吗?你唯一的要求是不修改原始的“基本代码”吗?我相信是的。(我没有访问该项目的权限,我只是在调查实际开发团队可能采用的方法)