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

RMI-IIOP EJB clients still do not fail over after applying the fix from CR 6828768

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Won't Fix
    • Affects Version/s: 5.0u16, 5.0u20
    • Fix Version/s: 5.0-pool
    • Component/s: other-libs
    • Labels:
      None
    • Subcomponent:
    • CPU:
      generic, x86
    • OS:
      linux_redhat_4.0, windows

      Description

      Problem is observed with application server cluster (Oracle WebLogic
      Server (WLS) cluster). A stateful EJB application deployed to the cluster.
      The problem is Oracle WebLogic Server IIOP EJB client not getting failover
      to the available server in the cluster. In other words the EJB Client
      calls are load balancing between the managed servers of the cluster as
      long as both servers are running well. The Sun JDK 1.5.x IIOP is not
      doing context failover when ever one of the running managed servers is
      down. The same application is tested on previous WLS version which is
      using jdk 1.4.2 and all works well. JDK 1.5.x environment is throwing
      the below exception.


      org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 203 completed: No
             at
      com.sun.corba.se.impl.logging.ORBUtilSystemException.writeErrorSend(ORBUtilSystemException.java:2259)
             at
      com.sun.corba.se.impl.logging.ORBUtilSystemException.writeErrorSend(ORBUtilSystemException.java:2281)
             at
      com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.writeLock(SocketOrChannelConnectionImpl.java:933)
             at
      com.sun.corba.se.impl.encoding.BufferManagerWriteStream.sendFragment(BufferManagerWriteStream.java:86)
             at
      com.sun.corba.se.impl.encoding.BufferManagerWriteStream.sendMessage(BufferManagerWriteStream.java:104)
             at
      com.sun.corba.se.impl.encoding.CDROutputObject.finishSendingMessage(CDROutputObject.java:144)
             at
      com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.finishSendingRequest(CorbaMessageMediatorImpl.java:247)
             at
      com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete1(CorbaClientRequestDispatcherImpl.java:342)
             at
      com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:323)
             at
      com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)
             at
      com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.is_a(CorbaClientDelegateImpl.java:213)
             at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112)
             at weblogic.corba.j2ee.naming.Utils.narrowContext(Utils.java:126)
             at
      weblogic.corba.j2ee.naming.InitialContextFactoryImpl.getInitialContext(InitialContextFactoryImpl.java:94)
             at
      weblogic.corba.j2ee.naming.InitialContextFactoryImpl.getInitialContext(InitialContextFactoryImpl.java:31)
             at
      weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:41)
             at
      javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
             at
      javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
             at javax.naming.InitialContext.init(InitialContext.java:223)
             at javax.naming.InitialContext.<init>(InitialContext.java:197)
             at MyClient.main(MyClient.java:26) java.lang.NullPointerException
             at MyClient.main(MyClient.java:35)
             

      Here are the reproducible Steps:

      1. Install WLS 9.2.3 on Windows or Unix machine
      2. Create a cluster with two managed servers using the domain
      configuration wizard, you can keep the clustered weblogic server running
      on the same machine.
      3. You compile the EJB source and then create the deployable EJB jar
      file using the weblogic.appc utility. You should change the IIOP:// UTL
      in the myclient.java file.
      4. Deploy the EJB jar application to the cluster using the admin console
      5. Keep Invoking the EJB client and you observe that the EJB IIOP
      request is being load balanced across the JVMs (managed servers 1 & 2)
      6. Stop/Kill one of the managed servers and then keep invoking the EJB
      client, you end up seeing the IIOP request load balanced to unavailable
      JVM and request fails with the below error.


      Attachments:

      EJBTestApp.zip
             
      EJB compilation command:

      java -classpath .;%CLASSPATH% weblogic.appc SourceApp.jar -output
      finalEJB.jar

      http://download.oracle.com/docs/cd/E13222_01/wls/docs92/programming/splitbuild.html#wp1102587

      Client commands:

      javac -classpath
      .;<PATH>\client.jar;<JDK-HOME>\lib\tools.jar;<JDK-HOME>\lib\rt.jar;<WLS_HOME>\server\lib\wlclient.jar;<WLS-HOME\server\lib\wl-j2ee-client.jar
      MyClient.java

      java -classpath
      .;<PATH>\client.jar;<JDK-HOME>\lib\tools.jar;<JDK-HOME>\lib\rt.jar;<WLS_HOME>\server\lib\wlclient.jar;<WLS-HOME\server\lib\wl-j2ee-client.jar
      MyClient

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              coffeys Sean Coffey
              Reporter:
              mhmccart Mary Mccarthy
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: