Closed Bug 397965 Opened 17 years ago Closed 17 years ago

firefox not observing java family classid

Categories

(Core Graveyard :: Plug-ins, defect)

x86
Windows XP
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: mstubbs, Unassigned)

Details

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7

Oracle software is currently not compatible with the jre6. It is necessary therefore
to use the latest jre5 to run oracle applications. And older oracle applications would need to use jre4.  It should be possible
for firefox to run the jre4, jre5,or jre6 as specified. IE can do this
correctly. But firefox does not. This is a very serious problem for
oracle shops because oracle is also not compatible with ie7. If ie7 cannot be avoided then the only option for running oracle java apps is firefox. But if the jre 6 gets installed 
it ruins the ability of firefox to run the jre 5. I hope mozilla can
fix this problem. Because of the autoupdate feature in the jre it is
very likely for the jre 6 be installed and break java from an
oracle perspective. One can install the jre 5 and have it immediately
upgrade to jre 6 and cause havoc.
 
Here's what I mean. It used to be the case (static versioning) that oracle applets could be 
deployed with specific classids like so:
jpi_classid= clsid:CAFEEFAC-0015-0000-0011-ABCDEFFEDCBA
jpi_mimetype=application/x-java-applet;jpi-version=1.5.0_11

It will not work now because the presence of a later java version
causes that to run instead but the mimetype does not match. For example if
one gets the jre 1.5.0.12 installed then that's broken. If the jre 6 is isntalled it is broken. Sun created the family classid that theoretically should
work to get around this but it doesn't. 
http://java.sun.com/javase/6/webnotes/family-clsid.html

This family classid for jre5: 
jpi_classid= clsid:CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA
jpi_mimetype=application/x-java-applet;jpi-version=1.5.0 

This is supposed to result in the latest version of 5 being called. It should not call jre 6. But firefox does not do that. Instead if the jre6 is present it calls 6,that doesn't match the mimetype and it fails. There is apparently no way
to get it to work without uninstalling jre6 and configuring java to
not autoupdate.  

IE 6 does call the right jre. Even if the jre 6 is installed it will run 
jre 5. Whatever ie6 does I wish firefox would do that.

Perhaps this occurs because of the following. Suppose one installs the
jre 1.5.0.11 one gets this in about plugins:
Java(TM) 2 Platform Standard Edition 5.0 U11
***************
    File name: NPJava11.dll
    Java Plug-in 1.5.0_11 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.1.1 	Java Applet 		Yes
application/x-java-bean;version=1.1.1 	JavaBeans 		Yes
application/x-java-applet;version=1.1 	Java Applet 		Yes
application/x-java-bean;version=1.1 	JavaBeans 		Yes
application/x-java-applet 	Java Applet 		Yes
application/x-java-bean 	JavaBeans 		Yes
Java(TM) 2 Platform Standard Edition 5.0 U11

    File name: NPJava12.dll
    Java Plug-in 1.5.0_11 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.2 	Java Applet 		Yes
application/x-java-bean;version=1.2 	JavaBeans 		Yes
application/x-java-applet;version=1.1.3 	Java Applet 		Yes
application/x-java-bean;version=1.1.3 	JavaBeans 		Yes
application/x-java-applet;version=1.1.2 	Java Applet 		Yes
application/x-java-bean;version=1.1.2 	JavaBeans 		Yes
Java(TM) 2 Platform Standard Edition 5.0 U11

    File name: NPJava13.dll
    Java Plug-in 1.5.0_11 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.3.1 	Java Applet 		Yes
application/x-java-bean;version=1.3.1 	JavaBeans 		Yes
application/x-java-applet;version=1.4 	Java Applet 		Yes
application/x-java-bean;version=1.4 	JavaBeans 		Yes
application/x-java-applet;version=1.4.1 	Java Applet 		Yes
application/x-java-bean;version=1.4.1 	JavaBeans 		Yes
Java(TM) 2 Platform Standard Edition 5.0 U11

    File name: NPJava14.dll
    Java Plug-in 1.5.0_11 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.4.2 	Java Applet 		Yes
application/x-java-bean;version=1.4.2 	JavaBeans 		Yes
application/x-java-applet;version=1.5 	Java Applet 		Yes
application/x-java-bean;version=1.5 	JavaBeans 		Yes
Java(TM) 2 Platform Standard Edition 5.0 U11

    File name: NPJava32.dll
    Java Plug-in 1.5.0_11 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.3 	Java Applet 		Yes
application/x-java-bean;version=1.3 	JavaBeans 		Yes
application/x-java-applet;version=1.2.2 	Java Applet 		Yes
application/x-java-bean;version=1.2.2 	JavaBeans 		Yes
application/x-java-applet;version=1.2.1 	Java Applet 		Yes
application/x-java-bean;version=1.2.1 	JavaBeans 		Yes
Java(TM) 2 Platform Standard Edition 5.0 U11

    File name: NPJPI150_11.dll
    Java Plug-in 1.5.0_11 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;jpi-version=1.5.0_11 	Java Applet 		Yes
application/x-java-bean;jpi-version=1.5.0_11 	JavaBeans 		Yes
Java(TM) 2 Platform Standard Edition 5.0 U11

    File name: NPOJI610.dll
    Java Plug-in 1.5.0_11 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-vm 	Java 		Yes
********************

Now look what happens when the jre6 is installed, all the pointers
to the jre5 have been removed, permanently. Even if the jre 6 
is uninstalled the jre5 plugin info does not return. The jre 5
plugin has to be uninstalled and installed again to get the
jre5 plugin info back.

*******
Java(TM) Platform SE 6 U2

    File name: npjava13.dll
    Java Plug-in 1.6.0_02 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.3.1 	Java Applet 		Yes
