В настоящее время у меня есть одно веб-приложение, созданное на основе Struts 2.1.6 + Spring 3 + Hibernate 3 + JAVA 6 и работающее на Tomcat 6 / JBoss 5 . Это очень старое приложение с ant build , но теперь у нас есть требование обновить его до JAVA 8 и EAP 7 и Tomcat 9 сервер.
Я сделал следующие шаги, но мне нужно больше переделок, чтобы сделать его работоспособным
- Сначала обновлено
JAVA 6 to 8
- затем не удалось создать экземпляр для пружинных зависимостей
- Затем обновил
Spring 3.x to latest 5.1.7.RELEASE
- теперь шаблон гибернации и все вышло из строя из-за изменений, таких как *.hibernate5.*
изменения пакета и все - сделал некоторые изменения кода, чтобы исправить это
- Модернизировано
Hibernate 3.x to 5.4.2.Final
- добавлены некоторые изменения, устаревшие коды
- Модернизирован
struts2-spring-plugin-2.1.6 to struts2-spring-plugin-2.5.20
для поддержки новой весенней версии
- Сейчас во время публикации в Tomcat 9 , com.opensymphony.xwork2.util.classloader. * Показан отсутствующим. Итак, я обновил
xwork-core 2.1.2 to 2.3.37
. Но после этого ошибка изменилась на java.lang.NoSuchMethodError: com.opensymphony.xwork2.config.ConfigurationManager.addConfigurationProvider
. Затем я понизил версию xwork-core-2.3.3
, где эта функция в последний раз существовала как устаревшую, но затем получил новую ошибку, такую как
Caused by: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=java.lang.String, name='struts.objectFactory.spring.enableAopSupport'] in public org.apache.struts2.spring.StrutsSpringObjectFactory(java.lang.String,java.lang.String,java.lang.String,java.lang.String,javax.servlet.ServletContext,java.lang.String,com.opensymphony.xwork2.inject.Container).
at com.opensymphony.xwork2.inject.ContainerImpl.createParameterInjector(ContainerImpl.java:239)
at com.opensymphony.xwork2.inject.ContainerImpl.getParametersInjectors(ContainerImpl.java:229)
at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.constructParameterInjector(ContainerImpl.java:361)
at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.<init>(ContainerImpl.java:345)
Теперь при поиске я получаю решения, такие как обновление стоек , и обнаружил, что версия 2.5.x доступна. Но в этой версии, похоже, было удалено много старых элементов, таких как **dojo plugin**
, поэтому мне нужно больше доработать существующие коды, что займет много человеко-дней.
Я ожидаю меньшее предложение и решения с минимальными изменениями кода для обновления, поскольку приложение уже запущено.