Hello Clebert,
so now let's come to the details and sorry for the long response time. I have a lot to
do at the moment.
The interceptors 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;
| }
| }
You can see I just add a simple string to the metadata which should be read later from the
server side interceptor. The server side interceptor has the following code:
public class ExampleServerInterceptor implements Interceptor{
| private static Logger logger = Logger.getLogger(ExampleServerInterceptor.class);
|
| public String getName(){
| return "ExampleServerInterceptor";
| }
|
| public Object invoke(Invocation invocation) throws Throwable{
| logger.debug("Server: request");
| SimpleMetaData metaData = invocation.getMetaData();
| String str = (String)metaData.getMetaData("tag", "attr");
| logger.debug("Output from metaData: " + str);
| Object obj = invocation.invokeNext();
| logger.debug("Server: response");
| return obj;
| }
| }
The interceptors are both registerded in the ejb3-interceptors-aop.xml which looks like
the following:
| <aop>
| <interceptor class="de.example.ExampleClientInterceptor"
scope="PER_VM"/>
| <interceptor class="de.example.ExampleServerInterceptor"
scope="PER_VM"/>
|
| ....
|
| <stack name="StatelessSessionClientInterceptors">
| <interceptor-ref name="de.example.ExampleClientInterceptor"/>
| ...
| </stack>
| ... the same for the other client side stacks like stateful and so on
|
| server side stuff
|
| <domain name="Stateless Bean">
| <bind pointcut="execution(public * *->*(..))">
| <interceptor-ref
name="de.example.ExampleServerInterceptor"/>
| ...
| </domain>
|
| ... the same for the other session bean stuff
|
| </aop>
|
So if you invoke an ejb3 method then you get allways the exception I described before and
you will never come to the server side interceptor. I don't know if I do something
wrong here but as I said before it works fine until JBoss4.0.3SP1.
It would be very nice if we could sorting out this things because I need it to finish an
performance instrumentation project.
You can download the test project described before from
http://www.strace.org/~tterm/jboss-testcase.zip (You can contact me private if you use
this domain and put the username before the @ sign). If you need an ejb project for
testing this things I can give you also an test project. Just let me know.
Thanks in advance.
Thomas Termin
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3972138#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...