application/x-java-bean;version=1.3.1 	JavaBeans 		Yes
application/x-java-applet;version=1.4 	Java Applet 		Yes
application/x-java-bean;version=1.4 	JavaBeans 		Yes
application/x-java-applet;version=1.4.1 	Java Applet 		Yes
application/x-java-bean;version=1.4.1 	JavaBeans 		Yes
Java(TM) Platform SE 6 U2

    File name: npjava14.dll
    Java Plug-in 1.6.0_02 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.4.2 	Java Applet 		Yes
application/x-java-bean;version=1.4.2 	JavaBeans 		Yes
application/x-java-applet;version=1.5 	Java Applet 		Yes
application/x-java-bean;version=1.5 	JavaBeans 		Yes
application/x-java-applet;version=1.6 			Yes
application/x-java-bean;version=1.6 			Yes
Java(TM) Platform SE 6 U2

    File name: npjava32.dll
    Java Plug-in 1.6.0_02 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.3 	Java Applet 		Yes
application/x-java-bean;version=1.3 	JavaBeans 		Yes
application/x-java-applet;version=1.2.2 	Java Applet 		Yes
application/x-java-bean;version=1.2.2 	JavaBeans 		Yes
application/x-java-applet;version=1.2.1 	Java Applet 		Yes
application/x-java-bean;version=1.2.1 	JavaBeans 		Yes
Java(TM) Platform SE 6 U2

    File name: npoji610.dll
    Java Plug-in 1.6.0_02 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-vm 	Java 		Yes
Java(TM) Platform SE 6 U2

    File name: npjava11.dll
    Java Plug-in 1.6.0_02 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.1.1 	Java Applet 		Yes
application/x-java-bean;version=1.1.1 	JavaBeans 		Yes
application/x-java-applet;version=1.1 	Java Applet 		Yes
application/x-java-bean;version=1.1 	JavaBeans 		Yes
application/x-java-applet 	Java Applet 		Yes
application/x-java-bean 	JavaBeans 		Yes
Java(TM) Platform SE 6 U2

    File name: npjava12.dll
    Java Plug-in 1.6.0_02 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;version=1.2 	Java Applet 		Yes
application/x-java-bean;version=1.2 	JavaBeans 		Yes
application/x-java-applet;version=1.1.3 	Java Applet 		Yes
application/x-java-bean;version=1.1.3 	JavaBeans 		Yes
application/x-java-applet;version=1.1.2 	Java Applet 		Yes
application/x-java-bean;version=1.1.2 	JavaBeans 		Yes
Java(TM) Platform SE 6 U2

    File name: npjpi160_02.dll
    Java Plug-in 1.6.0_02 for Netscape Navigator (DLL Helper)

MIME Type 	Description 	Suffixes 	Enabled
application/x-java-applet;jpi-version=1.6.0_02 	Java Applet 		Yes
application/x-java-bean;jpi-version=1.6.0_02 	JavaBeans 		Yes



Reproducible: Always

Steps to Reproduce:
access anyone's oracle forms web application
let it install it's preferred jre
install jre 6.0.2 
try accessing oracle forms web application now

try the same with ie6. It does not have these problems.
Actual Results:  
the application will not work. It will not recognize the proper jre plugin
no matter how many times it is installed.
How is this a Firefox bug?  The jre installer needs to put the plugin files in the right place for Firefox to load them.
Ok I tried this again using the very most recent jre 6, 1.6.0_02_b06 
with firefox 2.0.0.7 using these applet specs:
jpi_classid=clsid:CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA
jpi_codebase=https://java.sun.com/update/1.5.0/jinstall-1_5_0_12-windows-i586.cab#Version=1,5,0,12
jpi_mimetype=application/x-java-applet;version=1.5

and it ran (the jre 6)! That is an improvement over refusing to run at all and I wish I knew to what to attribute it. Because what usually happens is the 
browser offers to install the plugin but that doesn't work. 
This  was in the presence of 1.5.0_12 and not 1.5.0_11 and the jre 6 may have 
changed. Also firefox is continually updating. However, altho it is better to have the application run than not run,
it still isn't doing what it should be doing. It is running the jre 6 but it's
supposed to be running 5. Similarly if the jre 4 was specified it should've
run the most recent version of 4 installed and not 6.

This is what gets run by firefox despite it is being instructed to call 5: 
Java Plug-in 1.6.0_02
Using JRE version 1.6.0_02 Java HotSpot(TM) Client VM
User home directory = C:\Documents and Settings\user

BTW I don't think the jre is going in the plugins directory at all.
It looks like it's going to:
\Program Files\Java\jre1.6.0_02\bin 
It's hard to tell because there's a number of oracle things installed on
this machine so there's about 25 versions of npjava14.dll to be found if
one is just going by that.

so to reiterate using ie6 in the same situation, ie is running 1.5.0_12 
and I think that is the desired behavior. There is not one java plugin
it is version dependent.
Java Plug-in 1.5.0_12
Using JRE version 1.5.0_12 Java HotSpot(TM) Client VM
User home directory = C:\Documents and Settings\user


This is also an issue for us at UNC using Kronos Workforce Timekeeper. This app uses the family class ID and requires JRE 1.5.0_07+ however when our users access on Firefox the browser forces the app to use 1.6 which is not a supported platform. There should be some way to allow the application to call the specfic version of Java apart from having to have the user uninstall Java 6. This has presented a critical issue for us in using 3rd party applications. 
checking for status apparently no one from Firefox Support is checking this is there anyone out there?
I am currently running JRE 1.4.2_04 on version 2.0.0.9 for Windows.  Currently Firefox does not enforce updating of plugins.

