Treebolic

applet navigateur

Comment utiliser l'applet Treebolic avec les extensions WordNet, Système de fichier et SQL dans un navigateur Web ?

Normalement les navigateurs web exécutent les applets dans un container/environnement sécurisé (sandbox) ce qui empêche pour des raisons de sécurité :

Cependant si le JRE 1.2 et versions ultérieures est utilisé, il est possible de lever ces restrictions de sécurité. On peut utiliser le policytool pour éditer le fichier .java.policy dans le répertoire de base de l'utilisateur. Des paramètres système peuvent aussi être mis en place  : voir java.policy dans le dossier the lib/security.

Le fichier modèle .java.policy ci-dessous rend l'accès permis au pont ODBC bridge, qui utilise des libraires natives. Noter qu'il est  possible d'accorder ces permissions seulement à des applets spécifiquement localisées en utilisant la syntaxe grant codeBase <URL>.

.java.policy

/* AUTOMATICALLY GENERATED ON Sat Jun 21 10:06:51 CEST 2003*/
/* DO NOT EDIT */

grant codeBase "file:${java.home}/lib/ext/*" {
permission java.security.AllPermission;
};

grant {
permission java.lang.RuntimePermission "stopThread";
permission java.net.SocketPermission "localhost:1024-", "listen";
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "path.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
permission java.lang.RuntimePermission "accessClassInPackage.sun.jdbc.odbc";
permission java.util.PropertyPermission "file.encoding", "read";
};
 

La balise HTML suivante donne les résultats escomptés dans la page HTML qui enchasse Treebolic. Noter la nécessité d'inclure plusieurs jars dans l'attribut archive.

...

<applet code="treebolic.applet.Treebolic.class" archive="Treebolic.jar,TreebolicSql.jar" id="Treebolic" width="100%" height="100%">
  <param name="provider" value="treebolic.in.provider.sql.Factory">
  <param name="url" value="jdbc:odbc:animaldom">
  <param name="driver" value="sun.jdbc.odbc.JdbcOdbcDriver">
  <param name="id_field" value="id_node">
  <param name="path_field" value="path">
  <param name="label_field" value="label">
  <param name="nodes_sql" value="SELECT [Nodes_EN].id_node, [Nodes_EN].id_node AS label, [_Images].src AS img, * FROM [Nodes_EN] LEFT JOIN _Images ON [Nodes_EN].id_img=[_Images].id_img;">
  <param name="edges_sql" value="SELECT * FROM Edges;">
  <param name="settings_sql" value="SELECT *, [_Images_Back].src AS img, [_Images_Nodes].src AS nodes_img FROM _Images AS _Images_Nodes RIGHT JOIN (_Orientations RIGHT JOIN (_Images AS _Images_Back RIGHT JOIN (_FontFaces RIGHT JOIN Settings ON [_FontFaces].id_fontface = Settings.id_fontface) ON [_Images_Back].id_img = Settings.id_img) ON [_Orientations].id_orientation = Settings.id_orientation) ON [_Images_Nodes].id_img = Settings.id_nodes_img WHERE Settings.id_settings='DEFAULT';">
Must support Java
</applet>

...
 

Ces pages HTML peuvent être construites à la demande.

Des considérations similaires s'appliquent aux extensions  WordNet, Système de fichier, avec cependant un jeu de permissions différents.