Video Screencast Help
Search Video Help Close Back
to help
New in the Rewards Catalog: Vouchers for "Symantec Technical Specialist" and "Symantec Certified Specialist" exams.

Issue with Isolated Java Version 1.6.0.06

Updated: 29 Jul 2010 | 18 comments
SuccessSystems's picture
0 0 Votes
Login to vote

I have been struggling isolating a version of java and having that as a dependancy.
The senario:
Client must have IE 6 with JRE 1.6.0.06 for a web based call centre application. Thwy have just finished an SOE refresh and have IE 7 and JRE 1.6.0.07 (not virtualized), the vendor will only support 1.6.0.06. I suggested SWV and packaged JRE 1.6.0.06 and the Multiple IE's version 6.
My problem is I can't get the virtual package of IE 6 to see the package of JRE 1.6.0.06 as a dependancy. I have isolated JRE 1.6.0.06 with the 3 tick settings in the admin tool and added it as a dependancy for the IE 6 package. When I do this and go to http://www.javatester.org/version.html I get a popup window saying IE is trying to open a different version of JAVA and it opens another web window.
Here is the testing I have done:

  1. Remove JRE 1.6.0.07 from PC and reboot.
  2. Open IE 7 go to javatester.org and comfirm no Java on the PC.
  3. Import JRE 1.6.0.06 package and activate with no isolation. Test with IE 7 at javatester.org and confirm that the package works and IE7 is using JRE 1.6.0.06.
  4. Deactivate JRE 1.6.0.06 and add the 3 ticks to isolate and activate it.Test with IE 7 at javatester.org and confirm that IE7 no longer sees JRE 1.6.0.06.
  5. Import IE6 package and add JRE 1.6.0.06 as dependancy and activate IE6 package. Test IE6 at javatester.org and confirm that IE6 is using JRE 1.6.0.06 and also test with IE 7 at javatester.org and confirm that IE7 still doen't see JRE 1.6.0.06.
  6. ReInstall on the PC JRE 1.6.0.07 and test with IE 7 at javatester.org and confirm that IE7 is using JRE 1.6.0.07.
  7. Open the IE6 package and test IE6 at javatester.org and I get a "Java Plugin Warning" A Different version of Java is needed.

The strange thing is I have another virtual package of JRE 1.5.0.06 and this isolates and works correctly.

If anyone can help me with this it woauld be really appreciated as my clients are a tight deadline.

Thanks.

Comments

SuccessSystems's picture
09
Aug
2009
0 Votes 0
Login to vote

Some more Info

Sorry some more information:

OS is Xp SP3 + SWV 6.1 MP1 all virtual packages work when not isolated.

Jordan's picture
10
Aug
2009
0 Votes 0
Login to vote

Have you read any of the

Have you read any of the articles here on how to virtualize Java?

Here's the most recent one https://www-secure.symantec.com/connect/articles/virtualizing-java-symantec-workspace-virtualization

If a forum post solves your problem please flag is as the solution

SuccessSystems's picture
11
Aug
2009
0 Votes 0
Login to vote

Thanks for that info. I have

Thanks for that info.
I have read it and tried to implement what it suggests  but I just can't get it to work.
While it appears to have stopped reading from the software\classes key this seems to be HKCurrent User and when looking at Procees Monitor it now reads the version of Java from HKLM\Software\Javasoft.
Is it possible to add more than one rule and what is the syntax for HKLM?

Thanks for your help.

SuccessSystems's picture
11
Aug
2009
0 Votes 0
Login to vote

Ok so here is where I am

Ok so here is where I am at.

