Scripting headless signed Java applet
When I originally set out to write the Sendmail applet, I had the intention of using an HTML form to prompt the user for information. As it turns out, the applet requires heightened security. That's why you see asking if you want to run the application. Java applets typically prevent you from connecting to a server. other than the one you downloaded the original applet from. I need to sign the applet to get around this security restriction. I had an invisible applet that I could call using JavaScript. When i tried it with the signed applet I discovered that I ran into the security restriction again. Here's a sample of how to access Java applet methods from within JavaScript. Unfortunately, the function being called throws a security exception.
<applet
alt="Browser has Java disabled"
name="sendmail"
width="0"
height="0"
code="SendmailHeadlessApplet"
archive="http://www.qicboy.com/files/2008/01/12/sendmail.jar">
</applet>
<script>
function send() {
document.sendmail.send(
'smtp.someisp.net',
'you@yourisp.net',
'them@someisp.net',
'Hello world');
}
</script>
<form>
<input type="button" onclick='send();' value='Send'/>
</form>
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.net.smtp) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPackageAccess(Unknown Source) at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source) at sun.applet.AppletClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at Sendmail.send(Sendmail.java:33) at SendmailHeadlessApplet.send(SendmailHeadlessApplet.java:6) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.plugin.javascript.JSInvoke.invoke(Unknown Source) at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source) at sun.plugin.liveconnect.PrivilegedCallMethodAction.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)