I suggest you post in the Firefox User Support Forum or a Java support forum for assistance.
http://forums.mozillazine.org/viewforum.php?f=38

Is there any reason I should not resolve this bug WORKSFORME?
If Firefox is used it forces use of the latest version regardless that the application calls a family class that is not the latest version, therefore if the resolution is to NOT upgrade Java then what do I do to use apps that require Java 1.6? What your telling me is that if I need 1.5 family for Kronos and Oracle I can't have Java 1.6 installed also. So to support my business apps like Oracle and Kronos I have to prevent my users from having 1.6 also which then prevents them from using apps that require Java 1.6 family. 
I think my only resolution is to block the use of Firefox all together and require IE which supports the correct Java family class. That will cost you somewhere around 100,000 users, if you want to compete with IE you have to be able to play with the Big Dogs... that's just too bad I guess. 
If you don't care what users need in a Browser then I guess you can just close this bug... 
 
I already posted to that forum they told me to log a bug with you. 
Sun's comments are explicit:

"As of JRE 5.0 Update 6, you can no longer specify the exact JRE release due to the potential misuse of static versioning. Instead, all Java applets are run using the latest version of the JRE software that is installed on the system. ...Because you can only use the latest version of the JRE software that is installed on the system to run Java applets, you must migrate your software to the latest JRE version as soon as possible. ...This change might break existing Java applets that cannot be immediately migrated to the latest JRE version."
(from http://java.sun.com/javase/6/webnotes/family-clsid.html )

Is there any reason it shouldn't be marked INVALID instead of WORKSFORME?
Date: April 30, 2007
Product: Workforce Timekeeper™ 5.2
Subject: JRE™ Compatibility Requirements for Workforce Timekeeper 5.2 / JRE Secure Static Versioning and how it affects WTK
Summary:
Kronos has widened its Java™ Runtime Environment (JRE) support policy to conform to Sun Microsystems’ updated JRE security standards. The new policy will extend support to the latest (and most secure) minor version of the major JRE release that is shipped with Workforce Timekeeper, and will accommodate scenarios that require multiple JREs on a single machine.
Solution:
While JRE support in WTK has changed to support Sun Microsystems’ new support policy, the change can be complicated by the customer environment. This environment may have other applications that utilize the JRE that may have differing requirements from WTK. To resolve this potential conflict, Sun Microsystems has enabled co-existence of applications on a single machine. This is accomplished using a new technique, referred to as Family Class ID. Note that this is a workaround solution from Sun Microsystems. In the future, the requirement will be for all applications to operate on the latest JRE version released.
In addition to the invocation change, Sun Microsystems has also made a change to the requirements for family versions, to ensure that the latest security enhancements are applied to the Java Virtual Machine. The impact of this requirement is detailed below.
Prior to the existence of the Family Class ID capability, JRE applications used “static versioning” for invocation of the JRE. WTK formerly used static versioning to specify in which JRE the WTK applets would execute. Prior to the 1.5.0_07 JRE, there was no requirement for upgrading to the latest security baseline.
Kronos is complying with Sun Microsystems’ policy changes to avoid security exposure to our customers, and to support the multiple JRE environments that are necessary for many customers. Note that other Java applications that customers run on their client workstations should also be compliant with Sun Microsystems’ policy.
To avoid exposing themselves to security breaches, customers who run third-party applications that use older JREs need to contact the third-party vendors to get updated applications that are compliant with Sun Microsystems’ security policy. For information about Sun Microsystems’ policy, and the requirements for applications to comply with this policy and to co-exist with applications that use different versions of the JRE, see Sun Microsystems’ Web site:
http://java.sun.com/javase/6/webnotes/family-clsid.html
Note: When the issue of co-existence with other third-party applications became apparent after the initial release of WTK 5.2, Kronos provided customers with the workaround of downgrading their client JRE to 1.5.0_05. Due to Sun Microsystems’ new policy, this workaround is no longer an option. JRE version 1.5.0_05 does not support the new Daylight Saving Time (DST) changes. Sun Microsystems has since provided updated versions of the JRE, which support multiple version co-existences, as described in the web link in the previous paragraph.
Impact to Users:
This issue applies to any client that utilizes JRE 1.5.0_06 or later. The potential impact is for customers who use legacy, third-party applications that require an older version of the JRE. The scope of impact is generally limited to any third-party application that does not follow the same JRE supportability requirements as does Kronos. The third-party application may be forced to use the updated JRE, which could cause runtime issues if the application was not designed specifically for that version of JRE. The goal of this article is to stress the potential impact to customers who plan to upgrade their client-side JRE for use with WTK.
If a customer stays on JRE version 1.5.0_06 or earlier, and is not using any other applications that require a different JRE version, there is currently no impact to the customer or the deployment, other than recognition that there are security vulnerabilities utilizing those JREs. For customers who use later JREs and multiple applications that require different JREs, the impact is potentially significant.
Planned Engineering Response:
While the initial release of 5.2 allowed WTK to operate with client JREs that were not at 1.5.x, this is not a supported configuration. Prior to service pack 8 for 5.2, WTK used static versioning. Static versioning invokes the highest revision of a JRE that is installed on a client machine. The use of the static ID and the deployment of multiple JRE versions are no longer supported.
In 5.2 service pack 9, the WTK JRE implementation has been enhanced to utilize the Sun Microsystems Family Class ID. This implementation provides the ability for different JREs to co-exist on the same client machine.
This versioning is specified on the WTK application server and controls how the client machines invoke the JRE. Support of this feature allows the specification of a Family Class of JREs to be used by the WTK application.
Note: The ability to specify the JRE family does allow specification of a family which is not supported by the WTK application. Specification of an unsupported JRE family may cause malfunctions in the WTK application.
There are two choices for the configuration of the WTK application server:
• Continued use of static versioning (the default after installing the service pack)
• Specification of a Family Class ID for a specific family.
Example of choice 2, using the Family Class ID:
If user deployment with a third-party application requires the use of a 1.6 family JRE, the user must specify the 1.5 family for the WTK application. The Family Class ID can be set within the WTK System Settings as follows:
Go to: System Settings > Java Plug-in Settings > site.java.plugin.CLSID.familyVersion
Field: CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA
The appropriate JRE version is set at:
System Settings

Sorry but there's more to Suns release than that.
part deux...

Example of choice 2, using the Family Class ID:
If user deployment with a third-party application requires the use of a 1.6 family JRE, the user must specify the 1.5 family for the WTK application. The Family Class ID can be set within the WTK System Settings as follows:
Go to: System Settings > Java Plug-in Settings > site.java.plugin.CLSID.familyVersion
Field: CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA
The appropriate JRE version is set at:
System Settings > Java Plug-in Settings > site.java.plugin.type.familyVersion
Note: For reference, Class IDs are defined on the Sun Microsystems website at the link listed above.
Important Note: Specification of the Family Class ID is supported only in JRE versions 1.5.0_07 and later. Earlier versions require using the static value that is supplied as the default during the 5.2.9 installation.
Per Sun Microsystems’ recommendation, Kronos plans to implement the JRE Family Class ID function in Workforce Central® 5.2, 5.1, and 5.0, in the next series of service packs (5.2.9, 5.1.19, 5.0.29, respectively). This functionality is also planned for Workforce Central 6.0.
There are currently no plans to add this functionality to WTK 4.3.
There are also currently no plans to support the 1.6 family JRE in WTK 4.3 or 5.X versions.
Limitations with Firefox and Safari Browsers
Note that Workforce Central customers who use Firefox or Safari cannot install the Family Class 1.6 JRE for another application on the same computer. These browsers do not currently recognize Family Class ID and would attempt to use the 1.6 JRE on Workforce Central, which is currently not supported.
Additional Information
For further information please contact:
Kronos Global Support at (800) 394-4357
Kronos, the Kronos logo and Workforce Central are registered trademarks, and Workforce Timekeeper and Experts at Improving the Performance of People and Business are trademarks of Kronos Incorporated or a related company in the United States.
JRE is a trademark and Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries.
All other product and company names mentioned are for identification purposes only, and may be the trademarks of their respective owners.
This information is Kronos confidential, is for informational purposes only for current Kronos customers and may not be reproduced for any other use. Kronos believes that the information in the document is accurate as of the publication date. The information is subject to change without notice. Copyright, Kronos Incorporated or a related company, 2007. All rights reserved.
Sorry, I'm going to have to defer here.  In the future, please be brief and don't quote whole articles.


>I already posted to that forum they told me to log a bug with you.

Bugzilla is for resolving bugs.  The support forum is for help getting a plugin installed and running on Firefox, and they are happy to help.  If you want help with this, there's more discussion here:  http://forums.mozillazine.org/viewtopic.php?t=601926
Well I think it's pretty clear now how it was that Sun worked with Microsoft to keep applets working in IE and why Mozilla didn't, considering this type of reaction to Firefox not working with Kronos, Oracle, and Peoplesoft software: 
http://forums.mozillazine.org/viewtopic.php?t=601926
"(You don't have time, and I don't care about JRE - I turn it off until I need/want it to see something needing Java. 1.6.0 causes my Profile to hang when closing Firefox, where the few times I use 1.4.2 on my desktop I seem to have less of a problem with my Profile hanging. **** software that doesn't work correctly with Firefox, IMO.)"

A student needs to submit a timesheet to get paid and your browser doesn't work to do it. Guess what gets uninstalled?

For the record for the absolute last time: 
You are still misinterpreting the meaning of family classids. It is supposed
to run the latest version of _that lineage_. For example, if as of today if 
you had the latest version of jre 6: 1.6.0.3 installed _and_ the latest version
of 5: 1.5.0.13 _and_ the latest version of 4: 1.4.2.13, it is supposed to,
using
the appropriate classids, run the newest version of the lineage requested NOT
the newest version of jre on the machine.  For example, if an applet specifies
the 1.5 family classid clsid:CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA it is
supposed to run 1.5.0.13 (and not run 1.6.0.3.) If the classid is
clsid:CAFEEFAC-0014-0002-FFFF-ABCDEFFEDCBA it is supposed to run 1.4.2.13 (not
1.6.0.3 nor  1.5.0.13) 

This works in IE. It does not work in firefox. Firefox will only run 1.6.0.3 
and when it does the applet doesn't work AT ALL. This is because it checks
the version and it's not the right one. This was not an issue until Sun stopped 
supporting static versioning as of 1.5.0.6. When they did that it would appear
Microsoft worked with sun to find a solution and Firefox didn't. If it is
true that Safari is not compatible with classids, I'll bet they get with the 
program and if they do you will have some competition.
http://www.engadget.com/2007/06/11/safari-3-for-windows/
Thanks for commenting.  As far as I know, no one who has commented on this bug here or in the forum is a Mozilla employee or is in a position to fix this bug.  You are welcome to register there and comment if you wish.

You may be right about the CLSID, and I'm going to have to defer on triaging this bug.  But the document about CLSID that you linked in comment 0 refers only to IE.  You might help the case if you can cite documentation on what Firefox is supposed to do.  Please be brief.
What a mess...  This is in the wrong product/component.  

mstubbs, can you please attach an example of the exact HTML being used to invoke Java in this case?  That would be much appreciated!
Component: Plugin Finder Service → Plug-ins
Product: Firefox → Core
QA Contact: plugin.finder → plugins
Ok here comes one example. This is what oracle forms 10gr2 (10.2.0.1.0)
is configured to use for the jre case in the provided formweb.cfg, which is 
the jre 1.4.2.06. This is static versioning. (It would be hugely advantageous
to support static versioning via some per site exception mechanism because
of the large body of applications that 1. are not compatible with newer jre's
even in their lineage and 2. are specifying static versioning)

<HTML>
<!-- FILE: basejpi.htm (Oracle Forms)                                 -->
<!--                                                                  -->  
<!-- This is the default base HTML file for running a form on the     -->
<!-- web using the JDK Java Plugin. This is used for example when     -->
<!-- running with Netscape on Unix.                                   -->
<!--                                                                  -->  
<!-- IMPORTANT NOTES:                                                 -->
<!-- Default values for all the variables which appear below          -->
<!-- (enclosed in percent characters) are defined in the servlet      -->
<!-- configuration file (formsweb.cfg). It is preferable to make      -->
<!-- changes in that file where possible, rather than this one.       -->
<!--                                                                  -->  
<!-- This file will be REPLACED if you reinstall Oracle Forms, so     -->
<!-- you are advised to create your own version if you want to make   -->
<!-- any modifications.  You should then set the baseHTMLjpi          -->
<!-- parameter in the Forms Servlet configuration file (formsweb.cfg) -->
<!-- to point to your new file instead of this one.                   -->
<HEAD><TITLE>Oracle Application Server Forms Services</TITLE></HEAD>
<BODY >

<COMMENT id="forms_plugin_info" 
         plug_ver="clsid:CAFEEFAC-0014-0002-0006-ABCDEFFEDCBA" 
         appheight="600"
         appwidth="750"
         appcodebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,06">
</COMMENT>
<!-- Forms applet definition (start) -->
<NOSCRIPT>
<OBJECT classid="clsid:CAFEEFAC-0014-0002-0006-ABCDEFFEDCBA"
        codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,06"
        WIDTH="750"
        HEIGHT="600"
        HSPACE="0"
        VSPACE="0">
</NOSCRIPT>
<SCRIPT LANGUAGE="JavaScript" SRC="java/forms_ie.js"></SCRIPT> 
<PARAM NAME="TYPE"       VALUE="application/x-java-applet;jpi-version=1.4.2_06">
<PARAM NAME="CODEBASE"   VALUE="/forms/java">
<PARAM NAME="CODE"       VALUE="oracle.forms.engine.Main" >
<PARAM NAME="ARCHIVE"    VALUE="frmall.jar" > 
<PARAM NAME="serverURL" VALUE="/forms/lservlet;jsessionid=c0a8016522b92af07129b829423eaabbee43896e69bd">
<PARAM NAME="networkRetries" VALUE="0">
<PARAM NAME="serverArgs" 
       VALUE="escapeParams=true module=C:\forms\demographics.fmx userid=  sso_userid=%20 sso_formsid=%25OID_FORMSID%25 sso_subDN= sso_usrDN= debug=no host= port= buffer_records=no debug_messages=no array=YES obr=YES query_only=no quiet=yes render=no record= tracegroup= log= term=">
<PARAM NAME="separateFrame" VALUE="false">
<PARAM NAME="splashScreen"  VALUE="">
<PARAM NAME="background"  VALUE="">
<PARAM NAME="lookAndFeel"  VALUE="ORACLE">
<PARAM NAME="colorScheme"  VALUE="blaf">
<PARAM NAME="serverApp" VALUE="default">
<PARAM NAME="logo" VALUE="">
<PARAM NAME="imageBase" VALUE="DocumentBase">
<PARAM NAME="formsMessageListener" VALUE="">
<PARAM NAME="recordFileName" VALUE="">
<PARAM NAME="EndUserMonitoringEnabled" VALUE="">
<PARAM NAME="EndUserMonitoringURL" VALUE="">
<PARAM NAME="heartBeat" VALUE="">
<PARAM NAME="allowAlertClipboard" VALUE="">
<PARAM NAME="disableValidateClipboard" VALUE="">
<COMMENT> 
<EMBED SRC="" PLUGINSPAGE="http://java.sun.com/products/archive/j2se/1.4.2_06/index.html" 
        TYPE="application/x-java-applet;jpi-version=1.4.2_06" 
        java_codebase="/forms/java" 
        java_code="oracle.forms.engine.Main" 
        java_archive="frmall.jar" 
        WIDTH="750"
        HEIGHT="600" 
        HSPACE="0"
        VSPACE="0"
        serverURL="/forms/lservlet;jsessionid=c0a8016522b92af07129b829423eaabbee43896e69bd"
        networkRetries="0"
        serverArgs="escapeParams=true module=C:\forms\demographics.fmx userid=  sso_userid=%20 sso_formsid=%25OID_FORMSID%25 sso_subDN= sso_usrDN= debug=no host= port= buffer_records=no debug_messages=no array=YES obr=YES query_only=no quiet=yes render=no record= tracegroup= log= term="
        separateFrame="false"
        splashScreen=""
        background=""
        lookAndFeel="ORACLE"
        colorScheme="blaf"
        serverApp="default"
        logo=""
        imageBase="DocumentBase"
        recordFileName=""
        EndUserMonitoringEnabled=""
        EndUserMonitoringURL=""
        heartBeat=""
        disableValidateClipboard=""
>
<NOEMBED> 
</COMMENT> 
</NOEMBED></EMBED> 
</OBJECT>
<!-- Forms applet definition (end) -->

</BODY>
</HTML>
Thank you!  The relevant part of that markup for Firefox is the <embed>, right?  So this part: 

  TYPE="application/x-java-applet;jpi-version=1.4.2_06" 

Looking at your about:plugins output, it looks like Java 1.6 does not in fact not to implement any 1.5 JPI versions.  Good.

jst, mwu can we somehow make this happen?  That is, pick up both Java plug-ins in the scan, and use the right one based on the jpi-version paramater?
Status: UNCONFIRMED → NEW
Ever confirmed: true
(In reply to comment #16)
I am the Product Manager for Oracle Forms and this is my understanding of this issue:

Sun has implemented a functionality that ensures that the latest version installed on a given machine is used regardless of what version is specified when launching an applet. So if you specify 1.4.2_06 like in your example above and you have 1.6.0_04 installed 1.6 will be used instead. This came in the 1.5.0._06 time frame. The security benefit of this functionality is undeniable.

When their customers complained that they don't always want that, for example in the current situation with Oracle Forms where Oracle has not yet certified 1.6 but has certified 1.5 and will support all, present and upcoming, versions of 1.5, they implemented a piece of functionality that will limit the "use the very latest version" functionality to a version family (within 1.5 only in this case). This limit is expressed in the classid by setting the last digit to FFFF: <OBJECT classid="clsid:CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA" ... if I understand this correctly.

This works when you use Internet Explorer because that's how you specify objects in IE. In Mozilla based browsers you can specify what to run in the classid attribute but you do it by saying 
<OBJECT classid="java:oracleforms.engine.Main" ... 
in our case.

We have traditionally used the embed tag to launch our applet in non-IE browsers and the way to specify what to run there is to use the TYPE attribute and the version is specified in an extension to the mime type, thus: 
TYPE="application/x-java-applet;jpi-version=1.5.0_06"

Since Sun doesn't look at the TYPE attribute and has specified no way to say that you want the latest of a family when using the TYPE attribute the functionality does not work on Mozilla based browsers. The latest plug-in will always be used and that is a problem as has been described elsewhere in this bug.

I see two ways out of this:
1) Sun implements a way to specify a family in the TYPE attribute and implements the same functionality that is in place for IE
or
2) Mozilla implements the same classid syntax that is available for IE, the <OBJECT classid="clsid:CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA" ... syntax

