Skip to main content

Java 3D Web Start trial deployment

26 replies [Last post]
jada
Offline
Joined: 2004-03-17
Points: 0

We are happy to announce that we have a new Java 3D Web Start website : https://j3d-webstart.dev.java.net .
Applications can now access Java 3D from this site using the Java Network Launching Protocol (JNLP), without requiring user's of the application to download and install Java 3D. Please check it out, your feedback and comment will be greatly appreciated.

thanks,
Java 3D Team.

Note: We are aware of a caching issue that happens when a different java3d apps JNLP file is opened, web start will download java3d again rather than using the existing java3d from its cache. For example, using the 2 example programs we have posted, HelloUniverse and TickTockPicking. A user should only need a single java3d download to execute both programs.
We believe this problem is caused by the way java.net server is configured. We are currently working with the java.net folks to resolve this issue.

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
jada
Offline
Joined: 2004-03-17
Points: 0

It is currently being work on by the java.net engineering team. We hope it will be resolved ASAP, but it isn't a showstopper for our release.

Mark McKay

java3d-interest@javadesktop.org wrote:

>>Until that happens, couldn't you simply have a
>>separate JNLP file that uses the DirectX version
>>instead? (What's the URL of the directx libraries,
>>assuming they're posted?)
>>
>>
>
>That would make the JNLP file Windows-specific, which sort of defeats the cross-platform nature of Java 3D. We don't have any interest in a Windows-only solution. Or did you mean a JNLP file that used DirectX on Windows and OpenGL on Linux, or Solaris (or Apple)?
>
>

On top of this, the DirectX distribution contains errors that causes it
to fail when doing odd things with the scene graph or using multiple
monitors. I always advise my users to use the OpenGL version
exclusively, since I know that distribution won't arbitrarily fail with
fatal errors.

Mark McKay
--
http://www.kitfox.com

---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@java3d.dev.java.net
For additional commands, e-mail: interest-help@java3d.dev.java.net

jada
Offline
Joined: 2004-03-17
Points: 0

We are about to conclude the trial phase of Java 3D 1.3.1_01 Web Start deployment. So far, we have yet to receive any serious issue that required changes on our part. Unless we receive any new issue, we will finalize Java 3D 1.3.1_01 Web Start Release as early as next week.

thanks,
Java 3D Team.

scotthong
Offline
Joined: 2006-05-05
Points: 0

Will the java.net https download issue be fixed when java3d web start released?

Thanks

-- Scott

herkules
Offline
Joined: 2003-06-12
Points: 0

As far as I could see, no issues with my project.

But what I'd like to see is a 'daily build' jnlp-extension. Or a 'recent quality build'.

This should be accompanied with a defined download structure that allows me to get 'latest' Java3D build for development with an ant script.

kcr
Offline
Joined: 2004-03-17
Points: 0

> But what I'd like to see is a 'daily build'
> jnlp-extension. Or a 'recent quality build'.
>
> This should be accompanied with a defined download
> structure that allows me to get 'latest' Java3D build
> for development with an ant script.

Getting access to daily/weekly builds turns out to be easier said than done. There is no automated way to have nightly builds uploaded to the j3d-webstart project. We will release periodic early access builds of 1.3.2, starting next week with 1.3.2-build5, and make them accessible via an "early-access/java3d-1.3.2-exp" JNLP file.

-- Kevin

miles
Offline
Joined: 2004-06-05
Points: 0

> 2) Java 3D 1.3.1 ( DirectX ) deployment is an entirely separate
> distribution than OpenGL. We can't think of any good way for an
> application JNLP file to select it without the use a servlet. We will conside
> it when java.net is ready to support servlet.

Until that happens, couldn't you simply have a separate JNLP file that uses the DirectX version instead? (What's the URL of the directx libraries, assuming they're posted?)

Oh and any chance of an plugin extension for applets? Java3D applets are amazing, but deployment is still a problem there too.

kcr
Offline
Joined: 2004-03-17
Points: 0

