Лучшая стратегия миграции для Struts 2.1.6 + Spring 3 + Hibernate 3 на java 8 поддерживаемые версии - PullRequest
0 голосов
/ 07 июня 2019

В настоящее время у меня есть одно веб-приложение, созданное на основе Struts 2.1.6 + Spring 3 + Hibernate 3 + JAVA 6 и работающее на Tomcat 6 / JBoss 5 . Это очень старое приложение с ant build , но теперь у нас есть требование обновить его до JAVA 8 и EAP 7 и Tomcat 9 сервер.

Я сделал следующие шаги, но мне нужно больше переделок, чтобы сделать его работоспособным

  1. Сначала обновлено JAVA 6 to 8 - затем не удалось создать экземпляр для пружинных зависимостей
  2. Затем обновил Spring 3.x to latest 5.1.7.RELEASE - теперь шаблон гибернации и все вышло из строя из-за изменений, таких как *.hibernate5.* изменения пакета и все - сделал некоторые изменения кода, чтобы исправить это
  3. Модернизировано Hibernate 3.x to 5.4.2.Final - добавлены некоторые изменения, устаревшие коды
  4. Модернизирован struts2-spring-plugin-2.1.6 to struts2-spring-plugin-2.5.20 для поддержки новой весенней версии
  5. Сейчас во время публикации в 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**, поэтому мне нужно больше доработать существующие коды, что займет много человеко-дней.

Я ожидаю меньшее предложение и решения с минимальными изменениями кода для обновления, поскольку приложение уже запущено.

...