Toon posts:

[APPLET] Permissions?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Op dit moment ben ik gestart met een applicatie zoals map24. Map24 is een applet waarmee de route bepaald kan worden. Natuurlijk zal mijn applicatie niet zo uitgebreid worden, maar het principe zal gelijk blijven.

Het is alweer een tijdje geleden dat ik voor het laatst met java heb gewerkt, dus heb ik JBuilder 2005 evaluatie gedownload en geinstalleerd. Nieuw project aangemaakt met een applet als applicatie.

De gegevens die ik gebruik haal ik uit een firebird database. Om de applet in verbinding te stellen met de firebird database, moet de jaybird jdbc driver geinstalleerd worden. Na de nodige haken en ogen is dit gelukt en kan ik een query uitvoeren en het resultaat tonen in de applet. ECHTER: alleen in jbuilder....

Want wanneer ik het html-bestand open en de applet begint te laden krijg ik de volgende meldingen in de Sun Java Consol. (overgetyped, kan :( niet copy-pasten)

java.lang.ExceptionInInitializerError

Caused by: java.security.AccesControlException: Acces Denied (java.util.PropertyPermission FBlog4j read)

Het probleem zit em dus in de FBlog4j welke waarschijnlijk geen rechten heeft om iets te lezen.

Ook wanneer ik een image wil ophalen van de hardeschijf krijg ik een zelfde soort expection voor geschoteld.

Ik weet dat er een java.policy bestand bestaat waar je het 1 en ander kunt instellen, maar wat ik ook probeer geen enkel resultaat. De java.policy file staat bij mij in de JBuilder2005\jdk1.4\jre\lib\security map.

Dit is de code die ik gebruik voor de connectie met de firebird database server:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
       try {
            jFBdriver = new org.firebirdsql.jdbc.FBDriver();
            System.out.println("Firebird driver geladen");
        }
        catch (Exception e) {
            System.out.println ("Firebird JCA-JDBC driver not found in class path");
            System.out.println (e.getMessage());
        }
    
        // At this point the driver should be registered with the driver manager.
        // Try to find the registered driver that recognizes interbase URLs...
        try {
            // We pass the entire database URL, but we could just pass "jdbc:interbase:"
            jFBdriver = java.sql.DriverManager.getDriver(databaseURL);
            System.out.println("Firebird JCA-JDBC driver version " +
                               jFBdriver.getMajorVersion() +
                               "." +
                               jFBdriver.getMinorVersion() +
                               " registered with driver manager.");
        } catch (java.sql.SQLException e) {
            System.out.println(
                    "Unable to find Firebird JCA-JDBC driver among the registered drivers.");
            System.out.println(e.getMessage());
            return;
        }
    
        // Maak verbinding met de database, zie databaseUrl
        try {
            con = java.sql.DriverManager.getConnection(databaseURL, username,
                    password);
            System.out.println("Connection established.");
        } catch (java.sql.SQLException e) {
            System.out.println(
                    "Unable to establish a connection through the driver manager.");
            System.out.println(e.getMessage());
            return;
        }
    
        try {
            Statement stmt = con.createStatement();
            result = stmt.executeQuery(
                    "SELECT * " +
                    "FROM schip " +
                    "ORDER BY shp_id ASC");
    
        } catch (java.sql.SQLException e) {
            System.out.println("FOUT: uitvoeren query update.");
            System.out.println(e.getMessage());
        }
    
        this.setLayout(null);
        jTextArea1.setBounds(new Rectangle(7, 10, 381, 435));
    
        while (result.next()) {
            jTextArea1.append(result.getString(1));
            jTextArea1.append(" - " + (result.getString(2).trim()));
            jTextArea1.append(" - " + (result.getString(3).trim()));
            jTextArea1.append(" - " + (result.getString(5).trim()));
            jTextArea1.append("\n");
        }
    
        this.add(jTextArea1);

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 10-05 16:41

Nick_S

++?????++ Out of Cheese Error

Draai je je applet onder dezelfde JRE als met JBuilder of heb je nog een tweede jre ergens staan? Als je nog een andere jre hebt staan en die wordt gebruikt als plugin in je browser, dan kan ie inderdaad dat policy bestand niet vinden.

Ik geloof dat dat policy bestand ook uit je home directory kan worden gelezen, maar dan zou je even moeten zoeken op "policy file location java" oid.

ps. hou je er ook wel rekening mee, dat dan iedereen die deze applet wil gaan gebruiken zo'n policy file moet gaan neerzetten?

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:31

Janoz

Moderator Devschuur®

!litemod

Een applet draait vanwege veiligheids redenen binnen een sandbox. Waarschijnlijk loop je tegen de restructie aan dat je alleen een verbinding mag maken met de host waarvan ook het applet gedownload is.

Daarnaast lijkt het me ook niet zo verstandig om database code in je applet te implementeren. Dit zou betekenen dat je je database toegankelijk moet gaan maken voor iedereen op internet en dat je via je applet alle inlog gegevens voor die database ook nog vrij toegankelijk aanbiedt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'