> Until that happens, couldn't you simply have a
> separate JNLP file that uses the DirectX version
> instead? (What's the URL of the directx libraries,
> assuming they're posted?)

That would make the JNLP file Windows-specific, which sort of defeats the cross-platform nature of Java 3D. We don't have any interest in a Windows-only solution. Or did you mean a JNLP file that used DirectX on Windows and OpenGL on Linux, or Solaris (or Apple)?

> Oh and any chance of an plugin extension for applets?
> Java3D applets are amazing, but deployment is still
> l a problem there too.

If you install Java 3D into your local JDK, then Java 3D applets work fine. What additional support did you have in mind?

miles
Offline
Joined: 2004-06-05
Points: 0

> That would make the JNLP file Windows-specific, which sort of defeats
> the cross-platform nature of Java 3D. We don't have any interest in a
> Windows-only solution. Or did you mean a JNLP file that used DirectX on
> Windows and OpenGL on Linux, or Solaris (or Apple)?

I certainly don't want a Windows-only solution, either. What I meant was, the two files would allow you to request either the Direct3D or OpenGL versions of Java3D in Windows; the two files would act identically on Linux and OS X.

> If you install Java 3D into your local JDK, then Java 3D applets work fine.
> What additional support did you have in mind?

I'd like to have nearly seamless deployment for Java3D in applets. The process needs to be as invisible and painless as possible for end users.

The Java Plugin allows you to request extensions which the plugin will install if the user approves (or it can execute an external installer). In fact, the Java plugin documentation even has an example for how to request the non-native parts of Java3D.

jada
Offline
Joined: 2004-03-17
Points: 0

1) Yes we plan to invite Apple to come onboard on the Web Start effort.

2) Java 3D 1.3.1 ( DirectX ) deployment is an entirely separate distribution than OpenGL. We can't think of any good way for an application JNLP file to select it without the use a servlet. We will conside it when java.net is ready to support servlet.

Anonymous

Hi,

I'm amazed that the webstard-jnlp also works with Linux. Thats OK but I can't find the Linux-runtime at the J3D-projectpage at java.net. blackdown.org also doesn't offers version 1.3.1_01 - so where does it come from or where can I get the normal setup file from?

Oxy

kcr
Offline
Joined: 2004-03-17
Points: 0

> I'm amazed that the webstard-jnlp also works with
> Linux. Thats OK but I can't find the Linux-runtime at
> the J3D-projectpage at java.net. blackdown.org also
> doesn't offers version 1.3.1_01 - so where does it
> come from or where can I get the normal setup file
> from?

The only difference between 1.3.1 and 1.3.1_01 is a small change to j3dutils.jar, which is common across all platforms. The 1.3.1_01 release is identical to 1.3.1, except for a small fix to scenegraph.io in 4 places such that it uses the right ClassLoader; this was needed for Web Start apps that use scenegraph.io. Given this, and our desire to minimize the effort surrounding this release, the only place 1.3.1_01 is available is via JNLP on java.net. We don't plan to release 1.3.1_01 install bundles.

-- Kevin

jada
Offline
Joined: 2004-03-17
Points: 0

What version of Java Web Start are you using?

Also can you make a HTTPS connection through your proxy with the attached simple standalone java program ?

Just compile it and run:

java -Dhttps.proxyHost=
-Dhttps.proxyPort=
JavawsJSSETest

and see if the test pass.

***************************************************

/* Copyright (c) 1999 by Sun Microsystems, Inc.
* All rights reserved.

* ident @(#)JavawsJSSETest.java 1.3 01/03/02

* This code is provided "AS IS", without any warranty of any kind.
* Sun is under no obligation to provide maintenance or support for
* this code or provide future updates thereto.

* SUN DOES NOT MAKE AND HEREBY DISCLAIMS ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF NON-
* INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE,
* OR ANY WARRANTIES ARISING FROM A COURSE OF DEALING, USAGE OR TRADE
* PRACTICE.
*/

import java.net.*;
import java.io.*;
import java.security.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JavawsJSSETest {
public static void main(String[] args) {
System.out.println("STATUS: JSSE START");
com.sun.net.ssl.internal.ssl.Provider p = new com.sun.net.ssl.internal.ssl.Provider();
Security.addProvider(p);
URL.setURLStreamHandlerFactory(new HttpsHandlerFactory());
JavawsJSSETest j = new JavawsJSSETest();
j.runTest();
try {
Thread.sleep(4000);
} catch (InterruptedException ignore) {
}
System.exit(0);
}

private void runTest() {
try {
URL verisign = new URL("https://www.verisign.com/");
BufferedReader in = new BufferedReader(new InputStreamReader(verisign.openStream()));
String inputLine;
int lines = 0;
while ((inputLine = in.readLine()) != null) {
// System.out.println(inputLine);
lines++;
}
in.close();

if (lines > 0) {
System.out.println("STATUS: JSSE PASSED");
} else {
System.out.println("STATUS: JSSE FAILED");
}
} catch (Exception e) {
System.out.println("STATUS: JSSE EXCEPTION");
e.printStackTrace();
System.out.println("STATUS: JSSE FAILED");
}
}

}

