Мы разработали приложение Java EE 5 на основе Seam 2, и оно работает на Weblogic 11g.
Теперь я попытался развернуть тот же WAR-файл на новом Weblogic 12c (12.1.1.0 на моем локальном компьютере с Windows 7).), выполнив те же действия, что и в предыдущем WLS, включая развертывание необходимой библиотеки JSF 1.2.
Развертывание и запуск приложения работает нормально, но когда я открываю URL в браузере, я получаюошибка 500 и лог-файл показывает следующее исключение:
java.lang.UnsupportedOperationException
at javax.faces.application.Application.getResourceHandler(Application.java:287)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:588)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
...
Операция, о которой идет речь в классе Application, относится к версии 2.0 JSF, и я не понимаю, почему контейнер пытается вызвать ее, поскольку язаявлено на использование JSF 1.2.
Есть идеи, что вызывает проблему и как просто перенести существующее приложение Java EE 5 в WLS 12?
Редактировать 1/2 /12 : Поскольку ответов нет, может, небольшая щедрость поможет?;-) Нет, серьезно, есть ли какие-нибудь подробности, которые я могу предоставить, чтобы помочь мне в этом?
Редактировать 1/5/12 : Относится к запросу cj91- проект не основан на Maven, поэтому нет POM.Но вот дескриптор развертывания weblogic.xml:
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
<library-ref>
<library-name>jsf</library-name>
<specification-version>1.2</specification-version>
<implementation-version>1.2</implementation-version>
<exact-match>false</exact-match>
</library-ref>
</weblogic-web-app>
А вот список jar-файлов, взятых сборкой ant:
commons-digester.jar
jboss-seam-debug.jar
jboss-seam-excel.jar
jboss-seam-ioc.jar
jboss-seam-mail.jar
jboss-seam-pdf.jar
jboss-seam-rss.jar
jboss-seam-ui.jar
jsf-facelets.jar
jxl.jar
richfaces-impl.jar
richfaces-ui.jar
standard.jar
jstl.jar
jsf-api.jar
commons-collections-3.2.1.jar
commons-lang.jar
jboss-seam.jar
persistence-api.jar
jta.jar
jsf-impl.jar
darkX.jar
glassX.jar
laguana.jar
antlr-runtime.jar
commons-beanutils.jar
core.jar
drools-templates.jar
drools-decisiontables.jar
drools-compiler.jar
drools-api.jar
drools-core.jar
janino.jar
jboss-el.jar
jboss-seam-remoting.jar
jbpm-jpdl.jar
mvel2.jar
richfaces-api.jar
spiffy-with_source-all-0.05.jar
SuperCSV-1.52.jar
commons-logging.jar
dom4j.jar
javassist.jar
cglib.jar
antlr.jar
slf4j-api.jar
slf4j-log4j12.jar
hibernate-core.jar
hibernate-search.jar
hibernate-commons-annotations.jar
hibernate-annotations.jar
hibernate-entitymanager.jar
hibernate-validator.jar
jboss-common-core.jar
concurrent.jar
lucene-core.jar
gwt-servlet.jar
Я уверен, что в нем больше jar-файлов, чемнеобходимо, но это настройка, в которой он в настоящее время работает на WebLogic 10.3.5.
Я подозревал, что jsf и jstl jar являются источником проблемы, но удаление их из войны ничего не изменило.
Вопрос по-прежнему - почему WLS 12 пытается выполнить что-то из JSF 2.0?
Редактировать 1/6 / 12 : мне удалось решитьисходная проблема - все еще приложение не работает должным образом (и все же это странно для меня, так как я не ожидал, что придется изменить многие вещи в ранее запущенном приложении при обновлении до нового выпуска WLS), но яобъявите этот случай здесь как решенный.
Для тех, кто заинтересован, я сделал - благодаря помощи ответов и некоторым поискам этих вещей:
Измените weblogic.xml на:
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>false</prefer-web-inf-classes>
</container-descriptor>
<library-ref>
<library-name>jsf</library-name>
<specification-version>1.2</specification-version>
<implementation-version>1.2.9.0</implementation-version>
<exact-match>true</exact-match>
</library-ref>
</weblogic-web-app>
Удалено тОн следит за jar-файлами из WEB-INF / lib:
jsf-impl.jar
jsf-api.jar
persistence-api.jar
jta.jar
jstl.jar
Внутри Face-config.xml измените обработчик представления на (из-за IllegalStateException см. здесь ):
<view-handler>org.ajax4jsf.application.AjaxViewHandler</view-handler>
В файле persistence.xml измените класс фабрики запросов на (из-за ClassNotFoundException: org.hibernate.hql.ast.HqlToken, см. здесь )
<property name="hibernate.query.factory_class" value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory"/>