[jboss-user] [JBoss Seam] - Base is null Error.

xterm do-not-reply at jboss.com
Fri Nov 10 05:29:31 EST 2006


Greetings,

I'm building a simple Seam application from scratch. However i've ran into an error when trying to access a method in a session bean. Sadly i was unable to debug the error granted i'm fairly new to JBoss Seam.

The application merely retrieves data from the database and lists them using jsf DataTable.

Here's a detailed list of the data i currently have:

application.xml

  |     <display-name>Phone Directory</display-name>
  |     <module>
  |         <web>
  |             <web-uri>phonedir.war</web-uri>
  |             <context-root>/phonedir</context-root>
  |         </web>
  |     </module>
  |     <module>
  |         <ejb>phonedir.ejb3</ejb>
  |     </module>
  |     <module>
  |         <java>jboss-seam.jar</java>
  |     </module>
  | </application>
  | 

components.xml

  | <?xml version="1.0" encoding="utf-8"?>
  | <components>
  |     <component name="org.jboss.seam.core.init">
  |         <property name="jndiPattern">phonedir/#{ejbName}/local</property>
  |     </component>
  | </components>
  | 

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>
  | 

faces-config.xml

  | <faces-config>
  | <lifecycle>
  | <phase-listener>org.jboss.seam.jsf.SeamExtendedManagedPersistencePhaseListener</phase-listener>
  | </lifecycle>
  | </faces-config>
  | 

persistence.xml

  | <persistence>
  |     <persistence-unit name="userDatabase">
  |       <provider>org.hibernate.ejb.HibernatePersistence</provider>
  |       <jta-data-source>java:/PhonedirDS</jta-data-source>
  |       <properties>
  |          <property name="hibernate.hbm2ddl.auto" value="update"/>
  |       </properties>
  |     </persistence-unit>
  | </persistence>
  | 

web.xml

  | <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>
  |         <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
  |     </listener>
  |     <!-- MyFaces -->
  |     <listener>
  |         <listener-class>
  |             org.apache.myfaces.webapp.StartupServletContextListener
  |         </listener-class>
  |     </listener>
  | 
  |     <context-param>
  |         <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  |         <param-value>client</param-value>
  |     </context-param>
  | 
  |     <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>*.seam</url-pattern>
  |     </servlet-mapping>
  | 
  | </web-app>
  | 

Contact entity bean

  | @Entity
  | @Name("contact")
  | @Table(name="phonedir")
  | public class Contact implements Serializable {
  |         private int id;
  |         private String fullName;
  |         private String telephone;
  |         private String extension;
  |         private String company;
  |         private String switchBoard;
  | 
  |         @Id @GeneratedValue
  |         public int getId(){
  |                 return id;
  |         }
  | 
  |         public void setId(int id){
  |                 this.id = id;
  |         }
  | 
  |         public String getFullName(){
  |                 return fullName;
  |         }
  | 
  |         public void setFullName(String fullName){
  |                 this.fullName = fullName;
  |         }
  | 
  |         public String getTelephone(){
  |                 return telephone;
  |         }
  | 
  |         public void setTelephone(String telephone){
  |                 this.telephone = telephone;
  |         }
  | 
  |         public String getExtension(){
  |                 return extension;
  |         }
  | 
  |         public void setExtension(String extension){
  |                 this.extension = extension;
  |         }
  | 
  |         public String getCompany(){
  |                 return company;
  |         }
  | 
  |         public void setCompany(String company){
  |                 this.company = company;
  |         }
  | 
  |         public String getSwitchboard(){
  |                 return switchBoard;
  |         }
  | 
  |         public void setSwitchboard(String switchboard){
  |                 this.switchBoard = switchboard;
  |         }
  | }
  | 

Local interface ContactManager

  | @Local
  | public interface ContactManager {
  |         public String getAllContacts();
  | }
  | 

Stateless bean

  | @Stateless
  | @Name("contactManager")
  | @Interceptors(SeamInterceptor.class)
  | public class ContactManagerBean implements ContactManager{
  |         @Out
  |         private List <Contact> allContacts;
  | 
  |         @PersistenceContext
  |         private EntityManager em;
  | 
  |         public String getAllContacts(){
  |                 System.out.println("Inside method");
  |                 allContacts = em.createQuery("from Contact c").getResultList();
  |                 return null;
  |         }
  | }
  | 

jsf page (omitted headers)

  | <f:view>
  |  <head>
  |   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  |   <title></title>
  |  </head>
  |  <body>
  |         <h:form>
  |                 <h:commandButton type="submit" value="fetch" action="#{contactManager.getAllContacts}"/>
  |         </h:form>
  |         <f:subview id="allContacts" rendered="#{!empty(allContacts)}">
  |                 <f:verbatim>
  |                         <p>List of Contacts:</p>
  |                 </f:verbatim>
  |                 ------- 1
  |                 <h:dataTable value="#{allContacts}" var="contact">
  |                         <h:column>
  |                             <h:outputText value="#{contact.fullName}"/>
  |                         </h:column>
  |                 </h:dataTable>
  |                 ------- 2
  |         </f:subview>
  | 
  |  </body>
  | </f:view>
  | 

-------------

Packaging and deploying the application generates no header. Loading the initial page as well generates no errors. However upon clicking the button. The following error is generated: (Note that the debug statement does not print hence the method was not invoked to begin with.)

anonymous wrote : 
  | 12:05:37,605 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
  | javax.faces.FacesException: Error calling action method of component with id _idJsp0:_idJsp1
  |         at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
  |         at javax.faces.component.UICommand.broadcast(UICommand.java:106)
  |         at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
  |         at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
  |         at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
  |         at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  |         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  |         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
  |         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  |         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  |         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  |         at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  |         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  |         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  |         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
  |         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
  |         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |         at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  |         at java.lang.Thread.run(Thread.java:595)
  | Caused by: javax.faces.el.EvaluationException: Exception while invoking expression #{contactManager.getAllContacts}
  |         at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:165)
  |         at org.jboss.seam.actionparam.ActionParamBindingHelper.invokeTheExpression(ActionParamBindingHelper.java:58)
  |         at org.jboss.seam.actionparam.ActionParamMethodBinding.invoke(ActionParamMethodBinding.java:71)
  |         at org.jboss.seam.actionparam.ActionParamBindingHelper.invokeTheExpression(ActionParamBindingHelper.java:58)
  |         at org.jboss.seam.actionparam.ActionParamMethodBinding.invoke(ActionParamMethodBinding.java:71)
  |         at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:63)
  |         ... 25 more
  | Caused by: javax.faces.el.PropertyNotFoundException: Base is null: contactManager
  |         at org.apache.myfaces.el.ValueBindingImpl.resolveToBaseAndProperty(ValueBindingImpl.java:460)
  |         at org.apache.myfaces.el.MethodBindingImpl.resolveToBaseAndProperty(MethodBindingImpl.java:180)
  |         at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:114)
  |         ... 30 more
  | 

Please advise.



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3984842#3984842

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3984842



More information about the jboss-user mailing list