-
Bug
-
Resolution: Not an Issue
-
P3
-
None
-
1.3.0, 1.4.0
-
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)
======================================================================