[jboss-user] [EJB 3.0] - Re: interceptor metadata issue
tterm
do-not-reply at jboss.com
Tue Oct 3 03:38:24 EDT 2006
The interceptors (org.jboss.aop.advice.Interceptor) are requested during an ejb3 method call. The client side interceptor code is the following:
public class ExampleClientInterceptor implements Interceptor, Serializable {
| private static Logger logger = Logger.getLogger(ExampleClientInterceptor.class);
|
| public String getName() {
| return "ExampleClientInterceptor";
| }
|
| public Object invoke(Invocation invocation) throws Throwable {
| logger.debug("Client: request");
| SimpleMetaData metaData = invocation.getMetaData();
| metaData.addMetaData("tag", "attr", "Hello JBoss;-)");
| Object obj = invocation.invokeNext();
| logger.debug("Client: response");
| return obj;
| }
| }
If I do an EJB3 request I get allways this exception:
| java.lang.ClassCastException: org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput
| org.jboss.aop.util.MarshalledValue.writeExternal(MarshalledValue.java:190)
| org.jboss.serial.persister.ExternalizePersister.writeData(ExternalizePersister.java:58)
| org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.jav
| a:275)
| org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:3
| 86)
| org.jboss.aop.metadata.SimpleMetaData.writeExternal(SimpleMetaData.java:226)
| org.jboss.serial.persister.ExternalizePersister.writeData(ExternalizePersister.java:58)
| org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.jav
| a:275)
| org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:3
| 86)
| org.jboss.aop.joinpoint.MethodInvocation.writeExternal(MethodInvocation.java:321)
| org.jboss.serial.persister.ExternalizePersister.writeData(ExternalizePersister.java:58)
| org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.jav
| a:275)
| org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:3
| 86)
| org.jboss.serial.io.MarshalledObjectForLocalCalls.<init>(MarshalledObjectForLocalCalls.java:38)
| org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:53)
| org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
| de.fh_wiesbaden.cs.vs.jboss_ejb3_instrumentation.interceptor.client.ARMRunningClient.invoke(ARMRunn
| ingClient.java:248)
| de.fh_wiesbaden.cs.vs.jboss_ejb3_instrumentation.interceptor.client.ClientARMInterceptor.invoke(Cli
| entARMInterceptor.java:94)
| org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
| de.fh_wiesbaden.cs.vs.jboss_ejb3_instrumentation.interceptor.client.ClientGetCorrelatorFromThreadLo
| calInterceptor.invoke(ClientGetCorrelatorFromThreadLocalInterceptor.java:43)
| org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
| org.jboss.ejb3.stateless.StatelessClusteredProxy.invoke(StatelessClusteredProxy.java:100)
| $Proxy92.getCategory(Unknown Source)
| de.fh_wiesbaden.cs.vs.xpetstore.web.struts.action.category.CategoryAction.doExecute(CategoryAction.
| java:48)
| de.fh_wiesbaden.cs.vs.xpetstore.web.struts.action.BaseAction.execute(BaseAction.java:78)
| org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:446)
| org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:266)
| org.apache.struts.action.ActionServlet.process(ActionServlet.java:1292)
| org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
| javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
| javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
| de.fh_wiesbaden.cs.vs.xpetstore.web.filter.SignOnFilter.doFilter(SignOnFilter.java:128)
| com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(Unknown Source)
| com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(Unknown Source)
| org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
|
If I set the last parameter (Payload.KEY) for the addMetaData() method to 'AS_IS' then it works fine in jboss-4.0.4 and also 4.0.5. If the default payload key is MARSHALLED then it crashes with the ClassCastException.
Regards,
Thomas Termin
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3975684#3975684
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3975684
More information about the jboss-user
mailing list