14 Replies Latest reply on Jul 11, 2006 1:50 AM by mnrz

    problem with running a Seam application

    mnrz

      hi

      I have a simple application developed by Seam framework, but it has an error when I am going to submit the first page to navigate to another page, the error message as follows:

      --------------------
      ERROR 04-05 11:41:33,328 (Log4JLogger.java:error:119) -Exception in PhaseListen
      er RESTORE_VIEW 1 afterPhase
      java.lang.NullPointerException
      at org.jboss.seam.contexts.PageContext.getAttributeMap(PageContext.java:
      103)
      at org.jboss.seam.contexts.PageContext.(PageContext.java:40)
      at org.jboss.seam.contexts.Lifecycle.resumePage(Lifecycle.java:323)
      at org.jboss.seam.jsf.AbstractSeamPhaseListener.restoreAnyConversationCo
      ntext(AbstractSeamPhaseListener.java:39)
      at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.jav
      a:63)
      at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListener
      sAfter(PhaseListenerManager.java:89)
      at org.apache.myfaces.lifecycle.LifecycleImpl.restoreView(LifecycleImpl.
      java:181)
      at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java
      :66)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:252)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:173)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
      alve.java:213)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
      alve.java:178)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
      ava:126)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
      ava:105)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
      ve.java:107)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
      a:148)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
      :856)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
      ssConnection(Http11Protocol.java:744)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
      int.java:527)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
      lowerWorkerThread.java:80)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
      ool.java:684)
      at java.lang.Thread.run(Thread.java:595)
      ERROR 04-05 11:41:33,375 (Log4JLogger.java:error:119) -Exception in PhaseListen
      er RESTORE_VIEW 1 afterPhase
      java.lang.NullPointerException
      at org.jboss.seam.contexts.PageContext.getAttributeMap(PageContext.java:
      103)
      at org.jboss.seam.contexts.PageContext.(PageContext.java:40)
      at org.jboss.seam.contexts.Lifecycle.resumePage(Lifecycle.java:323)
      at org.jboss.seam.jsf.AbstractSeamPhaseListener.restoreAnyConversationCo
      ntext(AbstractSeamPhaseListener.java:39)
      at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.jav
      a:63)
      at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListener
      sAfter(PhaseListenerManager.java:89)
      at org.apache.myfaces.lifecycle.LifecycleImpl.restoreView(LifecycleImpl.
      java:181)
      at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java
      :66)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:252)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:173)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
      alve.java:213)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
      alve.java:178)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
      ava:126)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
      ava:105)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
      ve.java:107)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
      a:148)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
      :856)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
      ssConnection(Http11Protocol.java:744)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
      int.java:527)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
      lowerWorkerThread.java:80)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
      ool.java:684)
      at java.lang.Thread.run(Thread.java:595)
      ERROR 04-05 11:41:33,375 (Log4JLogger.java:error:119) -Servlet.service() for se
      rvlet Faces Servlet threw exception
      java.lang.NullPointerException
      at com.sun.faces.application.ViewHandlerImpl.findMatch(ViewHandlerImpl.j
      ava:409)
      at com.sun.faces.application.ViewHandlerImpl.calculateLocale(ViewHandler
      Impl.java:335)
      at org.jboss.seam.jsf.SeamViewHandler.calculateLocale(SeamViewHandler.ja
      va:25)
      at com.sun.faces.application.ViewHandlerImpl.createView(ViewHandlerImpl.
      java:283)
      at org.jboss.seam.jsf.SeamViewHandler.createView(SeamViewHandler.java:43
      )
      at org.apache.myfaces.lifecycle.LifecycleImpl.restoreView(LifecycleImpl.
      java:144)
      at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java
      :66)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:252)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:173)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
      alve.java:213)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
      alve.java:178)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
      ava:126)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
      ava:105)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
      ve.java:107)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
      a:148)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
      :856)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
      ssConnection(Http11Protocol.java:744)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
      int.java:527)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
      lowerWorkerThread.java:80)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
      ool.java:684)
      at java.lang.Thread.run(Thread.java:595)
      ---------------------

      I am using Tomcat version 5.5.9.

      please help me out, this problem really confused me.

      thank you in advance.

      regards

        • 1. Re: problem with running a Seam application
          bfo81

          J2EE Exceptions for themselves are not very informative (that's why debugging really s....). Please post some of your code ;).

          • 2. Re: problem with running a Seam application
            mnrz

            Hi

            Ok
            this is the code that implements the listener interface:
            -----------------------------
            package com.payvand.seam;

            import java.util.List;
            import javax.ejb.Stateless;
            import javax.persistence.EntityManager;
            import javax.persistence.PersistenceContext;

            import org.hibernate.validator.Valid;
            import org.jboss.seam.annotations.In;
            import org.jboss.seam.annotations.Name;
            import org.jboss.seam.core.FacesMessages;

            @Stateless
            @Name("regis")
            public class SessionAction implements Listeners{

            @In @Valid
            private User user;

            @PersistenceContext
            private EntityManager em;

            public String register() {
            // TODO Auto-generated method stub
            List listUser=em.createQuery("select username from User where username=:username")
            .setParameter("username",user.getUserName()).getResultList();
            if(listUser.size()==0){
            em.persist(user);
            return "/register.jsp";
            }
            else
            {
            FacesMessages.instance().add("User #{user.username} already exists");
            return null;
            }

            }

            }
            -----------------
            this is the component.xml file :




            false
            #{ejbName}/local






            ----------
            here is my ejb-jar.xml:

            <ejb-jar>
            <assembly-descriptor>
            <interceptor-binding>
            <ejb-name>*</ejb-name>
            <interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
            </interceptor-binding>
            </assembly-descriptor>
            </ejb-jar>
            ---
            and this is persistence.xml:


            <persistence-unit name="userDatabase">
            org.hibernate.ejb.HibernatePersistence
            <jta-data-source>java:/DefaultDS</jta-data-source>



            </persistence-unit>

            ---
            and finally this is the JSP file:

            <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
            <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
            <%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %>


            <f:view>
            <h:form>

            <s:validateAll>

            Username
            <h:inputText value="#{user.userName}" required="true">


            Password
            <h:inputSecret value="#{user.pass}" required="true">


            </s:validateAll>

            <h:messages/>
            <h:commandButton type="submit" value="Listeners" action="#{regis.register}">
            </h:form>

            </f:view>






            • 3. Re: problem with running a Seam application
              mnrz

              hi
              I thinks the problem is about the register.seam, in the index.jsp there is a link refer to register.seam. when I try to display the page by specifying the http://..../register.jsp, the browser going to display the page but an error occured because of the jsf tags, it says dosnt know those tags. but when I try to show the page in form : http://..../register.seam the following error has been displayed:
              ----------
              java.lang.NullPointerException
              com.sun.faces.application.ViewHandlerImpl.findMatch(ViewHandlerImpl.java:409)
              com.sun.faces.application.ViewHandlerImpl.calculateLocale(ViewHandlerImpl.java:335)
              org.jboss.seam.jsf.SeamViewHandler.calculateLocale(SeamViewHandler.java:25)
              com.sun.faces.application.ViewHandlerImpl.createView(ViewHandlerImpl.java:283)
              org.jboss.seam.jsf.SeamViewHandler.createView(SeamViewHandler.java:43)
              org.apache.myfaces.lifecycle.LifecycleImpl.restoreView(LifecycleImpl.java:144)
              org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:66)
              javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)

              • 4. Re: problem with running a Seam application
                bfo81

                Why is <s:validateAll> empty in the JSP? Maybe you should put the rest (from username to commandButton) in it.

                • 5. Re: problem with running a Seam application
                  mnrz

                  No it was some tag nested in that but I removed them to see if problem resolved.
                  if I remove the tag <s:validateAll> nothing will resolve.

                  as I figured out, it never reach to that page, I think the server cant find that jsp page to show the page, may be something's wrong with url-patterns. the error occured before reach to that jsp file.

                  thanks

                  • 6. Re: problem with running a Seam application
                    gavin.king

                    Show your web.xml

                    • 7. Re: problem with running a Seam application
                      mnrz

                      Hi Gavin
                      here is my web.xml

                      ----------------
                      <?xml version="1.0" encoding="UTF-8"?>
                      <web-app version="2.4"
                      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-app_2_4.xsd">


                      <!-- Seam -->


                      <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>



                      <filter-name>Seam Redirect Filter</filter-name>
                      <filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>


                      <filter-mapping>
                      <filter-name>Seam Redirect Filter</filter-name>
                      <url-pattern>*.seam</url-pattern>
                      </filter-mapping>

                      <!-- MyFaces -->


                      <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>


                      <context-param>
                      <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
                      <param-value>client</param-value>
                      </context-param>


                      <servlet-name>Faces Servlet</servlet-name>
                      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
                      <load-on-startup>1</load-on-startup>


                      <!-- Faces Servlet Mapping -->
                      <servlet-mapping>
                      <servlet-name>Faces Servlet</servlet-name>
                      <url-pattern>*.seam</url-pattern>
                      </servlet-mapping>

                      </web-app>

                      • 8. Re: problem with running a Seam application
                        mnrz

                        Hi
                        any idea?

                        • 9. Re: problem with running a Seam application
                          mnrz

                           

                          "gavin.king@jboss.com" wrote:
                          Show your web.xml


                          Hi Gavin, Please help me.

                          • 10. Re: problem with running a Seam application
                            gavin.king

                            Looks OK. How about faces-config.xml?

                            • 11. Re: problem with running a Seam application
                              mnrz

                               

                              "gavin.king@jboss.com" wrote:
                              Looks OK. How about faces-config.xml?


                              this is my faces-config.xml

                              <?xml version="1.0" encoding="UTF-8"?>
                              <!DOCTYPE faces-config
                              PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
                              "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
                              <faces-config>

                              <!-- Phase listener needed for all Seam applications -->


                              <phase-listener>org.jboss.seam.jsf.SeamPhaseListener</phase-listener>


                              </faces-config>
                              ------------------
                              component.xml




                              false
                              #{ejbName}/local





                              ---------
                              this is the code between body tag of index.jsp

                              Welcome to TestSeam

                              <table border=0>

                              Register


                              ----
                              there is a link to a page namely register.jsp inside a folder with the name "pages"

                              the first page works properly but when I click on the link the exception occurs.

                              • 12. Re: problem with running a Seam application
                                mnrz

                                 

                                "gavin.king@jboss.com" wrote:
                                Looks OK. How about faces-config.xml?


                                this is my faces-config.xml
                                <?xml version="1.0" encoding="UTF-8"?>
                                <!DOCTYPE faces-config
                                PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
                                 "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
                                <faces-config>
                                
                                 <!-- Phase listener needed for all Seam applications -->
                                
                                 <lifecycle>
                                 <phase-listener>org.jboss.seam.jsf.SeamPhaseListener</phase-listener>
                                 </lifecycle>
                                
                                </faces-config>
                                

                                ------------------
                                component.xml
                                <components>
                                
                                 <component name="org.jboss.seam.core.init">
                                 <property name="myFacesLifecycleBug">false</property>
                                 <property name="jndiPattern">#{ejbName}/local</property>
                                 </component>
                                
                                 <component class="org.jboss.seam.core.Ejb"
                                 installed="true"/>
                                
                                </components>
                                

                                ---------
                                this is the code between body tag of index.jsp
                                 <p>Welcome to TestSeam</p>
                                 <table border=0>
                                 <tr>
                                 <td><a href="pages/register.seam">Register</a></td></td>
                                 </tr>
                                 </table>
                                

                                ----
                                there is a link to a page namely register.jsp inside a folder with the name "pages"

                                the first page works properly but when I click on the link the exception occurs.

                                • 13. Re: problem with running a Seam application
                                  gavin.king

                                  What version of myfaces are you using?

                                  • 14. Re: problem with running a Seam application
                                    mnrz

                                    Hi
                                    I am using myface1.1.3, all the jar files are the same in downloaded Seam framework.