Пропустить до обновления 3
Я хочу включить страницу отладки Seam в Weblogic 10.3.2 (11g). Итак, я сделал следующее:
У меня есть jarss-seam и jboss-seam-debug jar как зависимость как в моих проектах ejb, так и в web-maven (оба являются модулями моего суперпроекта). Я поместил этот параметр контекста в свой web.xml:
<context-param>
<param-name>org.jboss.seam.core.init.debug</param-name>
<param-value>true</param-value>
</context-param>
Теперь, когда я нажимаю на URL своего приложения, я получаю страницу отладки с этим исключением (полная трассировка стека в конце сообщения):
вызвано
java.lang.IllegalStateException с
сообщение: «Идентификатор фазы не связан с текущим
нить (убедитесь, что у вас нет двух
Экземпляры SeamPhaseListener
установлен) "
Из сообщений, которые я прочитал, кажется, что это как-то связано с двумя jar-файлами jboss-seam или jboss-seam-debug, находящимися в пути к классам. Я открыл файл с ушами, и только один из них присутствует (в ухе), тогда как у самой войны нет библиотек в WEB-INF / lib.
Я также читал о другом способе инициализации страницы отладки с использованием component.xml. Я также попытался включить следующий файл component.xml в WEB-INF, но он тоже не работал:
<?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 debug="true"/>
</components>
Есть предложения, как правильно включить страницу отладки?
Ура!
Полная трассировка стека:
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-банки находятся в:
- JBoss шва-отладки 2.2.0.GA.jar
- JBoss-эль-1.0_02.CR4.jar
- JBoss шва-2.2.0.GA.jar
Моя текущая конфигурация:
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
version="2.5">
<display-name>PRS 6.0</display-name>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<!--
The default behavior of JSF is to map the incoming request for a JSF
view identifier (view ID for short) to a JSP file with the file
extension .jsp. To get JSF to look for a Facelets template instead, we
must register the .xhtml extension as the default suffix for JSF views
-->
<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>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>
/WEB-INF/faces-config/application.xml
</param-value>
</context-param>
<context-param>
<param-name>facelets.REFRESH_PERIOD</param-name>
<param-value>2</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>facelets.SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.COMPRESS_STYLE</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.xmlparser.ORDER</param-name>
<param-value>NONE</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.CONTROL_SKINNING</param-name>
<param-value>enable</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.LoadStyleStrategy</param-name>
<param-value>ALL</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.LoadScriptStrategy</param-name>
<param-value>ALL</param-value>
</context-param>
<!-- Seam Filter -->
<!-- (MUST BE 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>
<!-- RichFaces filter -->
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
<init-param>
<description>Set the size limit for uploaded files as attachments in bytes. (max 5MB)</description>
<param-name>maxRequestSize</param-name>
<param-value>5242880</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<listener>
<listener-class>
XX.XXXX.XXX.prs.web.listeners.ResourceInitializationListener</listener-class>
</listener>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<listener>
<listener-class>XX.XXXX.XXX.prs.web.listeners.EJBInjectionListener</listener-class>
</listener>
<!-- Seam Listener-->
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<!-- 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>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
->
Seam Resource Servlet </ servlet-name> ->
org.jboss.seam.servlet.SeamResourceServlet </ сервлет-класс> ->
->
->
Seam Resource Servlet </ servlet-name> ->
/ Шов / ресурс / * </ URL-шаблон> ->
->
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
</web-app>
faces.config
<?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>
<el-resolver>org.jboss.seam.el.SeamELResolver</el-resolver>
<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>
<lifecycle>
<phase-listener>XX.XXXX.XXX.prs.web.listeners.SetFocusListener</phase-listener>
</lifecycle>
<!-- <lifecycle>-->
<!--
<phase-listener>XX.XXXX.XXX.prs.web.listeners.DebugPhaseListener</phase-listener>
-->
<converter>
<converter-for-class>XX.XXXX.XXX.prs.model.Applicant</converter-for-class>
<converter-class>
XX.XXXX.XXX.prs.web.common.converters.ApplicantConverter</converter-class>
</converter>
<validator>
<validator-id>EmailValidator</validator-id>
<validator-class>XX.XXXX.XXX.prs.web.common.validators.EmailValidator</validator-class>
</validator>
</faces-config>
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 debug="true" />
<core:manager concurrent-request-timeout="500"
conversation-timeout="1200000" conversation-id-parameter="cid"
parent-conversation-id-parameter="pid" />
ОБНОВЛЕНИЕ 2:
Эти парни здесь имеют ту же проблему. У них есть внешний проект EAR, содержащий внутренний проект WAR. Они обсуждают, что это может быть связано с тем, как банки оказываются в проектах.
Я использую Maven, и я настроил его для создания «Skinny Wars», который исключает все зависимости jar из внутреннего проекта WAR, так что он остается небольшим по размеру. Все его зависимости содержатся в EAR и используются всеми другими модулями.
Я изменил настройки подключаемого модуля maven-war, чтобы оставить внутри войны специфичные для сети банки (упомянутые в ссылке, такие как 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 в ухе) приложение загружается правильно.
При развертывании WITH jboss-seam-debug.jar в EAR (каталог EAR / lib) приложение не появляется, а ТОЛЬКО на странице отладки со следующим исключением (трассировка стека в конце):
Исключение при обработке запроса:
вызвано
java.lang.IllegalStateException с
сообщение: «Идентификатор фазы не связан с текущим
нить (убедитесь, что у вас нет двух
Экземпляры SeamPhaseListener
установлен) "
Когда "JBoss-izing" тот же EAR (удалите jibernate jar, которые предоставляются JBoss, и переместите все библиотеки из EAR / lib в корень EAR), приложение загружается правильно. ОБА приложение и страница отладки отображаются правильно.
Полная трассировка стека:
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.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)