I have managed to isolate all the registry keys using IsolateRules and you can do multiple entries.
The issue I now have is that 1.6.0_06 is what is shown in the Tools>Advanced dialog in IE6 but when I go to www.javatester.org it says 1.6.0_07 is running.
I have run Proccess Monitor when running www.javatester.org and it loads 1.6.0_06 right until the very end. All registry calls point to version 1.6.0_06 but IE does a call to C:\Program Files\Java\jre.1.6.0_06 using a shortfile name call and resolves 1.6.0_07.
Jordan does the IsolateRules also work for directories and if so what is the correct syntax to get it to work, as I have tried everything I can think of and can't find anything posted other than for registry entries.
Also is there a limit to the number of entries permitted in the IsolateRules key?

Thanks again for your help.

Jordan's picture
12
Aug
2009
0 Votes 0
Login to vote

Does isolation work with the

Does isolation work with the File system? Yes
Does granular isolation work with the file system? No

If you set up one of the three normal isolation flags (Hide from Base, Hide From other Layers, Can't see Other layers) then you'll get isolation for both the registry and the file system.

The limit for Isolation Rules key should be whatever the Multi_SZ limit is in the registry.

If a forum post solves your problem please flag is as the solution

philbenson's picture
12
Aug
2009
0 Votes 0
Login to vote

Multi_SZ limit is 64KB, so

Multi_SZ limit is 64KB, so that should not be too much of a problem. Does the problem with resolving SFP still exist Jordan?

Cheers
Phil

Jordan's picture
12
Aug
2009
0 Votes 0
Login to vote

Yep.  Trust me, if that issue

Yep.  Trust me, if that issue was resolved we'd be making a big deal out of it here on Connect.

If a forum post solves your problem please flag is as the solution

philbenson's picture
11
Aug
2009
0 Votes 0
Login to vote

That sounds as if IE / and or the virtualisation

is having problems with resolving the correct path (8.3). I know SVS 2.1 had allot of problems here, and the only resolve was to ensure that multiple version of the same application (in your case this would be java) had unique installation directories in a 8.3 pattern, for example java605, java607. I thought this issue had been resolved in hte latest version, but obviusly not.

OT: Is that you Jim? or perhaps Justin or Ditch ;-)

Cheers
Phil

SuccessSystems's picture
12
Aug
2009
0 Votes 0
Login to vote

That's a shame

This was the perfect scenario to introduce the benefits of SWV. It was the clients goal to implement a soultion without making any changes to the SOE.
The work around is to remove 1.6.0_07 from the BASE and have it as a virtual package, then all works as it should.
Hopefully you can can get the shortfile name issue resolved or add the ability of Granular Isolation to the file system.
Thanks again for all your help.

Hi Phil - It's Jim, hope everything is going well for you.

Jordan's picture
12
Aug
2009
0 Votes 0
Login to vote

you should only need to have

you should only need to have one version of Java in a layer to get around the short file name issue but if you need to have them both installed to the same location there is a second way to get around this problem but I'd need to know the folder structure where the SFNs are getting generated.

If a forum post solves your problem please flag is as the solution

SuccessSystems's picture
12
Aug
2009
0 Votes 0
Login to vote

Ok The issue is with the BASE

Ok

The issue is with the BASE install of jre 1.6.0_07 and the virtual package of IE6 doing the shortfile name call.
The path is C:\Program Files\Java\jre1.6.0_07

SuccessSystems's picture
12
Aug
2009
0 Votes 0
Login to vote

Change to Post Above

I just realized that IE is actually doing a shortfilename call on
C:\Program Files\Java\jre1.6.0_06  - but because it is virtualized it resolves C:\Program Files\Java\jre1.6.0_07, which would have the same shortfile name.

Jordan's picture
13
Aug
2009
0 Votes 0
Login to vote

IE, since it's in the base,

IE, since it's in the base, is always going to see the version in the base first and the IE version in the layer is always going to see the virtualized Java first.  You can get around this by setting up layer dependencies and isolation(recommended) or changing the layer priority (not recommended).

So what you've got is two versions of IE and two versions of Java.

Assuming you have IE6 in the base and IE7 virtualized here's what you do.

to get IE6 (base) to work with Java 1.6.0.6 (layer)

