Я бросил войну в автоматическое развертывание домена GlassFish 3, и он взорвался нормально, показывая дерево подкаталогов domain1> apps> myApp, в котором находится WEB-INF> classes> дерево папок myApp, в котором хранятся классы для myApp .
Приложение изначально использовало JSF1.2 и Facelets (1.1.15) и было развернуто на tomcat 6, но сейчас я пытаюсь выполнить сборку с использованием Java EE 6 и GlassFish v3.
Я знаю, что в Java EE 6 есть встроенный JSF 2 и Facelets, поэтому я удалил все ненужные jar-файлы из библиотеки приложений, оставив RichFaces, а также jar-файлы Log4J и некоторые Apache-файлы общего доступа, необходимые для поддержки приложения.
Приложение развертывается, но у меня есть эта проблема:
Файл JSF index.xhtml загружается после развертывания приложения. Содержимое страницы не разбирается, поскольку теги richfaces и jsf игнорируются, хотя весь файл отправляется в браузер. Вся страница инкапсулирована в тэг ui :position facelets. Я прочитал в другом месте , что это потому, что страница не проходит через FacesServlet. Кто-нибудь может подсказать, что мне нужно сделать с моими дескрипторами развертывания, чтобы они работали, если они действительно являются проблемой?
My faces-config.xml
имеет только настройки управляемого бина; мой web.xml
содержит:
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<!-- Added for facelets -->
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
среди множества других тегов. Мой sun-web.xml
содержит:
<sun-web-app error-url="">
<context-root>/MyApp</context-root>
<class-loader delegate="false"/>
<jsp-config>
<property name="keepgenerated" value="true">
<description>Keep a copy of the generated servlet class java code.</description>
</property>
</jsp-config>
</sun-web-app>
EDIT
Я указал браузеру на http://localhost:9090/myApp/index.jsf
, и проблема не изменилась, хотя в журнале сервера я получаю это
[#|2010-10-15T12:27:17.603+0100|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=29;_ThreadName=Thread-1;||STDOUT| 2010-10-15 12:27:17,603 | INFO | [http-thread-pool-9090-(12)]: Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory
|#]
[#|2010-10-15T12:27:17.603+0100|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=29;_ThreadName=Thread-1;||STDOUT| 2010-10-15 12:27:17,603 | INFO | [http-thread-pool-9090-(12)]: Creating LRUMap cache instance using parameters: {javax.faces.DEFAULT_SUFFIX=.xhtml, com.sun.faces.validateXml=true, com.sun.faces.forceLoadConfiguration=true, facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE=true, org.richfaces.LoadStyleStrategy=ALL, javax.faces.STATE_SAVING_METHOD=server, org.richfaces.CONTROL_SKINNING=enable, org.richfaces.SKIN=glassX, org.richfaces.CONTROL_SKINNING_CLASSES=enable}
|#]
[#|2010-10-15T12:27:17.603+0100|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=29;_ThreadName=Thread-1;||STDOUT| 2010-10-15 12:27:17,603 | INFO | [http-thread-pool-9090-(12)]: Creating LRUMap cache instance of default capacity
|#]
[#|2010-10-15T12:27:17.635+0100|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=29;_ThreadName=Thread-1;||STDOUT| 2010-10-15 12:27:17,635 | INFO | [http-thread-pool-9090-(12)]: Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory
|#]
[#|2010-10-15T12:27:17.635+0100|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=29;_ThreadName=Thread-1;||STDOUT| 2010-10-15 12:27:17,635 | INFO | [http-thread-pool-9090-(12)]: Creating LRUMap cache instance using parameters: {javax.faces.DEFAULT_SUFFIX=.xhtml, com.sun.faces.validateXml=true, com.sun.faces.forceLoadConfiguration=true, facelets.RECREATE_VALUE_EXPRESSION_ON_BUILD_BEFORE_RESTORE=true, org.richfaces.LoadStyleStrategy=ALL, javax.faces.STATE_SAVING_METHOD=server, org.richfaces.CONTROL_SKINNING=enable, org.richfaces.SKIN=glassX, org.richfaces.CONTROL_SKINNING_CLASSES=enable}
|#]
[#|2010-10-15T12:27:17.635+0100|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=29;_ThreadName=Thread-1;||STDOUT| 2010-10-15 12:27:17,635 | INFO | [http-thread-pool-9090-(12)]: Creating LRUMap cache instance of default capacity
, похоже, ему нравится содержимое faces-config.xml
, но оно по-прежнему не отображается. Чтобы подтвердить, я указал <url-pattern>*.jsf</url-pattern>
в своем дескрипторе развертывания web.xml
, мой javax.faces.DEFAULT_SUFFIX
имеет значение параметра .xhtml
, и моя страница приветствия и все другие страницы веб-материалов заканчиваются .xhtml
.
Имеет ли какое-либо значение сервер, возвращающий одну и ту же информацию дважды?
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ 2
Банки richfaces-[api|impl-jsf2|ui]-3.3.3.Final
находятся в библиотеке вместе с jsf-facelets.jar
, что составляет 1.1.15, как рекомендовано здесь . Мой дескриптор веб-приложения version="2.5"
. Из-за того, что мне нужно было включить 1.1.15 Facelets, и я использую GlassFish 3 т.е. Java EE 6, я попытался установить для <class-loader delegate="true"/>
значение false, чтобы попытаться получить флягу Facelets 1.1.15 и использовать ее в качестве предпочтения загрузчиком классов, но это не имело никакого значения.
faces-config.xml
установлен на version="2.0"
:
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">