securityManager = System.getSecurityManager();
// IE and Netscape browsers support https
// TODO: See if you need to check version # of IE and Netscape
// to determine if https is supported.
// Netscape Browser?
boolean netscape = false;
boolean ie = false;
boolean msjvm = false;
String javaVendor =
System.getProperty("java.vendor", "Sun").toLowerCase();
if (javaVendor.indexOf("icrosoft") > 0) { // microsoft JVM
msjvm = true;
}
if (securityManager != null) {
netscape = (securityManager.toString().indexOf("netscape") != -1);
ie = (securityManager.toString().indexOf("com.ms.security") != -1);
}
if (ie || msjvm) {
try {
Class clsFactory =
Class.forName("com.ms.net.wininet.WininetStreamHandlerFactory");
// Note that Class.forName will either work or throw and Exception,
// it will not return null.
if ( clsFactory != null ) {
URL.setURLStreamHandlerFactory(
(URLStreamHandlerFactory)clsFactory.newInstance());
}
} catch (Throwable t) {
}
} else if (!netscape) {
// 1) Need JDK1.2 or higher. 2) JSSE should have been installed
if (! JMFSecurityManager.isJDK12() ) {
throw new UnsatisfiedLinkError("Fatal Error: DataSource for https protocol needs JDK1.2 or higher VM");
}
try {
Class sslproviderC = Class.forName("com.sun.net.ssl.internal.ssl.Provider");
Object provider = sslproviderC.newInstance();
Class securityC = Class.forName("java.security.Security");
Class providerC = Class.forName("java.security.Provider");
Class systemC = Class.forName("java.lang.System");
Method addProviderM = securityC.getMethod("addProvider",
new Class[] {
providerC
});
Method setPropertyM = systemC.getMethod("setProperty",
new Class[] {
String.class,
String.class,
});
if ( ( addProviderM != null) && (setPropertyM != null) ) {
addProviderM.invoke(securityC, new Object[] {provider});
setPropertyM.invoke(systemC, new Object[] {
"java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol"
});
}
} catch (Exception e) {
throw new UnsatisfiedLinkError("Fatal Error:Java Secure Socket Extension classes are not present");
} catch (Error e) {
throw new UnsatisfiedLinkError("Fatal Error:Java Secure Socket Extension classes are not present");
}
}
DataSource ds = new com.sun.media.protocol.https.DataSource();
ds.setLocator(getLocator());
if (connected) {
try {
ds.connect();
} catch (IOException e) {
return null;
}
}
return ds;