[jboss-user] [JBoss Seam] - seam cannot reference EJB, why?

hsiung do-not-reply at jboss.com
Thu Apr 26 11:08:01 EDT 2007


Hi
I want to refer to an EJB from JSF without backing bean in the web container, but I got the following exception:
javax.faces.el.PropertyNotFoundException: Error testing property 'departureAirport' in bean of type null
my JSP refer to the EJB and looks like this
<h:inputText id="departureAirportInput" value="#{bookingBean.departureAirport}">
my EJB is specified as Seam component and looks like this
@Stateful
  | @Name("bookingbean")
  | @Local(Booking.class)
  | public class BookingBean implements Booking, Serializable{
  | ..
  |  private String departureAirport;
  | ..
  |     public String getDepartureAirport() {
  |         return departureAirport;
  |     }
  |     
  |     public void setDepartureAirport(String departureAirport) {
  |         this.departureAirport = departureAirport;
  |     }
  | ..
My faces.config integrates Seam in JSF and looks like this
<faces-config >
  |      <lifecycle>
  |      <phase-listener>org.jboss.seam.jsf.SeamPhaseListener</phase-listener>
  |     </lifecycle>
  | ..

My components.xml configure Seam in JSF and looks like this
<?xml version="1.0" encoding="UTF-8"?>
  | <components xmlns="http://jboss.com/products/seam/components"
  |             xmlns:core="http://jboss.com/products/seam/core"
  |             xmlns:security="http://jboss.com/products/seam/security"
  |             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |             xsi:schemaLocation=
  |                 "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.2.xsd
  |                  http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.2.xsd
  |                  http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd">
  | 
  |     <core:init jndi-name="#{ejbName}/local" />      
  | 
  |     <core:manager conversation-timeout="120000"
  |                   concurrent-request-timeout="500"
  |                   conversation-id-parameter="cid"
  |                   conversation-is-long-running-parameter="clr"/>
  | 
  |    <!-- <core:transactionListener/>       -->
  | 
  |     <!--<core:ejb installed="@embeddedEjb@"/>    -->
  | 
  |     <security:identity authenticate-method="#{authenticator.authenticate}"/>
  | 
  | </components>
My web.xml integrates Seam in JSF and enables Seam exception handling and looks like this
<web-app..
  | <listener>
  |         <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
  |     </listener>
  | 
  |     <servlet>
  |         <servlet-name>Seam Resource Servlet</servlet-name>
  |         <servlet-class>org.jboss.seam.servlet.ResourceServlet</servlet-class>
  |     </servlet>
  | 
  |     <servlet-mapping>
  |         <servlet-name>Seam Resource Servlet</servlet-name>
  |         <url-pattern>/seam/resource/*</url-pattern>
  |     </servlet-mapping>
  | 
  |     <filter>
  |         <filter-name>Seam Filter</filter-name>
  |         <filter-class>org.jboss.seam.web.SeamFilter</filter-class>
  |     </filter>
  | 
  |     <filter-mapping>
  |         <filter-name>Seam Filter</filter-name>
  |         <url-pattern>/*</url-pattern>
  |     </filter-mapping>
  | ..
  | </web-app>
The ejb.jar declares the Seam interceptor and register it to the EJB and look like this
<?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>

What is my mistake?

Note that I can refer to the EJB from JSF using the standard EJB lookup mechanism either local or remote. I use JBoss 4.0.5, JSF 1.0, EJB 3.0 and Seam 1.2.1GA.

The whole stack trace looks like this

  | 23:43:17,521 ERROR [ProcessValidationsPhase] Error testing property 'departureAirport' in bean of type null
  | javax.faces.el.PropertyNotFoundException: Error testing property 'departureAirport' in bean of type null
  |         at com.sun.faces.el.PropertyResolverImpl.getType(PropertyResolverImpl.java:342)
  |         at com.sun.faces.el.impl.ArraySuffix.getType(ArraySuffix.java:240)
  |         at com.sun.faces.el.impl.ComplexValue.getType(ComplexValue.java:208)
  |         at com.sun.faces.el.ValueBindingImpl.getType(ValueBindingImpl.java:338)
  |         at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:111)
  |         at javax.faces.component.UIInput.getConvertedValue(UIInput.java:702)
  |         at javax.faces.component.UIInput.validate(UIInput.java:627)
  |         at javax.faces.component.UIInput.executeValidate(UIInput.java:838)
  |         at javax.faces.component.UIInput.processValidators(UIInput.java:412)
  |         at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:904)
  |         at javax.faces.component.UIForm.processValidators(UIForm.java:170)
  |         at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:904)
  |         at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:342)
  |         at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:78)
  |         at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
  |         at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
  |         at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         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.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
  |         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)
  | 23:43:17,521 ERROR [ExceptionFilter] uncaught exception
  | javax.servlet.ServletException: Error testing property 'departureAirport' in bean of type null
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
  |         at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         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.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
  |         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)
  | 23:43:17,531 ERROR [ExceptionFilter] exception root cause
  | javax.faces.el.PropertyNotFoundException: Error testing property 'departureAirport' in bean of type null
  |         at com.sun.faces.el.PropertyResolverImpl.getType(PropertyResolverImpl.java:342)
  |         at com.sun.faces.el.impl.ArraySuffix.getType(ArraySuffix.java:240)
  |         at com.sun.faces.el.impl.ComplexValue.getType(ComplexValue.java:208)
  |         at com.sun.faces.el.ValueBindingImpl.getType(ValueBindingImpl.java:338)
  |         at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:111)
  |         at javax.faces.component.UIInput.getConvertedValue(UIInput.java:702)
  |         at javax.faces.component.UIInput.validate(UIInput.java:627)
  |         at javax.faces.component.UIInput.executeValidate(UIInput.java:838)
  |         at javax.faces.component.UIInput.processValidators(UIInput.java:412)
  |         at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:904)
  |         at javax.faces.component.UIForm.processValidators(UIForm.java:170)
  |         at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:904)
  |         at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:342)
  |         at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:78)
  |         at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
  |         at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
  |         at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         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.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
  |         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)
  | 23:43:17,621 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
  | javax.faces.el.PropertyNotFoundException: Error testing property 'departureAirport' in bean of type null
  |         at com.sun.faces.el.PropertyResolverImpl.getType(PropertyResolverImpl.java:342)
  |         at com.sun.faces.el.impl.ArraySuffix.getType(ArraySuffix.java:240)
  |         at com.sun.faces.el.impl.ComplexValue.getType(ComplexValue.java:208)
  |         at com.sun.faces.el.ValueBindingImpl.getType(ValueBindingImpl.java:338)
  |         at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:111)
  |         at javax.faces.component.UIInput.getConvertedValue(UIInput.java:702)
  |         at javax.faces.component.UIInput.validate(UIInput.java:627)
  |         at javax.faces.component.UIInput.executeValidate(UIInput.java:838)
  |         at javax.faces.component.UIInput.processValidators(UIInput.java:412)
  |         at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:904)
  |         at javax.faces.component.UIForm.processValidators(UIForm.java:170)
  |         at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:904)
  |         at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:342)
  |         at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:78)
  |         at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
  |         at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
  |         at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         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.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
  |         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)
  | 

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

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



More information about the jboss-user mailing list