Uploaded image for project: 'Application Server 3  4  5 and 6'
  1. Application Server 3 4 5 and 6
  2. JBAS-6284

ProxyFactoryHA BasicMBeanRegistry "null object name"

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • JBossAS-5.0.1.GA
    • JBossAS-4.2.3.GA, JBossAS-5.0.0.GA
    • Clustering
    • None

    Description

      I run in a JBoss cluster (my test involves here only 1 node in the default partition).
      I want to declare a HA proxy factory for my distributed service.
      Thus I add the following XML snippet in my service.xml file:

      <mbean code="org.jboss.proxy.generic.ProxyFactoryHA" name="the object name of my proxy factory">
      <depends optional-attribute-name="InvokerName">jboss:service=invoker,type=jrmpha</depends>
      <depends optional-attribute-name="TargetName">the object name of my target service</depends>
      <attribute name="JndiName">my target service JNDI name</attribute>
      <attribute name="InvokeTargetMethod">true</attribute>
      <attribute name="ExportedInterfaces">the public interface of my target service</attribute>
      <attribute name="ClientInterceptors">
      <interceptors>
      <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
      <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
      </interceptors>
      </attribute>
      <attribute name="PartitionObjectName">jboss:service=${jboss.partition.name:DefaultPartition}</attribute>
      <attribute name="LoadBalancePolicy">org.jboss.ha.framework.interfaces.RoundRobin</attribute>
      </mbean>

      When I invoke the proxy, I get the following stack trace :

      java.lang.IllegalArgumentException: null object name
      at org.jboss.mx.server.registry.BasicMBeanRegistry.get(BasicMBeanRegistry.java:509)
      at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:653)
      at org.jboss.invocation.jrmp.server.JRMPInvokerHA.invoke(JRMPInvokerHA.java:177)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
      at sun.rmi.transport.Transport$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Unknown Source)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
      at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
      at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
      at sun.rmi.server.UnicastRef.invoke(Unknown Source)
      at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source)
      at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxyHA.invoke(JRMPInvokerProxyHA.java:211)
      at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:365)
      at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:197)
      at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)
      at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
      at $Proxy65.<my remote method>(Unknown Source)
      at <the initial invocation of the remote method>.<my remote method>(Unknown Source)
      ......

      I made the exact same test using the "normal" (i.e. not cluster-aware) version of the proxy factory : in the service.xml file,
      I changed the code attribute of the bean to "org.jboss.invocation.jrmp.server.JRMPProxyFactory",
      I changed the name of the invoker to "jboss:service=invoker,type=jrmp", and
      I removed the two attributes dedicated to the clustered version (PartitionObjectName and LoadBalancePolicy).

      The invocation of my public remote method raised no error.
      Thus there are two cases : either I miss something in the XML declaration of the HA proxy factory, or there is a bug in the underlying implementation.
      Thanks for your help.

      Attachments

        Activity

          People

            bstansbe@redhat.com Brian Stansberry
            cdelory Christophe Delory (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: