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

REGRESSION: Plug-in versions after 1.3.0-C have broken inter-applet comm.

XMLWordPrintable

    • x86
    • windows_2000



      Name: gm110360 Date: 01/30/2002



       FULL PRODUCT VERSION :
       Last working version output:
       java(TM) 2 Runtime Environment, Standard Edition (build
       1.3.0-C)
       Java HotSpot(TM) Client VM (build 1.3.0-C mixed mode)

       Broken in later versions (even 1.3.0_01) in both Netscape
       and IE.

       FULL OPERATING SYSTEM VERSION :
       Windows 95, 98, NT, 2000

       ADDITIONAL OPERATING SYSTEMS :
       Haven't tried on others (ie: Millenium, XP)


       EXTRA RELEVANT SYSTEM CONFIGURATION :
        Bug occurs with both Netscape and IE browsers.

       A DESCRIPTION OF THE PROBLEM :
       This bug in in all versions LATER THAN 1.3.0-C of the
      runtime, from 1.3.0_1, to the 1.3.1 betas, up through the
      1.4 beta 3, using either Netscape or IE, and on Windows 9x,
      NT and 2000. (The bug may exist on other windows
      platforms, such as Millenium and XP, but I have not tried
      these.)

      If you go to the URL below, you will find a demonstration of
      the problem that has cropped up for all JREs after 1.3.0-C
      on the Windows platform.

      The URL also contains links to the code for the applets used
      on the page.

      http://ps.dcjs.state.va.us/test/jreMain.html

      On a windows machine running JRE 1.3.0-C (or earlier), the
      applets at the above link can communicate. However, install
      any JRE later than 1.3.0-C and communication is broken. On
      machines that have had these later JREs installed, and
      therefore no inter-applet communication, upon removing the
      more recent (broken) JRE and installing 1.3.0-C the problem
      is resolved. The same goes for versions 1.3.1 and 1.4 beta
      3.

      I also suggest that the cause of bug 4454606 seems at least
      to be related to the broken inter-applet communication
      situation. All machines that I have seen demonstrating the
      bug described in 4454606 also have broken inter-applet
      communication.

      This remains a SERIOUS problem for our agency. We have been
      providing an online application to our constituents that
      depends upon inter-applet communication between frames.

      If the methodology for finding one applet from another has
      changed since 1.3.0-C (please see the code at the above
      link) then please tell me the new (hopefully backward
      compatible) procedure.
      I had hoped that version 1.4 would resolve this issue, but
      such is not yet the case.


      REGRESSION. Last worked in version 1.3

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1. Install any JRE LATER than 1.3.0-C.
      2. Go to http://ps.dcjs.state.va.us/test/jreMain.html
      3. Click the "Call Other Applet" button.
      4. A dialog pops up stating, "Unable to find the applet in
      the other frame."


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      The correct result is a dialog stating, "You've found me;
      the other applet!" This happens when JRE 1.3.0-C is used.
      When working, the calling applet was able to find the other
      applet in the other frame.

      What happens with JRE versions later than 1.3.0-C is the
      loss of this ability to locate other applets active within
      the browser session.

      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      The Called Applet running in the top frame (also available
      online at http://ps.dcjs.state.va.us/test/CalledApplet.java)

      //
      ------------------------------------------------------------
      ------
      // NAME : CalledApplet.java
      // GENERATED BY : Developer
      // GENERATION TYPE : Java 1.3
      // COMPILED USING : Javac
      // NOTES : Called by an applet in another frame
      //
      ------------------------------------------------------------
      ------
      package us.va.state.dcjs.experiment.jre;

      import javax.swing.JDialog;
      import javax.swing.JApplet;
      import javax.swing.JLabel;
      import javax.swing.JOptionPane;
      import javax.swing.JFrame;

      public class CalledApplet extends JApplet {

      public void init() {
      super.init();
      this.getContentPane().add(new JLabel("Applet
      waiting to be called"));
      }


      public void hello() {
      JOptionPane pane = new JOptionPane("You've
      found me; the other applet!",

       
      JOptionPane.INFORMATION_MESSAGE,

       
      JOptionPane.DEFAULT_OPTION

        );
      JDialog dialog = pane.createDialog(new
      JFrame(), "Well, Hello.");

      dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
      dialog.show();
      }
      }

      The Calling Applet running in the bottom frame (also
      available online at
      http://ps.dcjs.state.va.us/test/CallingApplet.java)

      //
      ------------------------------------------------------------
      ------
      // NAME : CallingApplet.java
      // GENERATED BY : Developer
      // GENERATION TYPE : Java 1.3
      // COMPILED USING : Javac
      // NOTES : Attempts to call an applet in
      another frame
      //
      ------------------------------------------------------------
      ------
      package us.va.state.dcjs.experiment.jre;

      import javax.swing.*;
      import java.awt.*;
      import java.awt.event.*;
      import java.applet.AppletContext;
      import java.util.Enumeration;

      public class CallingApplet extends JApplet {
      private CalledApplet ca = null;
      private JPanel panel = new JPanel();
      private JButton call = new JButton("Call Other
      Applet");
      ////////////////////////////////////////////////////////////
      /////////

      /**
      * Prepares and displays the logon interface
      */
      public void init() {
      super.init();

      panel.setLayout(new BorderLayout());
      JLabel title = new JLabel("Press to Test");
      panel.add(title, BorderLayout.CENTER);

      call.addActionListener(new
      ButtonActionListener());
      panel.add(call, BorderLayout.SOUTH);

      this.getContentPane().setLayout(new
      BorderLayout());
      this.getContentPane().add(panel,
      BorderLayout.CENTER);
      }
      ////////////////////////////////////////////////////////////
      /////////


      /** Action listener for buttons */
      class ButtonActionListener implements ActionListener
      {

      public ButtonActionListener() {}

      public void actionPerformed(ActionEvent e)
      {
      if(locateApplet())
      ca.hello();
      else {
      JOptionPane pane = new
      JOptionPane("Unable to find the applet in the other frame",


      JOptionPane.INFORMATION_MESSAGE,


      JOptionPane.DEFAULT_OPTION

      );
      JDialog dialog =
      pane.createDialog(new JFrame(), "Oops");

      dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
      dialog.show();
      }
      }
      }
      ////////////////////////////////////////////////////////////
      /////////

      /**
      * Locate the applet running separately within
      the browser.
      * @return True if the menu was found, false
      otherwise
      */
      protected boolean locateApplet() {
      boolean found = false;
      AppletContext ac = this.getAppletContext();
      Enumeration aps = null;

      ca = (CalledApplet)ac.getApplet("upper");

      if(ca == null) {
      //This may be in an IE type browser
      (doesn't see the applet names)
      aps = ac.getApplets();

      while(!found &&
      aps.hasMoreElements()) {
      try {
      ca =
      (CalledApplet)aps.nextElement();
      found = true;

      }
      catch(ClassCastException c)
      { //Applet is not a CalledApplet
      continue;
      }
      }
      }
      else
      found = true;

      return found;
      }
      }
      ---------- END SOURCE ----------

      CUSTOMER WORKAROUND :
      Uninstall the more recent plug-in and use a plug-in version
      that is 1.3.0-C or earlier.

      Release Regression From : 1.3
      The above release value was the last known release where this
      bug was knwon to work. Since then there has been a regression.

      (Review ID: 137853)
      ======================================================================

      Name: gm110360 Date: 03/04/2002


      FULL PRODUCT VERSION :
      Java Plugin 1.4

      FULL OPERATING SYSTEM VERSION :
      Microsoft Windows 2000 [Version 5.00.2195]

      A DESCRIPTION OF THE PROBLEM :
      I used InfoBus for communication between applets in
      different frames. It works well in JRE 1.2, JRE 1.3, but in
      new Java Plugin 1.4 it freezes when calling
      InfoBusBeanSupport.joinInfoBus(). If applets are containing
      on one page it's all OK.

      REGRESSION. Last worked in version 1.3

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1.Cut applets from InfoBus MoneyBeans.html example page and
      move them to the separate pages
      2.Change MoneyBeans.html to frameset page, containing the
      created pages
      3.Run MoneyBeans.html in IE with JavaPlugin 1.4

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      As expected, applets should pass data through InfoBus on
      clicking the buttons.
      But they don't.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      None. Applets can not find each other.

      This bug can be reproduced always.
      (Review ID: 143666)
      ======================================================================

            dgu Dennis Gu (Inactive)
            gmanwanisunw Girish Manwani (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: