CVS Seam and Injecting Stateful Session Beans
js8523 Dec 21, 2005 12:36 PMHi All
I am using the current version of Seam from CVS.
I am trying to reproduce the crud code (generated from tool) in my application.
Whenever I try to inject a Stateful session bean using (@In) I get the following error:
SEVERE: Error Rendering View
javax.faces.el.EvaluationException: /showsite.xhtml @23,65 value="#{siteEditor.instance.name}": $Proxy113
at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:60)
at javax.faces.component.UIOutput.getValue(UIOutput.java:75)
at org.apache.myfaces.renderkit.RendererUtils.getStringValue(RendererUtils.java:225)
at org.apache.myfaces.renderkit.html.HtmlTextRendererBase.renderInput(HtmlTextRendererBase.java:131)
at org.apache.myfaces.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:331)
at com.sun.facelets.FaceletViewHandler.encodeRecursive(FaceletViewHandler.java:521)
at com.sun.facelets.FaceletViewHandler.encodeRecursive(FaceletViewHandler.java:518)
at com.sun.facelets.FaceletViewHandler.encodeRecursive(FaceletViewHandler.java:518)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:447)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:300)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:95)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:44)
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:81)
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.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
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:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
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: Bean: $Proxy113, property: instance
at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:404)
at org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:71)
at com.sun.facelets.el.LegacyELContext$LegacyELResolver.getValue(LegacyELContext.java:137)
at com.sun.el.parser.AstValue.getValue(AstValue.java:96)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:183)
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:56)
... 33 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:400)
... 39 more
Caused by: java.lang.IllegalArgumentException: could not inject: siteEditor.contractOperations
at org.jboss.seam.Component.setFieldValue(Component.java:872)
at org.jboss.seam.Component.injectFields(Component.java:706)
at org.jboss.seam.Component.inject(Component.java:564)
at org.jboss.seam.interceptors.BijectionInterceptor.bijectTargetComponent(BijectionInterceptor.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:13)
at org.jboss.seam.interceptors.Interceptor.aroundInvoke(Interceptor.java:81)
at org.jboss.seam.interceptors.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
at org.jboss.seam.interceptors.ConversationInterceptor.endOrBeginLongRunningConversation(ConversationInterceptor.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:13)
at org.jboss.seam.interceptors.Interceptor.aroundInvoke(Interceptor.java:81)
at org.jboss.seam.interceptors.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
at org.jboss.seam.interceptors.BusinessProcessInterceptor.manageBusinessProcessContext(BusinessProcessInterceptor.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:13)
at org.jboss.seam.interceptors.Interceptor.aroundInvoke(Interceptor.java:81)
at org.jboss.seam.interceptors.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
at org.jboss.seam.interceptors.RemoveInterceptor.removeIfNecessary(RemoveInterceptor.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:13)
at org.jboss.seam.interceptors.Interceptor.aroundInvoke(Interceptor.java:81)
at org.jboss.seam.interceptors.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
at org.jboss.seam.ejb.SeamInterceptor.aroundInvoke(SeamInterceptor.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:79)
at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:65)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor.invoke(ExtendedPersistenceContextPropagationInterceptor.java:44)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:32)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(M
17:27:06,532 INFO [STDOUT] ethodInvocation.java:98)
at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:133)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.aspects.tx.TxPolicy.invokeInNoTx(TxPolicy.java:53)
at org.jboss.aspects.tx.TxInterceptor$NotSupported.invoke(TxInterceptor.java:79)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:63)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:32)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:91)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:136)
at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:83)
at $Proxy113.getInstance(Unknown Source)
... 44 more
Caused by: java.lang.IllegalArgumentException
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
at java.lang.reflect.Field.set(Field.java:656)
at org.jboss.seam.Component.setFieldValue(Component.java:868)
... 106 moreThe two session beans in question are:
@Stateful
@Name("siteEditor")
@Interceptor(SeamInterceptor.class)
public class SiteEditor implements ISiteEditor {
private static final long serialVersionUID = 1658701032472430834L;
@In(create=true)
private EntityManager em;
@In(required=false)
ContractOperations contractOperations;
private Contract instance = new Contract();
@TransactionAttribute(NOT_SUPPORTED)
public Contract getInstance() {
return instance;
}
public void setInstance(Contract instance) {
this.instance = instance;
}
private boolean isNew = true;
@TransactionAttribute(NOT_SUPPORTED)
public boolean isNew() {
return isNew;
}
public void setNew(boolean isNew) {
this.isNew = isNew;
}
@Begin
//@IfInvalid(outcome=Outcome.REDISPLAY)
public String create() {
em.persist(instance);
isNew = false;
return "edit";
}
//@IfInvalid(outcome=Outcome.REDISPLAY)
public String update() {
return "edit";
}
@End
public String delete() {
em.remove(instance);
if (contractOperations!=null) contractOperations.find();
return "find";
}
@End
public String done() {
if (!isNew) em.refresh(instance);
if (contractOperations!=null) contractOperations.find();
return "find";
}
@Destroy @Remove
public void destroy() {}
}
and
@Stateful
@Name("contractOperations")
@Scope(ScopeType.SESSION)
@Interceptor(SeamInterceptor.class)
public class ContractOperations implements IContractOperations {
@In(create=true)
private EntityManager em;
@DataModel
private List<Contract> contracts;
@DataModelSelection
private Contract selectedcontract;
/**
* @see uk.com.millwood.view.IContractOperations#find()
*/
@SuppressWarnings("unchecked")
@Factory("contracts")
public void find() {
contracts = em.createQuery("from Contract c order by c.id").getResultList();
}
/* (non-Javadoc)
* @see uk.com.millwood.view.IContractOperations#createContract()
*/
public String createContract() {
return "createContract";
}
/**
* @see uk.com.millwood.view.IContractOperations#deleteContract()
*/
public String deleteContract() {
em.remove(selectedcontract);
find();
return "viewcontracts";
}
@Begin
public String editContract(){
//siteEditor.setInstance( em.merge(selectedcontract) );
//siteEditor.setNew(false);
return "showsite";
}
/* (non-Javadoc)
* @see uk.com.millwood.view.IContractOperations#listContracts()
*/
public String listContracts() {
return "viewcontracts";
}
/* (non-Javadoc)
* @see uk.com.millwood.view.IContractOperations#done()
*/
public String done() {
return "viewcontracts";
}
@Destroy @Remove
public void destroy() {
}
/**
* @see uk.com.millwood.view.IContractOperations#getContracts()
*/
public List<Contract> getContracts() {
return contracts;
}
}
I tried to debug the error but I got to the following line in Component.java
field.set(bean, value);
in Componet.setFieldValue
and then obviously I get the throwable. I checked all the instances and it finds the contractOperations wrapped instance, but it stil throws the above exception.
If anybody could help I would be very appreciative as I am kind of stuck on this.
I am using todays CVS version of Seam with Jboss 4.0.3SP1. I have even upgraded all relevant hibernate parts to the latest available.
Thanks
James