Преимущества (и советы) по обновлению с JBoss 4.2.x до JBoss 5.x, 6.x, 7.x и WildFly 8.x? - PullRequest
31 голосов
/ 01 июня 2011

Пожалуйста, предположите, что мне не нужно беспокоиться о времени и затратах на разработку: Меня интересуют общие технические преимущества (улучшенная производительность? Улучшенные API?) И новые функции.

В настоящее время я работаю над продуктами, использующими 4.2.x, и мы рассматриваем значительный сдвиг в версиях, которые еще долго и должны сходиться.

Я кратко ознакомился с примечаниями к выпускукаждой версии и несколько статей о каждом выпуске для 5.x, 6.x, 7.x и 8.x.Но я был бы рад получить информацию из первых рук от людей, которые сделали переход.

Я заметил, что есть некоторые важные изменения, связанные с обменом сообщениями (переключение с JBoss MQ на JBoss Messengering), а также для JBoss 7.х, кажется, он немного изменил свой уровень конфигурации.Тогда происходит гораздо больше при переходе на JBoss / WildFly 8.x.

Пожалуйста, порекомендуйте хорошие статьи, указывающие на подводные камни, если можете.Я нашел несколько для миграции на JBoss 5.x, но не так много для 6.x или даже 7.x, и кто-то еще оценивает 8.x для нас сейчас.Не стесняйтесь также рекомендовать альтернативы, если считаете, что они актуальны, хотя я бы предпочел сосредоточиться только на JBoss.

Для информации мы используем сочетание JPF и OSGi (с использованием Eclipse Equinox)системы на основе плагинов, с клиентами, разработанными в Swing (некоторые развернуты через WebStart).

Обновление: Хотя этот вопрос уже дал несколько хороших ответов, я думаю, что он заслуживает обновления для WildFly (иНа самом деле, наши внутренние проекты откладывали переход с 4.2.x на 7.x, как первоначально планировалось в ожидании WildFly).Новые мысли и ответы приветствуются.

Ответы [ 5 ]

24 голосов
/ 03 июня 2011

Я обновился с JBoss 4 до 5, и из опыта наиболее важно отметить следующее:

  • JBoss 5 (и 6 и 7) не так просты, как JBoss 4 с файлами XML. Вы должны убедиться, что все ваши XML-файлы дескриптора развертывания являются действительными. Возможно, вы используете DTD в некоторых файлах - я рекомендую обновить их для использования схемы XML.
  • Некоторые библиотеки могут вызывать несовместимости. Это может быть особенно актуально, если вы обращаетесь к веб-сервисам и / или делаете анализ XML
  • Если вы прекомпилируете свои JSP в JBoss 4, вы, вероятно, не сможете в JBoss 6/7.
  • JBoss 4 и 5 используют разные реализации очереди сообщений. Если у вас есть какие-либо очереди сообщений или определенные темы, вам нужно переопределить их.
  • JBoss TreeCache больше не используется. Если вы используете это для целей кэширования, вам нужно будет перейти на использование нового кэша JBoss.
  • Безопасность JBoss 5 отличается. Если вашим удаленным клиентам требуется защищенный доступ к JBoss, вам необходимо настроить их по-другому.

Вот некоторые полезные ресурсы:

http://java.dzone.com/articles/migrating-jboss-4-jboss-5 http://venugopaal.wordpress.com/2009/02/02/jboss405-to-jboss-5ga

Официально JBoss 6 сертифицирован только для веб-профиля Java EE, поэтому, если вы используете «устаревшие» функции, такие как EJB 2.x, они потенциально не будут поддерживаться в будущем. В зависимости от жизненного цикла вашего приложения, это может быть или не быть проблемой. JBoss 6 в настоящее время полностью поддерживает EJB2.1, но не сертифицирован против этого.

Я также обнаружил, что JBoss 5 обрабатывает память намного лучше, чем JBoss 4. В JBoss 4 я вижу намного больше ошибок PermGen, чем в JBoss 5.

9 голосов
/ 01 июня 2011

Я могу говорить только из производственного опыта с JBoss 5.1.0 и некоторых исследований версии 6.

