[jboss-user] [Clustering/JBoss] - JBoss NullPointerException when custom Interceptor is being

azheludkov do-not-reply at jboss.com
Mon Jan 28 11:30:59 EST 2008


Hi everybody, 

I already published this question in previous topic http://www.jboss.com/index.html?module=bb&op=viewtopic&t=128146  but did not received any responses.


Does anybody have any idea why it happens?

According to FAQ http://wiki.jboss.org/wiki/Wiki.jsp?page=ClusteringFAQ in order to get load balancing I created my custom InvokerInterceptor and modified standardjboss.xml to replace JBoss's invoker by my custom one.
Load balancing works almost fine, but sometimes when my client makes ejb calls via threads I'm getting exceptions like this. 

java.lang.NullPointerException
	at org.jboss.invocation.unified.interfaces.UnifiedInvokerHAProxy.invoke(UnifiedInvokerHAProxy.java:186)
	at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:365)
	at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:197)
	at org.jboss.proxy.ejb.RetryInterceptor.invoke(RetryInterceptor.java:176)
	at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
	at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)
	at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)
	at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
	at $Proxy74.submitJob(Unknown Source)
	at com.framework.system.cluster.ClusterJobSubmitter$RunInThread.run(ClusterJobSubmitter.java:111)
	at java.lang.Thread.run(Thread.java:595)


It looks like client fails to get through a chain of interceptors.

Here is a code: 
1. Custom Invoker (Jar with compiled invoker was placed in jboss-4.2.2.GA\server\all\lib). 

package com.framework.jboss; 
import org.jboss.invocation.*; 
public class CustomInvokerInterceptor extends InvokerInterceptor { 
public boolean hasLocalTarget(Invocation invocation) { 
return false; 
} 
} 

2. Modified piece of standardjboss.xml 

<invoker-proxy-binding> 
clustered-stateless-unified-invoker 
<invoker-mbean>jboss:service=invoker,type=unifiedha</invoker-mbean> 
<proxy-factory>org.jboss.proxy.ejb.ProxyFactoryHA</proxy-factory> 
<proxy-factory-config> 
<client-interceptors> 

org.jboss.proxy.ejb.HomeInterceptor 
org.jboss.proxy.SecurityInterceptor 
org.jboss.proxy.TransactionInterceptor 
org.jboss.proxy.ejb.SingleRetryInterceptor 
<interceptor call-by-value="false">org.jboss.invocation.InvokerInterceptor 
<interceptor call-by-value="true">org.jboss.invocation.MarshallingInvokerInterceptor 


org.jboss.proxy.ejb.StatelessSessionInterceptor 
org.jboss.proxy.SecurityInterceptor 
org.jboss.proxy.TransactionInterceptor 
org.jboss.proxy.ejb.SingleRetryInterceptor 
<interceptor call-by-value="false"> com.framework.jboss.CustomInvokerInterceptor 
<interceptor call-by-value="true">org.jboss.invocation.MarshallingInvokerInterceptor 

</client-interceptors> 
</proxy-factory-config> 
</invoker-proxy-binding> 

3. Client's code snippet: 

public class ClusterJobSubmitter { 

private JobSubmitterHome m_home = null; // ejb home 
. . . . . . 
public void runJob(Ticket jt) throws Exception { 
synchronized (this){ 
if (m_home==null) { 
createEjbHome(); 
} 
} 
RunInThread runner = new RunInThread(jt); 
Thread thread = new Thread(runner); 
thread.start(); 
} 

class RunInThread implements Runnable { 
Ticket m_jt=null; 

public RunInThread(Ticket jt) { 
m_jt= jt; 
} 

public void run() { 
JobSubmitter execute = null; \\ ejb remote stab 
try { 
synchronized (m_home){ 
execute = (JobSubmitter) m_home.create(); 
} 
execute.submitJob(m_jt); 
} catch (Exception ex) { 
ex.printstacktrace(); 
} 
} 
} 
}


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4124117#4124117

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4124117



More information about the jboss-user mailing list