Uploaded image for project: 'OpenEJB'
  1. OpenEJB
  2. OPENEJB-286

CORBA/RMI delegate code requires delegate implementation to be on the system classpath

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • (not version related)
    • (not version related)
    • corba
    • None

    Description

      When the java.rmi.Util class is loaded, it uses Class.forName to load the UtilDelegate specified in a system property. This is what yoko uses:

      private static UtilDelegate delegate = null;
      private static final String defaultDelegate = "org.apache.yoko.rmi.impl.UtilImpl";

      static {
      // Initialize delegate
      String delegateName = System.getProperty("javax.rmi.CORBA.UtilClass", defaultDelegate);
      try

      { delegate = (UtilDelegate)Class.forName(delegateName).newInstance(); }

      catch (Exception e)

      { throw new RuntimeException("Can not create Util delegate: "+delegateName, e); }

      }

      IIRC Class.forName(String) uses the class loader of the class containing the code, and since java.rmi.Util will always be on the system class path our delegate must be on the system class path

      I see a few choices:

      • change yoko to use the thread context class loader... then add a gbean to set the property and load the Util class. repeat of every delegate class.
      • write a delegate delegate that allows us to swap out the actual delegate implementation later
      • split out out delegate class into a jar we can put on the system class path

      Attachments

        1. OPENEJB-286.patch
          2 kB
          Richard McGuire

        Activity

          People

            rickmcguire Richard McGuire
            dain Dain Sundstrom
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: