I'm not sure if this is an AOP issue or just a generic classloading issue, but I think
I have my MBeans set up correctly.
Here's the error:
| java.lang.NoClassDefFoundError
| at java.lang.Class.forName0(Native Method)
| at java.lang.Class.forName(Class.java:141)
| at org.jboss.resource.pool.JCPool.start(JCPool.java:65)
Which points to my MBean code:
public void start() throws Exception {
| for (int i = 0; i < size; i++) {
| v.add(Class.forName(poolType));
| System.out.println("Added " + poolType);
| }
| used = new boolean[v.size()];
| }
And here's my jboss-service.xml:
<server>
| <classpath codebase="deploy" archives="jcaopool_java.jar" />
|
| <mbean code="org.jboss.resource.pool.JCPool"
name="jboss.jca:service=GenericPool">
| <attribute name="PoolType">org.jboss.resource.pool.JavaClient</attribute>
| <attribute name="Size">4</attribute>
| </mbean>
| <depends>service=AspectDeployer</depends>
| </server>
Here's where the AOP comes in. I'm trying to intercept the construction of an object
and return a JavaClient from my pooling MBean:
public class JavaClient {
|
| /**
| *
| */
| public JavaClient() {
| super();
| }
|
| public void close() {
|
| }
|
| }
So here's my two Interceptors, first ConstructorInterceptor:
public Object invoke(Invocation invocation) throws Throwable {
| try {
|
| // Get JMX
| MBeanServer server = MBeanServerLocator.locateJBoss();
| ObjectName name = new
ObjectName("jboss.jca:service=GenericPool");
| String s = (String) server.getAttribute(name, "instance");
| return s;
| } finally {
| System.out.println(">>> Leaving MethodInterceptor");
| }
| }
And CloseInterceptor,
| public Object invoke(Invocation invocation) throws Throwable {
| try {
| Object o = invocation.targetObject;
| Object[] os = {o};
|
| // Get JMX
| MBeanServer server = MBeanServerLocator.locateJBoss();
| ObjectName name = new
ObjectName("jboss.jca:service=GenericPool");
| String s = (String) server.invoke(name, "returnInstance", os,
new String[] {Object.class.getName()});
| return s;
| } finally {
| System.out.println(">>> Leaving CloseInterceptor");
| }
| }
And finally my jboss-aop.xml:
<?xml version="1.0" encoding="UTF-8"?>
| <aop>
|
| <bind pointcut="execution(org.jboss.resource.pool.JavaClient->new())">
| <interceptor class="org.jboss.resource.pool.ConstructorInterceptor"/>
| </bind>
|
| <bind pointcut="execution(public void
org.jboss.resource.pool.JavaClient->close())">
| <interceptor class="org.jboss.resource.pool.CloseInterceptor"/>
| </bind>
|
| </aop>
|
The thing is, the
points to the jar that has my already-AOPC'ed classes.
Is there something obvious I'm missing? Am I getting the deploy order wrong? I added
the service=AspectDeployer to see if that was missing, but thinking about it, it
shouldn't really matter if the deployer hasn't started if the classes are already
pre-compiled.
Thanks for any ideas. I'm still using JB4DR2 and AOP beta1. Congrats on Beta2 as well.
Very cool stuff!
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3835925#3835925
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3835925
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
JBoss-Development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development