class HttpsHandlerFactory implements URLStreamHandlerFactory {
public URLStreamHandler createURLStreamHandler(final String protocol) {
if (protocol != null && protocol.equals("https")) {
return new com.sun.net.ssl.internal.www.protocol.https.Handler();
};
return null;
}
}

***************************************************

jada
Offline
Joined: 2004-03-17
Points: 0

Yes, that is a different problem they have solved. In fact, we have verified that JOGL has the same problem that Java 3D has. If an application that uses JOGL needs to have one of
its jar files downloaded, then JOGL will be downloaded again. You can see the problem by loading a simple demo (GearTmp) and then loading a demo that needs an
additional jar file (VertexProgWarp).

https://jogl-demos.dev.java.net/webstart/GearsTmp.jnlp
https://jogl-demos.dev.java.net/webstart/VertexProgWarp.jnlp

Note that jogl-demos.jar and jogl.jar are both reloaded when the second demo is loaded. The second time you click on either demo, nothing is reloaded.

- Chien.

kcr
Offline
Joined: 2004-03-17
Points: 0

> Hello.
> The jogl guys had exactly the same problem with their
> demos. It is now resolved, so their experience might
> help you.

The JOGL guys had a slightly different (and more serious problem) that has since been fixed. The problem we are now experiencing is a java.net problem and JOGL runs into it, too. If you have two different apps from two different jar file both using the same extension library (such as Java 3D or JOGL), the library will download each time the app needs to be downloaded.

The java.net folks are looking into the problem.

-- Kevin

miles
Offline
Joined: 2004-06-05
Points: 0

A few questions:

1) Any chance Apple will get onboard with this? Or will we have to request manual installations for OS X users?

2) I notice, by default, it is using the OpenGL version of Java3D for Windows; any chance of getting a version that will use the DirectX binaries? Most Windows users that I've interacted with seems to have much better luck with DirectX out of the box.

herkules
Offline
Joined: 2003-06-12
Points: 0

Ok, checked it. Obviously, our proxy required authorization in this case, but not in others. Dunno why. To be honest, many people wondered what that proxy does. So maybe I am the only person in the world with that problem??

The result doesn't even change when I comment out these lines:

// com.sun.net.ssl.internal.ssl.Provider p = new com.sun.net.ssl.internal.ssl.Provider();
// Security.addProvider(p);
// URL.setURLStreamHandlerFactory(new HttpsHandlerFactory());

BTW, I can open https://www.verisign.com/ with my browser (IE) w/o further authorization.

Additionally, after some experiments, I get a 407 also for non-https but http URLs with the same program.

STATUS: JSSE START
java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.0 407 Proxy Authentication Required"
at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:923)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(DashoA6275)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:615)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getInputStream(DashoA6275)
at java.net.URL.openStream(URL.java:913)STATUS: JSSE EXCEPTION
STATUS: JSSE FAILED
at JavawsJSSETest.runTest(JavawsJSSETest.java:46)
at JavawsJSSETest.main(JavawsJSSETest.java:30)

Chien Yang

Java Web Start should be able to handle HTTPS + proxy authentication.
We suspect it is something wrong with your proxy server setup. Sorry, we
cannot reproduce your problem on our side.

Can you try the attached testcase again ? This version allows you to
supply the proxy username and password. Test it and see if it works.

java -DproxyHost= -DproxyPort=
-Dusername=
-Dpassword=
JavawsJSSETest

What version of java and JWS are you running ?
When you use JWS to launch the application, do you see the password
proxy dialog pop up?

- Chien.

