Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4461743

ORB versioning broken in Merlin/J2EE 1.3 Beta 2

XMLWordPrintable

    • beta2
    • generic
    • generic

      ORB versioning between Merlin/J2EE 1.3 and JDK 1.3.0 is broken. This is
      apparent when passing instances of java.lang.Class. The repository ID
      in JDK 1.3.0 was incorrect, and the current ORB is supposed to detect that
      it's talking to JDK 1.3.0 and use the old value.

      The attached test case demonstrates that it fails.

      Here's why it fails:

      A few months (?) ago, changes were made in the CDR streams such that at
      initialization time, they grab the various repository ID delegation singletons
      corresponding to the ORBVersion of the ORB with which they're talking.

      That works fine for the output stream, but in the case of the input stream,
      the ORB version won't be set properly at stream initialization time -- it
      will be set after reading the service contexts.

      Thus, either repository ID delegators should be selected every time that they're
      needed or set on the input stream when the ORB version is determined.

      Beware that sometimes the header is unmarshaled by the ReaderThread, and sometimes it's unmarshaled by the server or client thread. Thus, storing the ORBVersion information in thread local data may or may not work. It might be better to explicitly set it on the stream.

      In addition, this particular problem case seems to occur when the ORB in CDRInputStream_1_0 is null.

            eandersosunw Everett Anderson (Inactive)
            eandersosunw Everett Anderson (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: