Comment faire fonctionner les accès XML/DOM dans une applet ?
3 réponses
Aragorn
Salut !
J'ai écrit une applet Java qui affiche un graphique. Les données de ce graphique
sont extraites d'un fichier dont le nom est donné en paramètre à l'applet :
J'ai deux versions de l'applet, chacune des deux étant capable d'interpréter
deux formats de fichiers de données. L'un de ces formats est XML. Pour cela je
fais:
...
DocumentBuilderFactory df = DocumentBuilderFactory.newInstance();
df.setValidating( false );
DocumentBuilder db = df.newDocumentBuilder();
URL url = new URL( getDocumentBase(), filename ); // filename étant le nom du
fichier
InputStream is = url.openStream(); // aucun problème à l'ouverture
Document doc = db.parse( is ); // là ça plante !
is.close();
Element root = doc.getDocumentElement();
//...etc et je traite les données...
...
Mais la méthode "parse()" génère une exception :
java.security.AccessControlException: access denied
(java.util.PropertyPermission entityExpansionLimit read)
Or, ça se passe très bien dans l'autre version de l'applet, quand le fichier de
données n'est pas un fichier XML et qu'il est traité "à la main" simplement
comme un fichier texte :
...
URL url = new URL( getDocumentBase(), filename ); // filename étant le nom du
fichier
InputStream is = url.openStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br new BufferedReader(isr);
String line = br.readLine(); // là ça NE plante PAS
//...etc et je traite les données...
...
Ce qui m'échappe, c'est pourquoi la sécurité m'empêche de lire le fichier dans
un cas et pas dans l'autre ?
(je précise que j'ai ce problème avec IE 6.0 sous XP)
Merci de m'aider à résoudre ce problème pour le moins étrange...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jerome moliere
Aragorn wrote:
Salut !
J'ai écrit une applet Java qui affiche un graphique. Les données de ce graphique sont extraites d'un fichier dont le nom est donné en paramètre à l'applet :
J'ai deux versions de l'applet, chacune des deux étant capable d'interpréter deux formats de fichiers de données. L'un de ces formats est XML. Pour cela je fais:
... DocumentBuilderFactory df = DocumentBuilderFactory.newInstance(); df.setValidating( false ); DocumentBuilder db = df.newDocumentBuilder(); URL url = new URL( getDocumentBase(), filename ); // filename étant le nom du fichier InputStream is = url.openStream(); // aucun problème à l'ouverture Document doc = db.parse( is ); // là ça plante ! is.close(); Element root = doc.getDocumentElement(); //...etc et je traite les données... ...
Mais la méthode "parse()" génère une exception : java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)
Or, ça se passe très bien dans l'autre version de l'applet, quand le fichier de données n'est pas un fichier XML et qu'il est traité "à la main" simplement comme un fichier texte :
... URL url = new URL( getDocumentBase(), filename ); // filename étant le nom du fichier InputStream is = url.openStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br new BufferedReader(isr); String line = br.readLine(); // là ça NE plante PAS //...etc et je traite les données... ...
Ce qui m'échappe, c'est pourquoi la sécurité m'empêche de lire le fichier dans un cas et pas dans l'autre ? (je précise que j'ai ce problème avec IE 6.0 sous XP)
car dans un cas tu utilises une ressource placée sur le serveur dont l'applet est issue (conforme avec la sandbox regissant ton applet) dans l'autre j'imagine que ton document xml est soumis a un DTD non? place de preference sur un autre site (disons sun.com) et là KO vis a vis des contraintes de ton applet...
Merci de m'aider à résoudre ce problème pour le moins étrange... etrange je ne sais pas, logique oui et interessant aussi :)
J'ai écrit une applet Java qui affiche un graphique. Les données de ce graphique
sont extraites d'un fichier dont le nom est donné en paramètre à l'applet :
J'ai deux versions de l'applet, chacune des deux étant capable d'interpréter
deux formats de fichiers de données. L'un de ces formats est XML. Pour cela je
fais:
...
DocumentBuilderFactory df = DocumentBuilderFactory.newInstance();
df.setValidating( false );
DocumentBuilder db = df.newDocumentBuilder();
URL url = new URL( getDocumentBase(), filename ); // filename étant le nom du
fichier
InputStream is = url.openStream(); // aucun problème à l'ouverture
Document doc = db.parse( is ); // là ça plante !
is.close();
Element root = doc.getDocumentElement();
//...etc et je traite les données...
...
Mais la méthode "parse()" génère une exception :
java.security.AccessControlException: access denied
(java.util.PropertyPermission entityExpansionLimit read)
Or, ça se passe très bien dans l'autre version de l'applet, quand le fichier de
données n'est pas un fichier XML et qu'il est traité "à la main" simplement
comme un fichier texte :
...
URL url = new URL( getDocumentBase(), filename ); // filename étant le nom du
fichier
InputStream is = url.openStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br new BufferedReader(isr);
String line = br.readLine(); // là ça NE plante PAS
//...etc et je traite les données...
...
Ce qui m'échappe, c'est pourquoi la sécurité m'empêche de lire le fichier dans
un cas et pas dans l'autre ?
(je précise que j'ai ce problème avec IE 6.0 sous XP)
car dans un cas tu utilises une ressource placée sur le serveur dont
l'applet est issue (conforme avec la sandbox regissant ton applet) dans
l'autre j'imagine que ton document xml est soumis a un DTD non?
place de preference sur un autre site (disons sun.com) et là KO vis a
vis des contraintes de ton applet...
Merci de m'aider à résoudre ce problème pour le moins étrange...
etrange je ne sais pas, logique oui et interessant aussi :)
jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
J'ai écrit une applet Java qui affiche un graphique. Les données de ce graphique sont extraites d'un fichier dont le nom est donné en paramètre à l'applet :
J'ai deux versions de l'applet, chacune des deux étant capable d'interpréter deux formats de fichiers de données. L'un de ces formats est XML. Pour cela je fais:
... DocumentBuilderFactory df = DocumentBuilderFactory.newInstance(); df.setValidating( false ); DocumentBuilder db = df.newDocumentBuilder(); URL url = new URL( getDocumentBase(), filename ); // filename étant le nom du fichier InputStream is = url.openStream(); // aucun problème à l'ouverture Document doc = db.parse( is ); // là ça plante ! is.close(); Element root = doc.getDocumentElement(); //...etc et je traite les données... ...
Mais la méthode "parse()" génère une exception : java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)
Or, ça se passe très bien dans l'autre version de l'applet, quand le fichier de données n'est pas un fichier XML et qu'il est traité "à la main" simplement comme un fichier texte :
... URL url = new URL( getDocumentBase(), filename ); // filename étant le nom du fichier InputStream is = url.openStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br new BufferedReader(isr); String line = br.readLine(); // là ça NE plante PAS //...etc et je traite les données... ...
Ce qui m'échappe, c'est pourquoi la sécurité m'empêche de lire le fichier dans un cas et pas dans l'autre ? (je précise que j'ai ce problème avec IE 6.0 sous XP)
car dans un cas tu utilises une ressource placée sur le serveur dont l'applet est issue (conforme avec la sandbox regissant ton applet) dans l'autre j'imagine que ton document xml est soumis a un DTD non? place de preference sur un autre site (disons sun.com) et là KO vis a vis des contraintes de ton applet...
Merci de m'aider à résoudre ce problème pour le moins étrange... etrange je ne sais pas, logique oui et interessant aussi :)
car dans un cas tu utilises une ressource placée sur le serveur dont l'applet est issue (conforme avec la sandbox regissant ton applet) dans l'autre j'imagine que ton document xml est soumis a un DTD non? place de preference sur un autre site (disons sun.com) et là KO vis a vis des contraintes de ton applet...
etrange je ne sais pas, logique oui et interessant aussi :)
Pas si logique que çà... Encore + bizarre : je viens d'essayer toujours avec IE6.0 mais sous 2000, et là, pas de problème d'accès au fichier, tout se déroule sans souci et le graphique est affiché !!!! Manque de bol, il FAUT que ça fonctionne sous XP...
car dans un cas tu utilises une ressource placée sur le serveur dont
l'applet est issue (conforme avec la sandbox regissant ton applet) dans
l'autre j'imagine que ton document xml est soumis a un DTD non?
place de preference sur un autre site (disons sun.com) et là KO vis a
vis des contraintes de ton applet...
etrange je ne sais pas, logique oui et interessant aussi :)
Pas si logique que çà... Encore + bizarre : je viens d'essayer toujours avec
IE6.0 mais sous 2000, et là, pas de problème d'accès au fichier, tout se déroule
sans souci et le graphique est affiché !!!!
Manque de bol, il FAUT que ça fonctionne sous XP...
car dans un cas tu utilises une ressource placée sur le serveur dont l'applet est issue (conforme avec la sandbox regissant ton applet) dans l'autre j'imagine que ton document xml est soumis a un DTD non? place de preference sur un autre site (disons sun.com) et là KO vis a vis des contraintes de ton applet...
etrange je ne sais pas, logique oui et interessant aussi :)
Pas si logique que çà... Encore + bizarre : je viens d'essayer toujours avec IE6.0 mais sous 2000, et là, pas de problème d'accès au fichier, tout se déroule sans souci et le graphique est affiché !!!! Manque de bol, il FAUT que ça fonctionne sous XP...
ScoobyCed
"Aragorn" a ecrit:
Mais la méthode "parse()" génère une exception : java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)
il s'agit peut etre de la lecture de la propriete entityExpansionLimit : New system property to limit entity expansion The entityExpansionLimit system property lets existing applications constrain the total number of entity expansions without recompiling the code. The parser throws a fatal error once it has reached the entity expansion limit. (By default, no limit is set.) cf: http://java.sun.com/webservices/docs/1.2/jaxp/ReleaseNotes.html
Ced ----
"Aragorn" <aragorn@middle-earth.nw> a ecrit:
Mais la méthode "parse()" génère une exception :
java.security.AccessControlException: access denied
(java.util.PropertyPermission entityExpansionLimit read)
il s'agit peut etre de la lecture de la propriete entityExpansionLimit :
New system property to limit entity expansion
The entityExpansionLimit system property lets existing applications
constrain the total number of entity expansions without recompiling the
code. The parser throws a fatal error once it has reached the entity
expansion limit. (By default, no limit is set.)
cf: http://java.sun.com/webservices/docs/1.2/jaxp/ReleaseNotes.html
Mais la méthode "parse()" génère une exception : java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)
il s'agit peut etre de la lecture de la propriete entityExpansionLimit : New system property to limit entity expansion The entityExpansionLimit system property lets existing applications constrain the total number of entity expansions without recompiling the code. The parser throws a fatal error once it has reached the entity expansion limit. (By default, no limit is set.) cf: http://java.sun.com/webservices/docs/1.2/jaxp/ReleaseNotes.html