java3d-interest@javadesktop.org wrote:
> Ok, checked it. Obviously, our proxy required authorization in this case, but not in others. Dunno why. To be honest, many people wondered what that proxy does. So maybe I am the only person in the world with that problem??
>
> The result doesn't even change when I comment out these lines:
>
> // com.sun.net.ssl.internal.ssl.Provider p = new com.sun.net.ssl.internal.ssl.Provider();
> // Security.addProvider(p);
> // URL.setURLStreamHandlerFactory(new HttpsHandlerFactory());
>
>
> BTW, I can open https://www.verisign.com/ with my browser (IE) w/o further authorization.
>
> Additionally, after some experiments, I get a 407 also for non-https but http URLs with the same program.
>
>
>
> STATUS: JSSE START
> java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.0 407 Proxy Authentication Required"
> at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:923)
> at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(DashoA6275)
> at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:615)
> at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getInputStream(DashoA6275)
> at java.net.URL.openStream(URL.java:913)STATUS: JSSE EXCEPTION
> STATUS: JSSE FAILED
> at JavawsJSSETest.runTest(JavawsJSSETest.java:46)
> at JavawsJSSETest.main(JavawsJSSETest.java:30)
> ---
> [Message sent by forum member 'Herkules' (Joerg Plewe)]
>
> http://www.javadesktop.org/forums/thread.jspa?messageID=26330&#26330
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: interest-unsubscribe@java3d.dev.java.net
> For additional commands, e-mail: interest-help@java3d.dev.java.net
>

/* Copyright (c) 1999 by Sun Microsystems, Inc.
* All rights reserved.

* ident @(#)JavawsJSSETest.java 1.3 01/03/02

* This code is provided "AS IS", without any warranty of any kind.
* Sun is under no obligation to provide maintenance or support for
* this code or provide future updates thereto.

* SUN DOES NOT MAKE AND HEREBY DISCLAIMS ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF NON-
* INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE,
* OR ANY WARRANTIES ARISING FROM A COURSE OF DEALING, USAGE OR TRADE
* PRACTICE.
*/

import java.net.*;
import java.io.*;
import java.security.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JavawsJSSETest2 {
public static void main(String[] args) {
System.out.println("STATUS: JSSE START");
Authenticator.setDefault(new DummyAuthenticator());
com.sun.net.ssl.internal.ssl.Provider p = new com.sun.net.ssl.internal.ssl.Provider();
Security.addProvider(p);
URL.setURLStreamHandlerFactory(new HttpsHandlerFactory());
JavawsJSSETest2 j = new JavawsJSSETest2();
j.runTest();
try {
Thread.sleep(4000);
} catch (InterruptedException ignore) {
}
System.exit(0);
}

private void runTest() {
try {
URL verisign = new URL("https://www.verisign.com/");
BufferedReader in = new BufferedReader(new InputStreamReader(verisign.openStream()));
String inputLine;
int lines = 0;
while ((inputLine = in.readLine()) != null) {
// System.out.println(inputLine);
lines++;
}
in.close();

if (lines > 0) {
System.out.println("STATUS: JSSE PASSED");
} else {
System.out.println("STATUS: JSSE FAILED");
}
} catch (Exception e) {
System.out.println("STATUS: JSSE EXCEPTION");
e.printStackTrace();
System.out.println("STATUS: JSSE FAILED");
}
}

}

class HttpsHandlerFactory implements URLStreamHandlerFactory {
public URLStreamHandler createURLStreamHandler(final String protocol) {
if (protocol != null && protocol.equals("https")) {
return new com.sun.net.ssl.internal.www.protocol.https.Handler();
};
return null;
}
}

