Java 将struts 1.x应用程序迁移到struts 2.5.26

Java 将struts 1.x应用程序迁移到struts 2.5.26,java,struts2,tiles,apache-tiles,Java,Struts2,Tiles,Apache Tiles,由于Struts 1.x中存在安全问题,我们正在将一个旧应用迁移到Struts 2.5.26。在测试时,我注意到tiles在服务器启动时抛出异常 SEVERE: Exception sending context initialized event to listener instance of class org.apache.struts2.tiles.StrutsTilesListener java.lang.AbstractMethodError: org.apache.tiles.st

由于Struts 1.x中存在安全问题,我们正在将一个旧应用迁移到Struts 2.5.26。在测试时,我注意到tiles在服务器启动时抛出异常

SEVERE: Exception sending context initialized event to listener instance of class org.apache.struts2.tiles.StrutsTilesListener
java.lang.AbstractMethodError: org.apache.tiles.startup.AbstractTilesInitializer.createContainerFactory(Lorg/apache/tiles/TilesApplicationContext;)Lorg/apache/tiles/factory/AbstractTilesContainerFactory;
    at org.apache.tiles.startup.AbstractTilesInitializer.createContainer(AbstractTilesInitializer.java:123)
    at org.apache.tiles.startup.AbstractTilesInitializer.initialize(AbstractTilesInitializer.java:70)
    at org.apache.tiles.web.startup.AbstractTilesListener.contextInitialized(AbstractTilesListener.java:62)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Apr 21, 2021 8:21:29 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
我们在web.xml中有以下内容

    <context-param>
        <param-name>tilesDefinitions</param-name>
        <param-value>/WEB-INF/tiles-defs.xml</param-value>
    </context-param>
    
    <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
    </listener>
我看到createContainerFactory()方法在AbstractTileInitializer.java类中是抽象的。不确定为什么不使用StrutStileInitializer.java或其他实现


有什么线索可以解释为什么会发生这种情况吗?

您是如何进行依赖关系管理的?这些不是S2.5.6的正确瓷砖DEP。无关,但从S1移动到S2是为了S1中的安全问题。。。可疑的;根据问题的不同,就地解决安全问题或完全脱离Struts肯定会更划算,因为这基本上是一种重写(除非你真的喜欢S2——我喜欢,但如果我在重写某些东西,我会考虑其他因素)。我们被告知我的管理团队,审计结果发现了安全问题,并要求我们迁移。我看我们应该用瓷砖3。我找不到struts-tiles.tld文件。现在我将其保存在jsp文件中。不再获取上述异常,但当我访问使用平铺的页面时,我会在下面的图片中单独获取异常,因为这本质上是对所有面向客户端的代码的完全重写(如果不适当地绑定到web层,则可能是业务逻辑)。我不反对重写,但为了满足审计时间表而匆忙重写可能会造成比解决问题更多的问题:)新的/单独的问题应该作为单独的问题提出,所有细节都应该在问题中,而不是在评论中:)
-rw-r--r-- 1 ryk6mkj 1049089  21175 Apr 20 15:21 tiles-el-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089 161001 Apr 20 15:22 tiles-core-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089  50740 Apr 20 15:22 tiles-jsp-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089  59739 Apr 20 15:22 tiles-servlet-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089  24466 Apr 20 15:22 tiles-template-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089  35898 Apr 20 15:22 tiles-api-2.2.2.jar
-rw-r--r-- 1 ryk6mkj 1049089  71270 Apr 20 15:36 tiles-request-api-1.0.0.jar
-rw-r--r-- 1 ryk6mkj 1049089  32629 Apr 20 15:54 tiles-portlet-2.2.2.jar