1 Reply Latest reply: May 11, 2010 6:40 PM by baftos RSS

    JavaScript call to signed applet exception

    843811
      Hallo,
      I have this method in a signed applet:
      public void calledByJS() throws IOException
           {
                int arrlen = 10000;
                final byte[] infile = new byte[arrlen];
                Frame parent = new Frame();
                final FileDialog fd = new FileDialog(parent, "Please choose a file:",
                    FileDialog.LOAD);
                fd.show();
                String selectedItem = fd.getFile();
                if (selectedItem == null)
                {
                     // no file selected
                } 
                else
                {
                     final File ffile = new File( fd.getDirectory()+fd.getFile());
                     System.out.println("reading file " + fd.getDirectory()+fd.getFile() );          
                     try
                     {               
                          AccessController.doPrivileged(new PrivilegedExceptionAction()
                          {                    
                               public Object run() throws IOException
                               {
                                    System.out.println("test");
                                    try 
                                    {
                                         FileInputStream fis = new FileInputStream(ffile);
                                         return null;
                                    }
                                    catch (FileNotFoundException fnf)
                                    {
                                         System.out.println("File not found...");
                                         fnf.printStackTrace();
                                         return null;
                                    }
                               }
                          });
                     }
                     catch (java.security.PrivilegedActionException e)
                     {
                          System.out.println(e);
                          throw (IOException) e.getException();
                     };                                                  
                }
           }
      If I call this by applet itsself, I works great. But if I want to call this function by JavaScript I get this exception in IE and Firefox (Windows 7 ) :

      uncaught exception: java.lang.reflect.InvocationTargetException

      In Java concole is nothing, so what did I false?

      Java Plug-in 1.6.0_16
      Verwendung der JRE-Version 1.6.0_20-b02 Java HotSpot(TM) Client VM
      Home-Verzeichnis des Benutzers = C:\Users\mop
      ----------------------------------------------------
      c: Konsole löschen
      f: Objekte in Finalisierungswarteschlange finalisieren
      g: Speicherbereinigung
      h: Diese Hilfemeldung anzeigen
      l: ClassLoader-Liste ausgeben
      m: Speicherbelegung anzeigen
      o: Protokollierung auslösen
      q: Konsole ausblenden
      r: Richtlinien-Konfiguration neu laden
      s: System- und Bereitstellungseigenschaften ausgeben
      t: Threadliste ausgeben
      v: Thread-Stack ausgeben
      x: ClassLoader-Cache löschen
      0-5: Trace-Stufe auf <n> setzen
      ----------------------------------------------------


      security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.
      security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws
      security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws
      security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy
      security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy
      security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
      security: property package.definition value null
      security: property package.definition new value com.sun.javaws
      security: property package.definition value com.sun.javaws
      security: property package.definition new value com.sun.javaws,com.sun.deploy
      security: property package.definition value com.sun.javaws,com.sun.deploy
      security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp
      security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
      security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
      security: property package.definition value com.sun.javaws,com.sun.deploy,com.sun.jnlp
      security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
      basic: Fortschritts-Listener hinzugefügt: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@1f9dc36
      network: Cache-Eintrag nicht gefunden [url: file:/C:/Users/mop/Desktop/Neuer%20Ordner%20(2)/MeinJar.jar, Version: null]
      security: Zugriff auf Schlüssel und Zertifikat im Mozilla-Benutzerprofil: null
      security: Zertifizierungsstellen-Stammzertifikate werden geladen aus C:\Program Files\Java\jre6\lib\security\cacerts
      security: Zertifizierungsstellen-Stammzertifikate wurden geladen aus C:\Program Files\Java\jre6\lib\security\cacerts
      security: Bereitstellungszertifikate werden geladen aus C:\Users\mop\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs
      security: Bereitstellungszertifikate wurden geladen aus C:\Users\mop\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs
      security: Zertifikate werden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
      security: Zertifikate wurden aus Bereitstellungssitzungs-Zertifikatspeicher geladen
      security: Zertifikatskette mithilfe von CertPath-API prüfen
      security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
      security: Zertifikatssammlung aus ZA-Stamm-Zertifikatsspeicher abrufen
      security: Keine Zeitstempelinformationen verfügbar
      security: Zuständigkeitslistendatei gefunden
      security: Keine Überprüfung auf vertrauenswürdige Erweiterung für dieses Zertifikat erforderlich
      security: CRL-Unterstützung ist deaktiviert.
      security: OCSP-Unterstützung ist deaktiviert.
      security: Prüfen, ob Zertifikat im Zertifikatsspeicher Deployment denied ist
      security: Zertifikat wird im permanenten Bereitstellungszertifikatspeicher gesucht
      security: Zertifikat wird in Bereitstellungssitzungs-Zertifikatspeicher gesucht
      security: Berechtigungen für den Code wurden vom Benutzer nur für diese Sitzung gewährt
      security: Zertifikat wird Bereitstellungssitzungs-Zertifikatspeicher hinzugefügt
      security: Zertifikat wurde Bereitstellungssitzungs-Zertifikatspeicher hinzugefügt
      security: Zertifikate werden in Bereitstellungssitzungs-Zertifikatspeicher gespeichert
      security: Zertifikate wurden in Bereitstellungssitzungs-Zertifikatspeicher gespeichert
      basic: Applet geladen
      basic: Applet resized and added to parent container
      basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 218218 us, pluginInit dt 2405518 us, TotalTime: 2623736 us
      basic: Applet initialized
      basic: Fortschritts-Listener entfernt: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@1f9dc36
      basic: Applet made visible
      basic: Starting applet
      basic: completed perf rollup
      basic: Applet started
      basic: Told clients applet is started
      reading file C:\Users\mop\Desktop\Mp3s\Stefanie_Heinzmann__-TheUnforgiven.mp3


      And this is how I call the applet in HTML page:
      <html>
      <script type="text/javascript"> 
       function callJava()
           {
      var jo =           document.getElementById('test');
      jo.calledByJS();
      
           }
      function callJS(byteArray)
      {
      alert(byteArray.length);
      }
      </script> 
      <body bgcolor="#dddddd">
      <applet id="test" code="localfile.class" archive="MeinJar.jar" width="100" height="100" MAYSCRIPT>
      
      
      </applet>
      <button name="Klickmich" type="button"
            value="Überraschung" onclick="callJava();">
      
          </button>
      </body>
      </html>
      Edited by: mrmiagi0101 on Apr 24, 2010 10:17 AM