Didn't someone mention something about new ObjectName was very very expensive call? Can you cache it?
-dain Oleg Nitz wrote: > User: olegnitz > Date: 02/02/11 16:53:35 > > Modified: src/main/org/jboss/invocation/jrmp/server JRMPInvokerHA.java > Log: > The bean hashCode was calculated incorrectly: was String.hashCode(), should be >(new ObjectName(String)).hashCode() > > Revision Changes Path > 1.10 +32 -19 >jbossmx/src/main/org/jboss/invocation/jrmp/server/JRMPInvokerHA.java > > Index: JRMPInvokerHA.java > =================================================================== > RCS file: >/cvsroot/jboss/jbossmx/src/main/org/jboss/invocation/jrmp/server/JRMPInvokerHA.java,v > retrieving revision 1.9 > retrieving revision 1.10 > diff -u -r1.9 -r1.10 > --- JRMPInvokerHA.java 7 Feb 2002 08:56:34 -0000 1.9 > +++ JRMPInvokerHA.java 12 Feb 2002 00:53:35 -0000 1.10 > @@ -41,7 +41,7 @@ > * > * @author <a href="mailto:[EMAIL PROTECTED]>Bill Burke</a> > * > -* @version $Revision: 1.9 $ > +* @version $Revision: 1.10 $ > */ > > public class JRMPInvokerHA > @@ -99,7 +99,7 @@ > state = STARTED; > log.info("Started"); > } > - > + > public void stop() > { > if (getState() != STARTED) > @@ -125,49 +125,62 @@ > public void destroy() > { > } > - > + > public void registerBean(String beanName, HATarget target) throws Exception > { > + Integer hash = new Integer((new ObjectName(beanName)).hashCode()); > log.info("77777777777777777777 BEAN NAME IS "+beanName); > - beanMap.put(new Integer(beanName.hashCode()), target); > + if (beanMap.containsKey(hash)) { > + // FIXME [oleg] In theory this is possible! > + throw new IllegalStateException("Trying to register bean with the >existing hashCode"); > + } > + beanMap.put(hash, target); > } > - > + > public JRMPInvokerProxy createProxy(String beanName, LoadBalancePolicy policy) >throws Exception > { > - HATarget target = (HATarget)beanMap.get(new Integer(beanName.hashCode())); > + Integer hash = new Integer((new ObjectName(beanName)).hashCode()); > + HATarget target = (HATarget)beanMap.get(hash); > + if (target == null) { > + throw new IllegalStateException("The bean hashCode not found"); > + } > return new JRMPInvokerProxyHA(target.getReplicants(), policy); > } > - > + > public void unregisterBean(String beanName) throws Exception > { > - beanMap.remove(new Integer(beanName.hashCode())); > + Integer hash = new Integer((new ObjectName(beanName)).hashCode()); > + beanMap.remove(hash); > } > - > + > /** > * Invoke a Remote interface method. > */ > public Object invoke(Invocation invocation) > throws Exception > - { > - > + { > + > ClassLoader oldCl = Thread.currentThread().getContextClassLoader(); > - > + > try > { > - // Deserialize the transaction if it is there > + // Deserialize the transaction if it is there > invocation.setTransaction(importTPC(((MarshalledInvocation) >invocation).getTransactionPropagationContext())); > - > + > // Extract the ObjectName, the rest is still marshalled > ObjectName mbean = (ObjectName) Registry.lookup((Integer) >invocation.getContainer()); > - > + > long clientViewId = >((Long)invocation.getValue("CLUSTER_VIEW_ID")).longValue(); > - > - > + > + > // The cl on the thread should be set in another interceptor > - Object rtn = server.invoke(mbean, "", new Object[] {invocation}, new >String[] {"java.lang.Object"}); > + Object rtn = server.invoke(mbean, "", new Object[] {invocation}, new >String[] {"java.lang.Object"}); > HARMIResponse rsp = new HARMIResponse(); > - > + > HATarget target = (HATarget)beanMap.get((Integer) >invocation.getContainer()); > + if (target == null) { > + throw new IllegalStateException("The bean hashCode not found"); > + } > if (clientViewId != target.getCurrentViewId()) > { > rsp.newReplicants = new ArrayList(target.getReplicants()); > > > > > _______________________________________________ > Jboss-development mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/jboss-development > _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development