Avatar billede gedebuk Nybegynder
26. august 2002 - 15:17 Der er 3 kommentarer og
1 løsning

XML i applet

Hejsa!

I forlængelse af spm. http://www.eksperten.dk/spm/250287 har jeg stadig diverse problemer. Jeg kan uden problemer læse en (lokal) fil fra en signeret applet. Men når jeg bruger en XML-parser til at parse samme fil, går det galt (jeg har prøvet både JDOM og dom4j).
Min kode ser ud som følger:

import java.applet.*;
import org.dom4j.*;
import org.dom4j.io.*;
import java.io.*;
import java.util.Iterator;

public class SignedAppletDemo extends Applet
{
  public void init()
  {
      try
      {
        XMLFromFile();
      }
      catch (Exception ex)
      {
        System.out.println("FEJL FEJL FEJL");
        ex.printStackTrace();
      }
  }

  // Virker ikke... Giver en Exception: access denied (java.io.FilePermission D:\Savs\DATA\XML\wind29.xml read)
  public void XMLFromdom4j() throws Exception
  {
      SAXReader xmlReader = new SAXReader();
      File f = new File("D:/Savs/DATA/XML/wind29.xml");
      Document doc = xmlReader.read(f);
      Element root = doc.getRootElement();
      Iterator elementIterator = root.elementIterator();
      while(elementIterator.hasNext())
      {
        Element element = (Element)elementIterator.next();
        System.out.println(element.getName());
      }
  }

  // Virker helt fint, fra browser (plug-in 1.4), signeret
  private void XMLFromFile() throws Exception
  {
      File f = new File("D:/Savs/DATA/XML/wind29.xml");
      FileReader read = new FileReader(f);
      char[] chars = new char[55];
      read.read(chars);
      System.out.println(new String(chars));
  }
}

Som beskrevet i det ovenstående spm. har jeg fuldt http://developer.java.sun.com/developer/technicalArticles/Security/Signed/ og bl.a. lavet en policy-file. Jeg kan dog ikke helt gennemskue, hvordan den kommer ind i billedet, for den bliver jo ikke kaldt nogle steder, når jeg kører det fra en browser (plug-in version 1.4).
Ud over eksemplet fra ovenstående link har jeg også prøvet følgende i policy-filen:

keystore "raystore";
grant signedBy "susan"
{
  permission java.security.AllPermission;
  permission java.io.FilePermission "<<ALL FILES>>", "read";
};

Det er ikke umiddelbart meningen, at det skal køre fra en webserver, men bare startes op lokalt. Er det et problem?

på forhånd tak for svarene!
Avatar billede aslan Nybegynder
26. august 2002 - 17:57 #1
Prøv at signere din applet ved at følge denne link:

http://forum.java.sun.com/thread.jsp?forum=63&thread=174214
Avatar billede soelvpil Nybegynder
26. august 2002 - 19:21 #2
Koden afvikles i din browser.

Browseren kender sandsynligvis ikke dom4j eller jdom, så du skal have tilføjet dem til browserens "classpath". Dette gøres ved at lave en archive-attribut på dit applet-tag, som har navnet på jar-filen som værdi, eller rettere en url, som browseren kan hente jar-filen fra.
Avatar billede gedebuk Nybegynder
27. august 2002 - 10:15 #3
aslan >> Som jeg har skrevet, har jeg allerede signeret min applet, så det er ikke der, problemet er.

soelvpil >> Det er heller ikke det, der er problemer, idet jeg allerede har tilføjet de nødvendige jar-filer til applettens archive. Det er heller ikke en ClassNotFoundException, men en "access denied (java.io.FilePermission D:\Savs\DATA\XML\wind29.xml read)"
Avatar billede gedebuk Nybegynder
28. august 2002 - 11:33 #4
Jeg har selv fået løst problemet ved at tilføje linien

  permission java.io.FilePermission "<<ALL FILES>>", "read";

til den globale java.policy i C:\Program Files\Java\j2re1.4.0_01\lib\security\

Derved er det ikke engang nødvendigt at signere jar-filen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester