Thursday, February 15, 2007
Reason #87 to hate Java
Incidently, this is also reason #46 to hate Oracle.
When you install the Citrix Management Console (CMC) for PS4 it also installs the Java Runtime Environment (JRE) 1.4.2_06. It's a requirement for the console. Citrix Support doesn't provide any specific guidance (that I can find) on upgrading the JRE to a newer version. Several posts in the support forums and on Brian Madden's site suggest that it's doable, but might cause some issues (e.g., having to reinstall the CMC).
As we're all now very well aware (or should be!) Daylight Savings Time starts early this year and the JRE is one of the affected products. Sun's guidance is to upgrade or apply a patch which only works on certain versions, of which 1.4.2_06 is one. Fantastic.
In this environment the Citrix servers support a single LOB application that requires connectivity to an Oracle database, thus the Oracle runtime client is installed, something like v9.1.
I recently tried to apply the Sun tzupdater patch to one of the Citrix servers and it failed. So I ran
Oracle Frustration: when installing the Oracle client tools why does it require this older JRE to be installed? (I checked - it's a dependency during installation that cannot be unchecked.) Why not just check for and use an existing version? Also, why doesn't it register itself or the JRE with the OS like every other application? Checking Add/Remove Programs - JRE 1.4.2_06 is there, but nothing about Oracle or the older JRE.
Java Frustration: isn't Java supposed to unite the industry in harmony or something? Allow developers to write code once and then run it anywhere regardless of platform? So then why does it make things MORE complicated? Why all of these minor versions and interdependencies? What a mess! And don't even get me started about Java performance....
Anyway, here's how I fixed this unholy mess:
When you install the Citrix Management Console (CMC) for PS4 it also installs the Java Runtime Environment (JRE) 1.4.2_06. It's a requirement for the console. Citrix Support doesn't provide any specific guidance (that I can find) on upgrading the JRE to a newer version. Several posts in the support forums and on Brian Madden's site suggest that it's doable, but might cause some issues (e.g., having to reinstall the CMC).
As we're all now very well aware (or should be!) Daylight Savings Time starts early this year and the JRE is one of the affected products. Sun's guidance is to upgrade or apply a patch which only works on certain versions, of which 1.4.2_06 is one. Fantastic.
In this environment the Citrix servers support a single LOB application that requires connectivity to an Oracle database, thus the Oracle runtime client is installed, something like v9.1.
I recently tried to apply the Sun tzupdater patch to one of the Citrix servers and it failed. So I ran
java -version
, to find that 1.4.2_06 was not the registered version, but 1.3.1_01. Wa-huh? As it turns out, Oracle requires a JRE during installation so buried in the Oracle program directory is this older version of the JRE which is not compatible with the TZUpdater. Argh!Oracle Frustration: when installing the Oracle client tools why does it require this older JRE to be installed? (I checked - it's a dependency during installation that cannot be unchecked.) Why not just check for and use an existing version? Also, why doesn't it register itself or the JRE with the OS like every other application? Checking Add/Remove Programs - JRE 1.4.2_06 is there, but nothing about Oracle or the older JRE.
Java Frustration: isn't Java supposed to unite the industry in harmony or something? Allow developers to write code once and then run it anywhere regardless of platform? So then why does it make things MORE complicated? Why all of these minor versions and interdependencies? What a mess! And don't even get me started about Java performance....
Anyway, here's how I fixed this unholy mess:
- Java Control Panel, Advanced tab, explicitly set JRE to 1.4.2_06 instead of plug-in default (I don't know if this is necessary, but I felt better about forcing it to that version)
- Run
pathman /rs "C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin"
to remove the old version from the path (1.4.2_06 doesn't list itself in the path). NOTE: pathman is part of the 2003 Resource Kit. - Logoff and back on. Running
java -version
now shows the correct 1.4.2_06, and running tzupdater works ok.