Either way Forms customers can use the Mozilla browser as they would IE even when Oracle has not caught up to the latest version in our certification.
I doubt we'll be able to do anything about this for Firefox 3 as we're getting really close to the end of anything but critical changes for it. Sun could fix this on their end independently of our release schedules, so I'd recommend talking to Sun about this.
I am the project lead for the next-generation Java Plug-In at Sun Microsystems. The new plug-in has new browser-independent functionality for specifying a particular JRE version upon which to run a particular applet. The new plug-in is available for testing now at

https://jdk6.dev.java.net/6uNea.html
https://jdk6.dev.java.net/testPlugIn.html

This should eliminate the need to make any browser-side changes in Firefox. It would be good if Oracle could confirm this so that this issue can be closed.
(In reply to comment #19)
Many thanks for that.
I tested the 1.6.0_10ea linked to above and my findings using Oracle Forms are as follows:
--It works as promised
--It works only on Firefox v3 (I used Beta 2)
--It works with the OBJECT (using the java: semantic described above) as well as with the EMBED tag
--It uses a new attribute called java_version that controls what version to use. No more clsid semantics (even though that seems to work for IE still). If an older version is specified in the java_version attribute, the latest one installed (in the "version family" or of the "major version" as Oracle calls it) will be used.
--It appears to obsolete the jpi-version semantic in the type attribute.
--It totally breaks using anything but the latest version of the plugin in earlier versions of Firefox (I tested with v2 only for this point). If you specify a version that is earlier than the latest major one installed, Firefox will not find the earlier even if it works when using v3 of Firefox (this is in version 2 of Firefox).
I think this bug can be closed, unless there are intentions to support the clsid semantics in the classid attribute in Firefox later on.
Marking WONTFIX per the above comment. Thanks all for sorting this out.
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → WONTFIX
I've downloaded the new Java linked above but I still get the same problem with my PeopleSoft. I am not "Java Savvy" so I am not sure if this is related or not. Note: Firefox 3 Beta 4 IS WORKING WITH MY KRONOS Version 2 did not. PeopleSoft loads OK but when I attempt to open an attachment it does not allow me to and just states "Loading Source Object", whereas IE7 does open the attachment in the same window. I am assuming that is the part of the code that says "load sources". 

This is the source code from the page:
<HTML><HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>PeopleSoft Source Display</TITLE>

<script language="JavaScript">
	var leftval = 0;
	var tempName = "SRCLNK";
	var pfx = "document.all.";
	var sfx = ".click()";

	function documentLoaded(key)
	{

	//alert("trLkUpRslts docLded = ");


		//window.opener.close();
    // If srcCtr value has been returned - loop thru srcs and display
    //   each one in a separate window.

		  var ctr = frmLkUpRslt.srcCtr.value;

		  if(ctr < 1)
		  {
			alert("ERROR: Transaction does not have a source attached!")
		  }

		  for (var i = 1; i <= ctr; i++)
		  {

		  //alert(ctr);
		  //alert(i);

			tempName = "SRCLNK";
			tempName = tempName + i;
			document.all.item(tempName).click();

			leftval = leftval + 20;	// increment "leftval" value so src windows dont overlap
		 //alert(leftval);

		 }

			window.close();



	}// end function


	//function Popup(sUrl,name,height,width, windowName)
	//{
	//	window.open(sUrl,windowName,"resizable=yes,scrollbars=yes,top=0,left=leftval,height=" + height + ",width=" + width);
	//}

	function Popup(sUrl,height,width,leftvalue)
	{
		window.open(sUrl,"","resizable=yes,scrollbars=yes,top=0,left=" + leftvalue + ",height=" + height + ",width=" + width);
		//window.open(sUrl,"","resizable=yes,scrollbars=yes,left=0,top=0, height=" + height + ",width=" + width);

	}

	function PopupWithName(sUrl,height,width,leftvalue)
	{
		window.open(sUrl,"bkscnsrc","resizable=yes,scrollbars=yes,top=0,left=" + leftvalue + ",height=" + height + ",width=" + width);
		//window.open(sUrl,"","resizable=yes,scrollbars=yes,left=0,top=0, height=" + height + ",width=" + width);

	}


	//////////////////////////////////////////////////////////////
	//GetSources
	//
	//Function used to get sources.
	//////////////////////////////////////////////////////////////
	function GetSources(amount,tidx,key,tagRecType,crTime,tagRecno,btnSource,invID,venName,voucher,neg)
	{//alert(neg);
		if(key == "")
		{
			alert("No matching work objects were found in Awd.");
			window.close();
		}

		else
		{
			// Convert special chars ifthey exist.
			// Check for '&'s in invID value
			var pos;
			//alert(invID);
			pos = invID.indexOf("&");
			while(pos != -1)
			{
				invID = invID.replace("&","%26");
				pos = invID.indexOf("&");
			}
			//alert(invID);

			//******************************************************
			// Check for '_'s in invID value
			pos = invID.indexOf("_");
			while(pos != -1)
			{
				invID = invID.replace("_","%5F");
				pos = invID.indexOf("_");
			}
			//alert(invID);

			//******************************************************
			// Check for '#'s in invID value
			pos = invID.indexOf("#");
			while(pos != -1)
			{
				invID = invID.replace("#","%23");
				pos = invID.indexOf("#");
			}
			//alert(txt);
			//******************************************************
			// Check for '-'s in invID value
			pos = invID.indexOf("-");
			while(pos != -1)
			{
				invID = invID.replace("-","%2D");
				pos = invID.indexOf("-");
			}

			//******************************************************
			// Check for '+'s in invID value
			pos = invID.indexOf("+");
			while(pos != -1)
			{
				invID = invID.replace("+","%2B");
				pos = invID.indexOf("+");
			}
			//alert("invID =");
			//alert(invID);

			//****************************************************************
			//****************************************************************


			//alert(venName);

			// Check for '&'s in venName value
			var pos;
			//alert(venName);
			pos = venName.indexOf("&");
			while(pos != -1)
			{
				venName = venName.replace("&","%26");
				pos = venName.indexOf("&");
			}
			//alert(venName);

			//******************************************************
			// Check for '_'s in venName value
			pos = venName.indexOf("_");
			while(pos != -1)
			{
				venName = venName.replace("_","%5F");
				pos = venName.indexOf("_");
			}
			//alert(venName);

			//******************************************************
			// Check for '#'s in venName value
			pos = venName.indexOf("#");
			while(pos != -1)
			{
				venName = venName.replace("#","%23");
				pos = venName.indexOf("#");
			}
			//alert(venName);

			//******************************************************
			// Check for '-'s in venName value
			pos = venName.indexOf("-");
			while(pos != -1)
			{
				venName = venName.replace("-","%2D");
				pos = venName.indexOf("-");
			}
			//alert(venName);


			//******************************************************
			// Check for '+'s in venName value
			pos = venName.indexOf("+");
			while(pos != -1)
			{
				venName = venName.replace("+","%2B");
				pos = venName.indexOf("+");
			}


			var myhref = "tc?tidx=6859c0X118dfa354bdX_7054903902752218&job=trtcFindFamily&TAG_RETSCR=trLkUpResults&DATA_key=" + key +
				"&DATA_createTime="+crTime+
				"&TAG_transAmt="+amount+
				"&TAG_negative=" +neg+

				"&TAG_TransInvID="+invID+
				"&TAG_TransVendorname="+venName+
				"&TAG_voucher="+voucher+

				"&INITIAL_VIEW=NO" +
				"&DATA_TASKNEW=" + frmLkUpRslt.DATA_EQ_TASK.value
				"&TAG_RECTYPE=" + tagRecType;
			//alert("GetSources");
			//alert(myhref);
			document.location.href=myhref;
		}

	}

	//////////////////////////////////////////////////////////////
	//ShowSource
	//
	//Function used to show sources.
	//////////////////////////////////////////////////////////////
	//function ShowSource(tidx,amount,crda,key,format)
	function ShowSource(tidx,crda,key,format,srcType)
	{//alert(srcType);

		if(srcType != "BADSCAN")
		{
			var invID = "732";
			var venName = "RONALD  BARKYOUMB";

			// Convert special chars ifthey exist.
			// Check for '&'s in invID value
			var pos;
			//alert(invID);
			pos = invID.indexOf("&");
			while(pos != -1)
			{
				invID = invID.replace("&","%26");
				pos = invID.indexOf("&");
			}
			//alert(invID);

			//******************************************************
			// Check for '_'s in invID value
			pos = invID.indexOf("_");
			while(pos != -1)
			{
				invID = invID.replace("_","%5F");
				pos = invID.indexOf("_");
			}
			//alert(invID);

			//******************************************************
			// Check for '#'s in invID value
			pos = invID.indexOf("#");
			while(pos != -1)
			{
				invID = invID.replace("#","%23");
				pos = invID.indexOf("#");
			}
			//alert(txt);
			//******************************************************
			// Check for '-'s in invID value
			pos = invID.indexOf("-");
			while(pos != -1)
			{
				invID = invID.replace("-","%2D");
				pos = invID.indexOf("-");
			}

			//******************************************************
			// Check for '+'s in invID value
			pos = invID.indexOf("+");
			while(pos != -1)
			{
				invID = invID.replace("+","%2B");
				pos = invID.indexOf("+");
			}
			//alert("invID =");
			//alert(invID);

			//****************************************************************
			//****************************************************************


			//alert(venName);

			// Check for '&'s in venName value
			var pos;
			//alert(venName);
			pos = venName.indexOf("&");
			while(pos != -1)
			{
				venName = venName.replace("&","%26");
				pos = venName.indexOf("&");
			}
			//alert(venName);

			//******************************************************
			// Check for '_'s in venName value
			pos = venName.indexOf("_");
			while(pos != -1)
			{
				venName = venName.replace("_","%5F");
				pos = venName.indexOf("_");
			}
			//alert(venName);

			//******************************************************
			// Check for '#'s in venName value
			pos = venName.indexOf("#");
			while(pos != -1)
			{
				venName = venName.replace("#","%23");
				pos = venName.indexOf("#");
			}
			//alert(venName);

			//******************************************************
			// Check for '-'s in venName value
			pos = venName.indexOf("-");
			while(pos != -1)
			{
				venName = venName.replace("-","%2D");
				pos = venName.indexOf("-");
			}
			//alert(venName);


			//******************************************************
			// Check for '+'s in venName value
			pos = venName.indexOf("+");
			while(pos != -1)
			{
				venName = venName.replace("+","%2B");
				pos = venName.indexOf("+");
			}







			amt = frmLkUpRslt.amount.value;
				var amtlen = amt.length;
				amt = amt.substring(0,amtlen - 2);

			var height = 350;
			var width = 750;

			 href =
			  "tc"
				+ "?tidx=" + frmLkUpRslt.tidx.value
				+ "&job=tcGetImageType"
				+ "&DATA_pageNumber=1"
				+ "&DATA_scale=.75"
				+ "&DATA_rotation=0"
				+ "&DATA_key="+key
				+ "&TAG_RECNUMBER="
				+ "&TAG_TASKNEW=" + frmLkUpRslt.DATA_EQ_TASK.value
				+ "&TAG_negative="
				+ "&DATA_amt=" + amt
				+ "&DATA_amount="
				+ "&DATA_createTime="+ crda
				+ "&TAG_TransKey="+ frmLkUpRslt.TransKey.value
				+ "&TAG_TransBA="+ frmLkUpRslt.TransBA.value
				+ "&TAG_TransWT="+ frmLkUpRslt.TransWT.value
				+ "&TAG_VReject=1"
				//+ "&TAG_transAmt=0.0000"
				+ "&TAG_invoiceid=" //ITEM_TransInvID
				+ "&TAG_vendorname="
				+ "&TAG_voucher=00019216"
				+ "&TAG_invoicedate="
				+ "&TAG_acnt="
				+ "&TAG_costcntr="

				+ "&TAG_GETWRKTYPE="
				+ "&DATA_format="+ format;

			//alert(href);
			//document.location.href=href;


				Popup(href,height,width,leftval);



		} // END IF
	 }


</script>
</HEAD>
<BODY bgcolor=#FFFFFF onLoad="documentLoaded('2008-03-17-16.08.54.611656T01')">

<form name=frmLkUpRslt METHOD="POST">
  <input type="hidden" name="DATA_EQ_IVID" value=>
  <input type="hidden" name="INITIAL_VIEW" value="YES">
  <input type="hidden" name="DATA_EQ_TASK" value=GetSource>

  <input type="hidden" name="amount" value=>
  <input type="hidden" name="negative" value=>
  <input type="hidden" name="tidx" value='6859c0X118dfa354bdX_7054903902752218'>
  <input type="hidden" name="TransKey" value='2008-03-17-16.08.54.611656T01'>
  <input type="hidden" name="TransBA" value=''>
  <input type="hidden" name="TransWT" value=''>
  <input type="hidden" name="srcCtr" value='1'>
  <input type="hidden" name="susp" value=>
  <input type="hidden" name="suspFlg"     value="">

  <input type="hidden" name="SESS_DATA_src2" value=''>
  <input type="hidden" name="SESS_DATA_src1" value=''>

  <!--img src="/awd/tc/images/trpHeader110801.gif" alt="picture"></img-->&nbsp;&nbsp;&nbsp;

	<p><b><H1>LOADING SOURCE OBJECT...</H1></b>
	<BR>




	<INVOICE &nbsp;-&nbsp;>
	<INDEXED><BR><BR>



	<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
	<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>


		<u><label id='SRCLNK1'style="CURSOR:hand;" onclick="ShowSource('null', '2008-03-17-16.08.54.615768', '2008-03-17-16.08.54.615768O01', 'T', 'SCAN');">2008-03-17-16.08.54.615768O01SCAN</label></u><br>


		1



N
<BR>
	<INPUT type=button value="s" name="btnSource" style="HEIGHT: 25px; POSITION: relative; WIDTH: 70px" onfocus="GetSources('0.0000','6859c0X118dfa354bdX_7054903902752218','2008-03-17-16.08.54.611656T01','LOOKUP','2008-03-17-16.08.54.611656', '', btnSource, '732', 'RONALD  BARKYOUMB', '00019216', '')" onclick="GetSources('0.0000','6859c0X118dfa354bdX_7054903902752218','2008-03-17-16.08.54.611656T01','LOOKUP','2008-03-17-16.08.54.611656', '', btnSource, '732', 'RONALD  BARKYOUMB', '00019216', '')">
</FORM>
</BODY>
</HTML>
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.