class DummyAuthenticator extends Authenticator {

DummyAuthenticator() {
super();
}

protected synchronized PasswordAuthentication getPasswordAuthentication()
{
if (System.getProperty("username") != null &&
System.getProperty("password") != null) {

String username = System.getProperty("username");
char[] password = System.getProperty("password").toCharArray();

return new PasswordAuthentication(username, password);
}
System.out.println("PLEASE INPUT PROXY PASSWORD with system property username and password");
return null;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@java3d.dev.java.net
For additional commands, e-mail: interest-help@java3d.dev.java.net

jada
Offline
Joined: 2004-03-17
Points: 0

Please note that this is a prototype for testing purposes only. A stable, released builds of Java 3D will be accessible via JNLP from another directory. See also :

https://j3d-webstart.dev.java.net/prototype/index.html

nvaidya
Offline
Joined: 2004-08-03
Points: 0

Tried TickTocPicking...
Worked Fine - including desktop integration/launch !

Great Show !

--Vaidya

herkules
Offline
Joined: 2003-06-12
Points: 0

I think this might be a general Webstart issue: both the Java3D and JOGL demos cannot be started from behind our proxy. Other webstart apps do work very well. But none of them use https. I have no idea what https does, but this is the only apparent difference.

Exception: java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.0 400 Bad Request" : LaunchDesc: null ]
at com.sun.javaws.cache.DownloadProtocol.doDownload(Unknown Source)
at com.sun.javaws.cache.DownloadProtocol.isLaunchFileUpdateAvailable(Unknown Source)
at com.sun.javaws.LaunchDownload.getUpdatedLaunchDesc(Unknown Source)
at com.sun.javaws.Launcher.downloadResources(Unknown Source)
at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Chien Yang

What version of Java Web Start are you using?

Also can you make a HTTPS connection through your proxy with the
attached simple standalone java program ?

Just compile it and run:

java -Dhttps.proxyHost=
-Dhttps.proxyPort=
JavawsJSSETest

and see if the test pass.

- Chien.

java3d-interest@javadesktop.org wrote:
> I think this might be a general Webstart issue: both the Java3D and JOGL demos cannot be started from behind our proxy. Other webstart apps do work very well. But none of them use https. I have no idea what https does, but this is the only apparent difference.
>
> Exception: java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.0 400 Bad Request" : LaunchDesc: null ]
> at com.sun.javaws.cache.DownloadProtocol.doDownload(Unknown Source)
> at com.sun.javaws.cache.DownloadProtocol.isLaunchFileUpdateAvailable(Unknown Source)
> at com.sun.javaws.LaunchDownload.getUpdatedLaunchDesc(Unknown Source)
> at com.sun.javaws.Launcher.downloadResources(Unknown Source)
> at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
> at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
> at com.sun.javaws.Launcher.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> ---
> [Message sent by forum member 'Herkules' (Joerg Plewe)]
>
> http://www.javadesktop.org/forums/thread.jspa?messageID=26088&#26088
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: interest-unsubscribe@java3d.dev.java.net
> For additional commands, e-mail: interest-help@java3d.dev.java.net
>

/* Copyright (c) 1999 by Sun Microsystems, Inc.
* All rights reserved.

* ident @(#)JavawsJSSETest.java 1.3 01/03/02

* This code is provided "AS IS", without any warranty of any kind.
* Sun is under no obligation to provide maintenance or support for
* this code or provide future updates thereto.

* SUN DOES NOT MAKE AND HEREBY DISCLAIMS ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF NON-
* INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE,
* OR ANY WARRANTIES ARISING FROM A COURSE OF DEALING, USAGE OR TRADE
* PRACTICE.
*/

import java.net.*;
import java.io.*;
import java.security.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class JavawsJSSETest {
public static void main(String[] args) {
System.out.println("STATUS: JSSE START");
com.sun.net.ssl.internal.ssl.Provider p = new com.sun.net.ssl.internal.ssl.Provider();
Security.addProvider(p);
URL.setURLStreamHandlerFactory(new HttpsHandlerFactory());
JavawsJSSETest j = new JavawsJSSETest();
j.runTest();
try {
Thread.sleep(4000);
} catch (InterruptedException ignore) {
}
System.exit(0);
}

private void runTest() {
try {
URL verisign = new URL("https://www.verisign.com/");
BufferedReader in = new BufferedReader(new InputStreamReader(verisign.openStream()));
String inputLine;
int lines = 0;
while ((inputLine = in.readLine()) != null) {
// System.out.println(inputLine);
lines++;
}
in.close();

if (lines > 0) {
System.out.println("STATUS: JSSE PASSED");
} else {
System.out.println("STATUS: JSSE FAILED");
}
} catch (Exception e) {
System.out.println("STATUS: JSSE EXCEPTION");
e.printStackTrace();
System.out.println("STATUS: JSSE FAILED");
}
}

}

class HttpsHandlerFactory implements URLStreamHandlerFactory {
public URLStreamHandler createURLStreamHandler(final String protocol) {
if (protocol != null && protocol.equals("https")) {
return new com.sun.net.ssl.internal.www.protocol.https.Handler();
};
return null;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: interest-unsubscribe@java3d.dev.java.net
For additional commands, e-mail: interest-help@java3d.dev.java.net

pepe
Offline
Joined: 2003-06-10
Points: 0

Hello.
The jogl guys had exactly the same problem with their demos. It is now resolved, so their experience might help you.

herkules
Offline
Joined: 2003-06-12
Points: 0

And me!

Would be great if the result would be posted here!

herkules
Offline
Joined: 2003-06-12
Points: 0

Great!

What is it? 1.3.1? 1.3.2? Stable? Daily?

edit:

ah.... just saw it ... https://j3d-webstart.dev.java.net/prototype/index.html

Message was edited by: Herkules

jada
Offline
Joined: 2004-03-17
Points: 0

It is j3d1.3.1_01 and is as stable as j3d1.3.1. We have added a fix to SceneGraph IO in the j3dutils.

- Chien.