Ich habe ein Java Applet, das in einer einfachen HTML-Seite eingefügt ist:
Das Applet ist signiert mit einem Zertifikat von GlobalSign. Die JAR- und die HTML-Datei wurden auf einen Embedded Web-Server (ein Beck IPC SC143) kopiert, der unter http://192.168.0.91/ erreichbar ist. Das Applet öffnen nun eine Socket-Verbindung zu dem Server, von dem es geladen wurde:
Das funktioniert prima, zuletzt mit 7 Update 45, aber seit dem Update der VM auf Java 8 Update 25 bekomme ich diese Exception:
Die Exception wird in connect() geworfen. Wie das? Ein Applet darf doch Verbindungen zu dem Server aufbauen, von dem es geladen wurde, oder ist das neuerdings nicht mehr so?
Jürgen
Code:
<applet width="100%" height="100%" id="StatApplet" code="stat.applet.StatApplet.class" archive="stat.jar">
<PARAM NAME="_cx" VALUE="25903">
<PARAM NAME="_cy" VALUE="19738">
<param name="frame" value="0">
<param name="module" value="1">
<param name="count" value="4">
<param name="image" value="RSload.gif">
<param name="boxbgcolor" value="#ffffff">
<param name="boxmessage" value="Monitor loading">
</applet>
Das Applet ist signiert mit einem Zertifikat von GlobalSign. Die JAR- und die HTML-Datei wurden auf einen Embedded Web-Server (ein Beck IPC SC143) kopiert, der unter http://192.168.0.91/ erreichbar ist. Das Applet öffnen nun eine Socket-Verbindung zu dem Server, von dem es geladen wurde:
Java:
try {
final int CONNECT_ETHERNET_TIMEOUT_MS = 5000;
final int PORT_STATUSMON = 945;
String host = getCodeBase().getHost(); // get host address
if (host.equals("")) {
host = getParameter("host"); // to run applet from eclipse
}
InetAddress inetAddress = InetAddress.getByName(host);
Socket ethernetSocket = new Socket();
ethernetSocket.connect(new InetSocketAddress(inetAddress, PORT_STATUSMON), CONNECT_ETHERNET_TIMEOUT_MS);
ethernetSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
Das funktioniert prima, zuletzt mit 7 Update 45, aber seit dem Update der VM auf Java 8 Update 25 bekomme ich diese Exception:
Code:
java.security.AccessControlException: access denied ("java.net.SocketPermission" "192.168.0.91:945" "connect,resolve")
Die Exception wird in connect() geworfen. Wie das? Ein Applet darf doch Verbindungen zu dem Server aufbauen, von dem es geladen wurde, oder ist das neuerdings nicht mehr so?
Jürgen