1)  Create an empty layer named IE6.
2) Double click on that layer and go to dependent layers tab
3) add your Java 1.6.0.6 layer
4) got to the auto run tab and add the following as a new entry "C:\Program Files\Internet Explorer\iexplore.exe"
5) Close the advanced layer editor
6) Right-click your Java 1.6.0.6
7) Select "Hide From Other Layers"

What we've done is set IE6 to always run as if it's in a layer and then set up a dependency, so it will see the Java layer over any other java layer or install, and then we hide the Java layer from all other layers (IE7) but since there's a dependency set up between IE6 and Java 1.6.0.6 that isolation rule is ignored for them.

Now IE7 will only be able to see the newer version of Java 1.6.0.7 that installed in the base and not the virtualized Java layer.

If a forum post solves your problem please flag is as the solution

SuccessSystems's picture
13
Aug
2009
0 Votes 0
Login to vote

Sorry for not explaining it

Sorry for not explaining it better.
IE6 is virtual Layer and 1.6.0_06 is a virtual layer.
IE7 and 1.6.0_07 are on the BASE

IE6 has 1.6.0_06 layer as dependancy and 1.6.0_06 has all 3 isolation selctions ticked.
IE6 makes the shortfile name call that resolves to 1.6.0_07.

Not sure if this suggestion will still work.

Jordan's picture
13
Aug
2009
0 Votes 0
Login to vote

this isn't a SFN issue this

this isn't a SFN issue this is a Java issue.

Java likes to make sure that it always launches the newest version installed so this is expected behavior, there's an article by jared payne that explains how Java behaves and how to virtualize it (pre isolation).

Try adding this isolation rule to the IE6 layer, I don't know if java.exe is the right process so check that:

IsolationRules (REG_MULTI_SZ) = "*\iexplore.exe<tab>myGuid<tab>0x0002<tab>\REGISTRY\USER\S-1-5*\Software\Classes\CLSID\*<tab>*<tab>BASE"

What we're going to do is set up a rule so IE6 cannot see the classes for the user, or if you want you can change \REGISTRY\USER\S-1-5*\Software\Classes\CLSID\* to \REGISTRY\* just to see if hiding the registry will work.

remember to replace <tab> with real tab characters in notepad

Also this information from the Java isolation article is worth pointing out:

Another interesting problem that I encountered during this process was that if your settings are configured incorrectly, when the Java plug-in starts in Internet Explorer it will re-write all its registry settings. This means that if the iexplore process is running from the layer, but the registry isolation is not correct, Java will write all its 1.5 settings into your Java 1.4 application layer. You can resolve this condition by resetting the layer. (I had to do this a number of times while developing my layers and getting just the right settings.)
 

If a forum post solves your problem please flag is as the solution

Jordan's picture
13
Aug
2009
0 Votes 0
Login to vote

How in the world did you get

How in the world did you get IE6 in a layer, there's no installer for it?

If a forum post solves your problem please flag is as the solution

SuccessSystems's picture
13
Aug
2009
0 Votes 0
Login to vote

I used the Multiple IEs

I used the Multiple IEs installer from http://tredosoft.com/Multiple_IE

I have added that exclusion along with several others to get IE6 not to see any registry for 1.6.0_07 on the base and this all now appears to work.
When I run Process Monitor all registry keys point to the layer and all show 1.6.0_06. The IE6 serches the C:\Program Files\Java folder and this all resolves to 1.6.0_06 Until one call does the short file name call for C:\Program Files\Java\jre1.6.0_06 and resolves to C:\Program Files\Java\jre1.6.0_07
The shortfile name is C:\Progra~1\Java\jre16~1.0_0

Jordan's picture
14
Aug
2009
0 Votes 0
Login to vote

My worry with using a 3rd

My worry with using a 3rd party installer is maybe something isn't getting set up correctly so that could be causing additional problems for this scenario.

Well the important thing is you got it working.

If a forum post solves your problem please flag is as the solution