Шов Jboss: страница Enabling Debug на WebLogic 10.3.2 (11 г)

ПРОПУСТИТЕ ДЛЯ ОБНОВЛЕНИЯ 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 банки находятся в:

  • jboss-seam-debug-2.2.0. GA.jar
  • jboss-el-1.0_02. CR4.jar
  • jboss-seam-2.2.0. GA.jar

Моя текущая конфигурация:



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)

5
задан Markos Fragkakis 12 April 2010 в 13:19
поделиться

3 ответа

Причина, по которой страница отладки 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.

2
ответ дан 14 December 2019 в 19:09
поделиться

Вы получаете следующее исключение

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

Прежде всего, у вас есть приложение для ушей. Прежде чем продолжить

Каждый 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>

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. Поехали

Вы хотите включить страницу отладки

Страница отладки 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)

http://127.0.0.1:8080/pureCharger/debug.xhtml

И снова

Если вы действительно хотите избежать много головной боли, используйте seam-gem

UPDATE

Является ли ваш проект ear КАК ПОКАЗАНО Свыше ???? УБЕДИТЕСЬ, что ваша папка war lib НЕ СОДЕРЖИТ никакого файла jboss-seam.jar. Вы сказали

Я открыл .ear и следующие банки jboss находятся в:

  • jboss-seam-debug-2.2.0.GA.jar (неправильно) Он должен быть помещен в папку WEB-INF/lib военного файла
  • jboss-el-1.0_02.CR4. jar (неправильно) Он должен быть помещен в папку lib файла ear
  • jboss-seam-2.2.0.GA.jar (правильно) Но он должен быть объявлен в файле ear META-INF/application.xml

Здесь вы можете увидеть хороший учебник по 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

с уважением,

3
ответ дан 14 December 2019 в 19:09
поделиться

Что вы имеете в виду, страницу отладки? Вы имеете в виду страницу отладки стыка по умолчанию? Что такое 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
0
ответ дан 14 December 2019 в 19:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: