ПРОПУСТИТЕ ДЛЯ ОБНОВЛЕНИЯ 3
Я хочу включить страницу отладки Шва на Weblogic 10.3.2 (11 г). Так, я сделал следующее:
У меня есть jboss-шов и jboss-seam-debug банки как зависимость и в моем ejb и в веб-проектах знатока (оба - модули моего суперпроекта), я поместил этот параметр контекста в свой web.xml:
org.jboss.seam.core.init.debug
true
Теперь, когда я поразил URL своего приложения, я получаю страницу отладки за этим исключением (полный stacktrace в конце сообщения):
Вызванный java.lang. IllegalStateException с сообщением: "Никакой идентификатор фазы, связанный с текущим потоком (удостоверяются, что у Вас нет двух экземпляров SeamPhaseListener установленными)"
Из сообщений я читал, кажется, что это так или иначе связано с двумя банками jboss-шва или jboss-seam-debug, находящегося в пути к классу. Я открыл свой файл уха, и только один из каждого присутствует (в ухе), тогда как сама война не имеет никаких библиотек в WEB-INF/lib.
У меня есть также чтение другого способа инициализировать страницу отладки с помощью components.xml. Я также пытался включать следующий components.xml в СЕТЬ-INF, но она не работала также:
Какие-либо предложения, на что сделать для включения страницы отладки правильно?
Удачи!
Полный stacktrace:
org.jboss.seam.contexts.PageContext.getPhaseId(PageContext.java:163)
org.jboss.seam.contexts.PageContext.isBeforeInvokeApplicationPhase(PageContext.java:175)
org.jboss.seam.contexts.PageContext.getCurrentWritableMap(PageContext.java:91)
org.jboss.seam.contexts.PageContext.remove(PageContext.java:105)
org.jboss.seam.Component.newInstance(Component.java:2141)
org.jboss.seam.Component.getInstance(Component.java:2021)
org.jboss.seam.Component.getInstance(Component.java:2000)
org.jboss.seam.Component.getInstance(Component.java:1994)
org.jboss.seam.Component.getInstance(Component.java:1967)
org.jboss.seam.Component.getInstance(Component.java:1962)
org.jboss.seam.faces.FacesPage.instance(FacesPage.java:92)
org.jboss.seam.core.ConversationPropagation.restorePageContextConversationId(ConversationPropagation.java:84)
org.jboss.seam.core.ConversationPropagation.restoreConversationId(ConversationPropagation.java:57)
org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:391)
org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:230)
org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:196)
com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:114)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3592)
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202)
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108)
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
ОБНОВЛЕНИЕ 1:
Теперь страница отладки не появляется вообще. Когда я прошу http://localhost/myapp/debug.xhtml, я получаю страницу с:
myapp/debug.xhtml
то же как любая страница, которая не существует. Я открыл .ear, и следующие jboss банки находятся в:
Моя текущая конфигурация:
PRS 6.0
30
javax.faces.DEFAULT_SUFFIX
.xhtml
javax.faces.STATE_SAVING_METHOD
server
javax.faces.CONFIG_FILES
/WEB-INF/faces-config/application.xml
facelets.REFRESH_PERIOD
2
facelets.DEVELOPMENT
true
facelets.SKIP_COMMENTS
true
com.sun.faces.verifyObjects
false
org.ajax4jsf.VIEW_HANDLERS
com.sun.facelets.FaceletViewHandler
org.ajax4jsf.COMPRESS_SCRIPT
true
org.ajax4jsf.COMPRESS_STYLE
true
org.ajax4jsf.xmlparser.ORDER
NONE
org.richfaces.SKIN
blueSky
org.richfaces.CONTROL_SKINNING
enable
org.richfaces.LoadStyleStrategy
ALL
org.richfaces.LoadScriptStrategy
ALL
Seam Filter
org.jboss.seam.servlet.SeamFilter
Seam Filter
/*
RichFaces Filter
richfaces
org.ajax4jsf.Filter
Set the size limit for uploaded files as attachments in bytes. (max 5MB)
maxRequestSize
5242880
richfaces
Faces Servlet
REQUEST
FORWARD
INCLUDE
XX.XXXX.XXX.prs.web.listeners.ResourceInitializationListener
com.sun.faces.config.ConfigureListener
XX.XXXX.XXX.prs.web.listeners.EJBInjectionListener
org.jboss.seam.servlet.SeamListener
Faces Servlet
javax.faces.webapp.FacesServlet
1
Faces Servlet
*.xhtml
-> Сервлет Ресурса шва -> org.jboss.seam.servlet. SeamResourceServlet ->->-> Сервлет Ресурса Шва ->/seam/resource /* ->->
index.xhtml
faces.config
en
en
com.sun.facelets.FaceletViewHandler
org.jboss.seam.el.SeamELResolver
XX.XXXX.XXX.prs.web.messages.messages
msgs
XX.XXXX.XXX.prs.web.messages.validation
val
XX.XXXX.XXX.prs.web.listeners.SetFocusListener
XX.XXXX.XXX.prs.model.Applicant
XX.XXXX.XXX.prs.web.common.converters.ApplicantConverter
EmailValidator
XX.XXXX.XXX.prs.web.common.validators.EmailValidator
components.xml
ОБНОВЛЕНИЕ 2:
У этих парней здесь есть та же проблема. У них есть внешний проект EAR, содержащий внутренний ВОЕННЫЙ проект. Они обсуждают это, это может быть связано с тем, как банки заканчиваются в проектах.
Я использую Знатока, и я установил его для создания "Тощих войн", который исключает все зависимости от банки из внутреннего ВОЕННОГО проекта, так, чтобы это осталось маленьким в размере. Все его зависимости содержатся в EAR и используются всеми другими модулями.
Я изменил настройки военного плагина знатока для отъезда в войне определенных для сети банок (те упомянутый в ссылке, как RichFaces, jboss-seam-debug, Facelets и т.д.).
Однако проблема вернулась к своей предыдущей форме. Я теперь получаю страницу отладки, безотносительно ссылки, которую я нажимаю за начальным исключением.
Вызванный java.lang. IllegalStateException с сообщением: "Никакой идентификатор фазы, связанный с текущим потоком (удостоверяются, что у Вас нет двух экземпляров SeamPhaseListener установленными)"
ОБНОВЛЕНИЕ 3: структура приложения .ear следующая:
application.ear
|--> APP-INF
| |--> classes
|--> lib (all jar dependencies go here, including the WAR dependencies, EJB module dependencies)
|-->META_INF
| |--> application.xml
| |--> data-sources.xml
| |--> MANIFEST.MF
| |--> weblogic.xml
| |--> weblogic-application.xml
|--> jboss-seam-2.2.0.GA.jar
|--> myEjbModule1.jar
|--> myEjbModule2.jar
|--> myEjbModule3.jar
|--> myEjbModule4.jar
|--> myWar.war (NO libraries in WEB-INF/lib, finds everything in EAR/lib)
Когда развертывание .ear приложение БЕЗ отладки включило (не включая jboss-seam-debug.jar в ухе), приложение загружается правильно.
При развертывании С jboss-seam-debug.jar в EAR (каталог EAR/lib), приложение не появляется, но ТОЛЬКО страница отладки за следующим исключением (stacktrace в конце):
Исключение во время обработки запросов:
Вызванный java.lang. IllegalStateException с сообщением: "Никакой идентификатор фазы, связанный с текущим потоком (удостоверяются, что у Вас нет двух экземпляров SeamPhaseListener установленными)"
Когда "JBoss-izing", тот же EAR (удаляют, в спящем режиме банки, которые обеспечиваются JBoss, и перемещают все библиотеки от EAR/lib до корня EAR), загрузки приложения правильно. И приложение И страница отладки появляются правильно.
Полный stacktrace:
org.jboss.seam.contexts. PageContext.getPhaseId(PageContext.java:163) org.jboss.seam.contexts. PageContext.isBeforeInvokeApplicationPhase(PageContext.java:175) org.jboss.seam.contexts. PageContext.getCurrentWritableMap(PageContext.java:91) org.jboss.seam.contexts. PageContext.remove(PageContext.java:105) org.jboss.seam. Component.newInstance (Компонент java:2141) org.jboss.seam. Component.getInstance (Компонент java:2021) org.jboss.seam. Component.getInstance (Компонент java:2000) org.jboss.seam. Component.getInstance (Компонент java:1994) org.jboss.seam. Component.getInstance (Компонент java:1967) org.jboss.seam. Component.getInstance (Компонент java:1962) org.jboss.seam.faces. FacesPage.instance(FacesPage.java:92) org.jboss.seam.core. ConversationPropagation.restorePageContextConversationId(ConversationPropagation.java:84) org.jboss.seam.core. ConversationPropagation.restoreConversationId(ConversationPropagation.java:57) org.jboss.seam.jsf. SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:391) org.jboss.seam.jsf. SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:230) org.jboss.seam.jsf. SeamPhaseListener.afterPhase(SeamPhaseListener.java:196) com.sun.faces.lifecycle. Phase.handleAfterPhase (Фаза java:175) com.sun.faces.lifecycle. Phase.doPhase (Фаза java:114) com.sun.faces.lifecycle. RestoreViewPhase.doPhase(RestoreViewPhase.java:104) com.sun.faces.lifecycle. LifecycleImpl.execute(LifecycleImpl.java:118) javax.faces.webapp. FacesServlet.service(FacesServlet.java:265) weblogic.servlet.internal. StubSecurityHelper$ServletServiceAction.run (StubSecurityHelper.java:227) weblogic.servlet.internal. StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) weblogic.servlet.internal. ServletStubImpl.execute(ServletStubImpl.java:292) weblogic.servlet.internal. TailFilter.doFilter(TailFilter.java:26) weblogic.servlet.internal. FilterChainImpl.doFilter(FilterChainImpl.java:56) org.ajax4jsf.webapp. BaseFilter.doFilter(BaseFilter.java:530) weblogic.servlet.internal. FilterChainImpl.doFilter(FilterChainImpl.java:56) org.jboss.seam.servlet. SeamFilter$FilterChainImpl.doFilter (SeamFilter.java:83) org.jboss.seam.web. IdentityFilter.doFilter(IdentityFilter.java:40) org.jboss.seam.servlet. SeamFilter$FilterChainImpl.doFilter (SeamFilter.java:69) org.jboss.seam.web. MultipartFilter.doFilter(MultipartFilter.java:90) org.jboss.seam.servlet. SeamFilter$FilterChainImpl.doFilter (SeamFilter.java:69) org.jboss.seam.web. ExceptionFilter.doFilter(ExceptionFilter.java:64) org.jboss.seam.servlet. SeamFilter$FilterChainImpl.doFilter (SeamFilter.java:69) org.jboss.seam.web. RedirectFilter.doFilter(RedirectFilter.java:45) org.jboss.seam.servlet. SeamFilter$FilterChainImpl.doFilter (SeamFilter.java:69) org.ajax4jsf.webapp. BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) org.ajax4jsf.webapp. BaseFilter.handleRequest(BaseFilter.java:290) org.ajax4jsf.webapp. BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) org.ajax4jsf.webapp. BaseFilter.doFilter(BaseFilter.java:515) org.jboss.seam.web. Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) org.jboss.seam.servlet. SeamFilter$FilterChainImpl.doFilter (SeamFilter.java:69) org.jboss.seam.web. LoggingFilter.doFilter(LoggingFilter.java:60) org.jboss.seam.servlet. SeamFilter$FilterChainImpl.doFilter (SeamFilter.java:69) org.jboss.seam.web. HotDeployFilter.doFilter(HotDeployFilter.java:53) org.jboss.seam.servlet. SeamFilter$FilterChainImpl.doFilter (SeamFilter.java:69) org.jboss.seam.servlet. SeamFilter.doFilter(SeamFilter.java:158) weblogic.servlet.internal. FilterChainImpl.doFilter(FilterChainImpl.java:56) weblogic.servlet.internal. RequestEventsFilter.doFilter(RequestEventsFilter.java:27) weblogic.servlet.internal. FilterChainImpl.doFilter(FilterChainImpl.java:56) weblogic.servlet.internal. WebAppServletContext$ServletInvocationAction.run (WebAppServletContext.java:3592) weblogic.security.acl.internal. AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) weblogic.security.service. SecurityManager.runAs(SecurityManager.java:121) weblogic.servlet.internal. WebAppServletContext.securedExecute(WebAppServletContext.java:2202) weblogic.servlet.internal. WebAppServletContext.execute(WebAppServletContext.java:2108) weblogic.servlet.internal. ServletRequestImpl.run(ServletRequestImpl.java:1432) weblogic.work. ExecuteThread.execute(ExecuteThread.java:201) weblogic.work. ExecuteThread.run(ExecuteThread.java:173)
Причина, по которой страница отладки Seam не появилась, невероятна (для меня).
Я упаковал свое приложение с помощью Apache Maven. Традиционно имена файлов jar, управляемых maven, также содержат номер версии. jar для Seam - это jboss-seam -2.2.0.GA.jar. Поскольку Seam является модулем EJB в приложении, я объявил его зависимость как таковую. И действительно, EAR содержал его как EJB модуль (расположенный в корне EAR), а также объявил его в META-INF/application.xml.
Я не знаю, определяет ли спецификация ограничения на именование модулей EJB в EAR, но часть имени файла, связанная с версией, не понравилась WebLogic (если ее изменить, война прекрасно работает на JBoss).
Я изменил настройки в maven-ear-plugin с этого:
<ejbModule>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam</artifactId>
</ejbModule>
на это:
<ejbModule>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam</artifactId>
<bundleFileName>jboss-seam.jar</bundleFileName>
</ejbModule>
И теперь я могу видеть ОБА моих приложения и страницу Debug.
Вы получаете следующее исключение
No phase id bound to current thread (убедитесь, что у вас не установлено два экземпляра SeamPhaseListener)
Но вы сказали, что установили ejb и web maven проект. Возможно, оба включают SeamPhaseListener, когда вы развертываете свое приложение. Это, возможно, объясняет, почему вы получаете исключение (Установлено два экземпляра SeamPhaseListener).
Мой совет (И если вы хотите избежать много головной боли)
Всегда генерируйте ваш проект с помощью Seam-gem
Смотрите здесь почему
Хорошую статью, помимо книги Seam in Action, о JSF/Seam можно найти здесь
Добавлено к оригинальному ответу
Смотрите, что книга Seam in Action говорит об этом
В Seam 2. 0, слушатель фазы Seam объявляется в дескрипторе facesconfig.xml который включен в основной JAR-файл Seam, jboss-seam.jar. Таким образом, слушатель фазы становится доступным, как только вы включаете этот JAR-файл в ваше приложение.
Таким образом, вам не нужно беспокоиться о SeamPhaseListener. Seam будет.
UPDATE
Прежде всего, у вас есть приложение для ушей. Прежде чем продолжить
1º Каждый EJB и военный модульдолжны быть объявлены в application.xml (Файл, который описывает ваш ear)
Итак, ваше ear-приложениедолжно выглядеть так (Назовем ваше ear-приложение pureCharger)
pureCharger.ear
META-INF
application.xml
pureCharger-ejb.jar
META-INF
ejb-jar.xml
persistence.xml
lib
// libraries ONLY USED by your EJB module goes here
pureCharger-war.war
WEB-INF
web.xml
components.xml
faces-config.xml
pages.xml
lib
// Here is what you want
jboss-seam-debug.jar
jboss-seam-ui.jar
jsf-facelets.jar
// other libraries ONLY USED by your war module goes here
jboss-seam.jar
lib
// JBoss Expression Language is used by both EJB and war module
jboss-el.jar
// libraries SHARED by all of your modules goes here
ejb-jar. xml выглядит следующим образом (Он позволяет @In-jection вашим EJB компонентам)
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" 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/ejb-jar_3_0.xsd" version="3.0">
<interceptors>
<interceptor>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor>
</interceptors>
<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor-binding>
</assembly-descriptor>
</ejb-jar>
2º jboss-seam.jar является EJB модулем
Поэтому он также должен быть объявлен в файле application.xml. И еще, как было сказано выше, вам не нужно определять SeamPhaseListener, потому что jboss-seam.jar включает SeamPhaseListener. Поэтому избегайте появления этого приятного сообщения
Два экземпляра SeamPhaseListener установлены
Итак, ваш ушной application.xml должен выглядеть так
<?xml version="1.0" encoding="UTF-8"?>
<application version="5" xmlns="http://java.sun.com/xml/ns/javaee" 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/application_5.xsd">
<display-name>pureCharger</display-name>
<module>
<ejb>pureCharger-ejb.jar</ejb>
</module>
<module>
<ejb>jboss-seam.jar</ejb>
</module>
<module>
<web>
<web-uri>pureCharger-war.war</web-uri>
<context-root>pureCharger</context-root>
</web>
</module>
</application>
ok. Поехали
3º Вы хотите включить страницу отладки
Страница отладки Seam будет доступна, если этот jar будет развернут в WEB-INF/lib, вместе с Facelets, и если вы установите свойство debug компонента init
Итак, ваш components. xml должен выглядеть вот так
<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://jboss.com/products/seam/components"
xmlns:core="http://jboss.com/products/seam/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://jboss.com/products/seam/core
http://jboss.com/products/seam/core-2.2.xsd
http://jboss.com/products/seam/components
http://jboss.com/products/seam/components-2.2.xsd">
<core:init jndi-pattern="pureCharger/#{ejbName}/local" debug="true"/>
<core:manager concurrent-request-timeout="500" conversation-timeout="120000" conversation-id-parameter="cid" />
</components>
Смотрите, как показано выше я определил глобальный JNDI адрес (я полагаю вы используете JBoss и ваше ушное приложение называется pureCharger) для того, чтобы Seam получил свой EJB компонент
И наконец, наш web. xml файл
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 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-app_2_5.xsd">
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<!--It must be the first-->
<filter>
<filter-name>Seam Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--It must be the first-->
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<!--specified in minutes-->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
</web-app>
И наш faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-facesconfig_1_2.xsd" version="1.2">
<application>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>en</supported-locale>
</locale-config>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
<resource-bundle>
<base-name>XX.XXXX.XXX.prs.web.messages.messages</base-name>
<var>msgs</var>
</resource-bundle>
<resource-bundle>
<base-name>XX.XXXX.XXX.prs.web.messages.validation</base-name>
<var>val</var>
</resource-bundle>
</application>
</faces-config>
Пара замечаний
Вам не нужно объявлять org.jboss.seam.el.SeamELResolver в faces-config.xml, потому что он поставляется с jboss-seam.jar.
Теперь, что пропущено?
Нам нужно вызвать нашу страницу отладки (Не забудьте запустить JBoss и развернуть ваше приложение ear)
И снова
Если вы действительно хотите избежать много головной боли, используйте seam-gem
UPDATE
Является ли ваш проект ear КАК ПОКАЗАНО Свыше ???? УБЕДИТЕСЬ, что ваша папка war lib НЕ СОДЕРЖИТ никакого файла jboss-seam.jar. Вы сказали
Я открыл .ear и следующие банки jboss находятся в:
Здесь вы можете увидеть хороший учебник по EJB 2. 0 и 3.0, предоставленный мной
Полезные ссылки о Seam Maven Integration
http://www.seamframework.org/Community/MavenWithSeam
http://www.seamframework.org/Documentation/SeamWithMavenOverview
http://www.seamframework.org/Community/SeamInActionChapter2345And6Mavenized
http://www.seamframework.org/Community/MavenSeamArchetype
с уважением,
Что вы имеете в виду, страницу отладки? Вы имеете в виду страницу отладки стыка по умолчанию? Что такое debug.seam? Обычно http: // localhost: 8080 / debug.seam ?
Недостаточно вставить web.xml. Вам также необходимо вставить components.xml
<core:init debug="true" jndi-pattern="myApp/#{ejbName}/local"/>
. Вам также необходимо убедиться, что jboss-seam-debug.jar находится в пути к классам. Перехватчик Seam должен получить его автоматически.
Если вы используете Facelets, чтобы получить его страницу отладки, вам нужно будет поместить ее в web.xml
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
Совет Артура о том, чтобы всегда использовать seam-gen для создания вашего проекта, является очень хорошей идеей.
Я также вижу, что Артур говорит, что вам нужно убедиться, что jboss-seam-debug.jar не должен быть в вашей библиотеке во время войны. Это не обязательно правильно. У меня есть в
myapp.war/WEB-INF/lib/jboss-seam-debug.jar