Inteceptor not being called
andrewboyd Mar 29, 2004 4:16 PMHi all,
I have a class that extends ServiceMBean that has an Inteceptor
that extends AbstractInceptor that never seems to get called.
MBean Class:
public interface ParsingAgentMBean extends org.jboss.system.ServiceMBean {
com.digitalreasoning.kdas.Message parse(com.digitalreasoning.kdas.Message msg) ;
jboss-service.xml:
<mbean code="com.clarity.cpin.agent.ParsingAgent" name="drs.kafe:type=LocalAgent,name=ParsingAgent"> <depends>drs.kafe:type=Host,name=Host</depends> <descriptors> <interceptors> <interceptor code="com.digitalreasoning.kdas.util.rtfConverter.RTFConverterInterceptor"/> </interceptors> <persistence persistPolicy="Never"/> <currencyTimeLimit value="10"/> <state-action-on-update value="keep-running"/> </descriptors> </mbean> <mbean code="com.clarity.cpin.agent.ParsingAgentTester" name="drs.kafe:type=LocalAgent,name=ParsingAgentTester"> <depends>drs.kafe:type=LocalAgent,name=ParsingAgent</depends> </mbean>
I'm calling it just for testing from the startService method in ParsingAgentTester.
calling code:
logger.debug("Starting Service");
ObjectName parseAgentName = new ObjectName(ParsingAgent.OBJECT_NAME_STR);
MessageFactory msgFac = MessageFactory.getMessageFactory(2, new String[]{"dummy1","dummy2"});
Message msg = msgFac.createMessage(null,"This is a message");
System.out.println("Is ParsingAgent registered? : "+mBeanServer.isRegistered(parseAgentName));
logger.debug("Calling ParsingAgent.parse(msg) via MBeanServer");
mBeanServer.invoke(parseAgentName,"parse", new Message[]{msg},
new String[]{Message.class.getName()});
super.startService();
std out:
15:58:37,785 DEBUG [ParsingAgentTester] Starting
15:58:37,785 DEBUG [ParsingAgentTester] Starting Service
15:58:38,035 INFO [STDOUT] Is ParsingAgent registered? : true
15:58:38,035 DEBUG [ParsingAgentTester] Calling ParsingAgent.parse(msg) via MBeanServer
...snip... // print outs that show parse is working as it should
15:58:38,045 ERROR [ParsingAgentTester] Starting failed
RuntimeMBeanException: RuntimeException in MBean operation 'parse(com.digitalreasoning.kdas.Message)'
Cause: java.lang.NullPointerException
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:299)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
at com.clarity.cpin.agent.ParsingAgentTester.startService(ParsingAgentTester.java:47)
at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:192)
at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:976)
at $Proxy14.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:394)
I've put print outs that is called from the constructors of the inteceptor:
public class RTFConverterInterceptor extends AbstractInterceptor{
private RTFParser converter;
public RTFConverterInterceptor(){
super();
createConverter();
}
public RTFConverterInterceptor(String s){
super(s);
createConverter();
}
public RTFConverterInterceptor(MBeanInfo mBeanInfo, MBeanInvoker mBeanInvoker){
super(mBeanInfo, mBeanInvoker);
createConverter();
}
public Object invoke(Invocation invocation) throws InvocationException{
String opName = invocation.getName();
System.out.println("RTFConverterInterceptor opName : "+opName);
// If this is not the invoke(Invocation) op just pass it along
if(opName.equals("invoke") == false){
return getNext().invoke(invocation);
}
Object[] args = invocation.getArgs();
// Do our stuff here.
//converter.reinitialize();
return getNext().invoke(invocation);
}
private void createConverter(){
System.out.println("Creating RTFConverter");
converter = RTFParser.createParser(new InputStreamReader(System.in));
}
}
The stack trace does not show any indication of the inteceptor and there
is no output from it. I have a feeling the NPE probably hase something
to do with the missing inteceptor.
Any Suggestions?
Thanks,
Andrew