Мы переносим приложение из Glassfish 3.1.2.2 в Payara 5. Приложение использует Icefaces 3.3.0, что подтверждает работу с JSF 2.1.
У нас есть два варианта для развертывания этого в Payara 5, использовать встроенную версию 2.3.x JSF, которая должна быть обратно совместимой, или связывать JSF 2.1.x вместе с Icefaces в войне, включенной в ухо.
До сих пор я пробовал каждый из этих методов, но у меня были проблемы с обоими.
При использовании сервера, включенного в JSF версии 2.3.x, как только страница выполняет вызов ajax (в мире icefaces это частичная отправка), мы видим ошибку:
javax.faces.FacesException: Cannot add the same component twice: v9oeh233_icefaces_config
Обычно это означает, что com.sun.faces.config.ConfigureListener
был запущен дважды, однако в этом случае этот слушатель не включен в наш web.xml
, и я не вижу ошибок, свидетельствующих о том, что он был запущен дважды. Если я включу его в web.xml
, то не будет никакой разницы, мы все равно увидим ошибку. Спецификация сервлета, установленная в web.xml
, также была указана как 2.5, которая, как предлагал другой поток, остановит автоматическую инициализацию этого слушателя в Servlet 3.0.
При связывании JSF 2.1.x мне пришлось также связать банку с сердечником сварного шва, чтобы заставить его работать, а также использовать функциональность пакета белого списка, чтобы добраться до точки, где он загрузит проект фляги EJB. После его запуска я могу посетить некоторые страницы приложения, но как только я доберусь до той, которая использует наш пользовательский taglib, я получаю следующую ошибку:
java.lang.NoSuchMethodException: com.thirddegree.shared.utils.UserHasRoleTagHandler.<init>(javax.faces.view.facelets.TagConfig)
Класс определенно существует, и этот конструктор существует, так как он работал на glassfish 3.1.2.2, так что, возможно, это связано с управлением версиями класса, но я не могу понять, что.
Кто-нибудь пытался выполнить миграцию icefaces 3.3.0 на Payara 5 или Glassfish 5, и если да, сталкивались ли вы с подобными проблемами или у вас есть какие-то решения? Также какие-нибудь предложения для вещей, которые я мог бы попробовать?
Большое спасибо,
Даррен