JBoss 5 - Java EE 5 , а JBoss 6 и 7 - Java EE 6 . Несоответствие функций API лучше всего задокументировано в этих спецификациях. JBoss 6, вероятно, будет иметь очень короткий срок годности; сертифицирован только для веб-профиля Java EE 6 , а исправления предназначены для версии 7 (в третьей бета-версии на момент написания).

Думаю, вы получите лучшие ответы на форуме сообщества JBoss.

5 голосов
/ 21 мая 2014

Мы обновились с JBoss AS 5 до JBoss AS 7 и ориентируемся на WildFly AS 8.1.В настоящее время мы не можем перейти на 8, потому что нет MAR серии JMS 2 RQ.

Некоторые различия:

  • Конфигурация намного лучше и проще.Он больше не распространяется на 20 XML-файлов, в которых вы настраиваете аспекты в XML-файлах.Вместо этого все является одним центральным местом.Все порты настроены в одном центральном месте, больше нет XSL-файла, преобразующего server.xml.Вы можете разобраться в файле конфигурации, не зная деталей реализации классов.Трудно оценить это, если вы никогда не настраивали JBoss 5.x.
  • Модель загрузки классов выглядит разумно, и вы получаете большой контроль через jboss-deploy-structure.xml
  • Централизованное ведение журналов (Slf4j, JUL, JCL, Log4j, ...) действительно приятно.
  • Клиентская библиотека EJB выглядит намного более очищенной.С 20 до 10 JAR, половина из них - даже OSGi-комплекты (наш клиент - приложение Eclipse RCP).
  • Беспорядок в зависимостях maven клиента EJB исчез, вместо этого вы получите POM POM.
  • Вы получаете POM BOM для серверных API.
  • Более быстрый запуск и меньшее использование памяти.Мы развернем 80 EJB и RAR серии MQ за 6 секунд без особых настроек.Наш оперативный набор данных находится где-то выше 200 МБ.
  • Папка развертывания по умолчанию пуста
  • Качество XNIO (отсутствие) является пугающим.В 7.x он используется только для удаленного взаимодействия EJB, и мы обнаруживаем несколько ошибок, связанных с блокировкой шоу (взаимоблокировки, двойное освобождение, утечки из ручек сокетов,…)В 8.x он используется и для сервлетов вместо Tomcat.Все еще есть много очень простых ошибок сервлетов, которые были исправлены в undertow.

Изменения, которые нам пришлось сделать в нашем приложении:

  • изменить имена JNDI на стандартизированные имена EE 6
  • миграция из JBoss Cache в Infinispan (часть нашего кода была перенесена в плоский API, некоторые части все еще используют API дерева)
  • безопасность немного менее гибкая (вы больше не можете исправитьаутентифицированные и неаутентифицированные вызовы)
  • какой-то ужасный код, который основывался на деталях удаленного JNDI
  • , конфигурация EJB-клиента отличается
  • все ваши сценарии для установки, развертывания,запуск, остановка,…
  • ExternalContext пропал, нам пришлось заменить его другим подходом
  • мы заменили MBeans в SAR на @StartUp EJBs
  • некоторые уродливые хаки для Cocoon

В серии AS 7.x есть серия ошибок с исправлениями, доступными только в серии EAP.Если вы хотите перейти с 7.x вместо 8.x, мы настоятельно рекомендуем вам купить EAP 6.

0 голосов
/ 29 июня 2013

Просто хотел довести это до сведения любого, кто может столкнуться с проблемой раздувания PermGen после обновления до последней версии.Микроконтейнер JBoss-6 пытается выполнить поиск специфических аннотаций Jboss, загружая классы из всех JAR-файлов в пути к классам при запуске.Это приводит к вздутию PermGen, поскольку он начинает загружать все нежелательные классы.Чтобы уменьшить объем сканирования, микроконтейнер предоставляет еще один дескриптор, с помощью jboss-scan.xml.Добавьте этот 'jboss-scan.xml' к WEB-INF внутри WARS и задний 'jboss-scan.xml' к META-INF внутри EAR.

<scanning xmlns="urn:jboss:scanning:1.0">

    <!-- Purpose: Disable scanning for annotations in contained deployment. -->

</scanning>
0 голосов
/ 27 декабря 2011

Вот интересная тема о компромиссах и будущем JBoss AS 7, а также упоминаются проблемы с AS 5 и AS 6:

http://community.jboss.org/message/613171

...