tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
444
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sognix sognix ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    15
    Hallo!

    Ich bin komplett neu hier und nachdem ich die SuFu schon benutzt habe und nix gefunden habe, post ich das hier mal:

    Ich habe folgendes Problem:
    Ich baue ein Applet dass ein XML beim start per http-request als Antwort zurückbekommt. Dieses XML will ich unmarschallen. Allerdings bricht er mir ohne Fehlermeldung bzw. ohne dass etwas geworfen wird bei JAXBContext.newInstance(....) ab.

    PHP-Code:
    try
                    { 
    System.out.println("TRY"); this.context JAXBContext.newInstance(ItemObject.class); } 
                    catch (
    JAXBException ex)
                    {
                        
    System.out.println("CATCH");
                        
    Logger.getLogger(buildObject.class.getName()).log(Level.SEVEREnullex);
                        return 
    null;
                    } 
    Das System.out.println("TRY") gibt er mir noch aus, ab dann gar nix mehr, so als wäre der Code zu Ende, in den CATCH block geht er auch nicht.

    Habt ihr ne Idee was da haben könnte?

    Danke

    Greets
     

  2. #2
    sognix sognix ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    15
    Ok, problem gefunden, es wirft doch ne Exception:

    java.security.AccessControlException: access denied ...

    Trotzdem thx
     

  3. #3
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Hallo und willkommen hier im Forum.
    Bitte Thread als erledigt markieren! (der Haken neben "auf Thema antworten")
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  4. #4
    sognix sognix ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    15
    Hallo!

    Danke für den Hinweis mit dem erledigt!

    Musste das Thema aber jetzt nochmals anschneiden:

    Mein Applet hab ich signiert und ich kann auch auf die Festplatte zugreifen (Hab ne Speicherfunktion). Das "Interessante" find ich jetzt ist, dass die Funktion während des Betriebes funktioniert. Ich will aber auch einbauen, dass das Applet mit Startparameter funktioniert die es von der Adressleiste des Browser kriegt (über JavaScript). Er schickt die Anfrage ganz normal, als wäre es eine normale Suchanfrage an die Datenbank (auch über HTTP), aber beim Start krieg ich die

    java.security.AccessControlException: access denied

    die bei der gleichen Funktion während des Betriebes nicht auftaucht. Hat vl jemand eine Idee warum?

    Wie schon gesagt, das Applet ist privat zertifiziert.

    Danke!

    Grüße
     

  5. #5
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Hast du noch etwas mehr Code anzubieten? bitte in Java-Tags (siehe meine Signatur)
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  6. #6
    sognix sognix ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    15
    Hallo!

    Meine Klasse, die unmarshalled:

    Code java:
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    
    public Object build(String _xmlString)
        {
            try
            {
                if (_xmlString.length() > 50)
                {
                    if (_xmlString.substring(55, 62).equals("<items>"))
                    {
                        try
                        {
                            this.context = JAXBContext.newInstance(rootSearch.class);
                        } catch (JAXBException ex)
                        {
                            Logger.getLogger(buildObject.class.getName()).log(Level.SEVERE, null, ex);
                            return null;
                        }
     
                        try
                        {
                            this.um = context.createUnmarshaller();
                        } catch (JAXBException ex)
                        {
                            Logger.getLogger(buildObject.class.getName()).log(Level.SEVERE, null, ex);
                            return null;
                        }
     
                        try
                        {
                            this.search = (rootSearch) um.unmarshal(new StreamSource(new StringReader(_xmlString)));
                        } catch (JAXBException ex)
                        {
                            Logger.getLogger(buildObject.class.getName()).log(Level.SEVERE, null, ex);
                            return null;
                        }
                        return this.search;
                    } //for Element
                    else
                    {
                        if (_xmlString.substring(55, 67).equals("<itemObject>"))
                        {
                            try
                            { this.context = JAXBContext.newInstance(ItemObject.class); } 
                            catch (JAXBException ex)
                            {
                                Logger.getLogger(buildObject.class.getName()).log(Level.SEVERE, null, ex);
                                return null;
                            }
     
                            try
                            { this.um = this.context.createUnmarshaller(); } catch (JAXBException ex)
                            {
                                Logger.getLogger(buildObject.class.getName()).log(Level.SEVERE, null, ex);
                                return null;
                            }
                            try
                            { this.element = (ItemObject) um.unmarshal(new StreamSource(new StringReader(_xmlString))); } 
                            catch (JAXBException ex)
                            {
                                Logger.getLogger(buildObject.class.getName()).log(Level.SEVERE, null, ex);
                                return null;
                            }
                            return this.element;
                        }
                    }
                }
                return null;
            }
            catch (Exception ex)
            {
                ex.printStackTrace();
                return null;
            }

    Eine Zwischenfunktion die Eingangsparemeter überprüft und so das zurückgegebene Objekt deklariert

    Code java:
    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
    
    /*      XML     */
        /**
         * Method to get Object from XML-String
         * @return Object
         */
        public Object getObj(String _xmlString, int _type)
        {
            if(_type == 1)
            {
                this.search = (rootSearch) this.xml.build(_xmlString);
     
                String[][] result = new String[this.search.getItems().size()][1];
     
                for(int i=0; i<this.search.getItems().size(); i++)
                { result[i][0] = this.search.getItems().get(i).getName(); }
     
                return result;
            }
            
            else if(_type == 2)
            {
                ItemObject element = (ItemObject) this.xml.build(_xmlString);
                return element;
            }
            
            return null;
        }

    und die Funktion die alles zusammenführt

    Code java:
    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
    
    public void sendPathRequest(String _path)
        {
            String requestString = this.cache.requestLink + _path.substring(_path.indexOf("?")+1, _path.length());
            this.frame.getTextField("path").setText(_path);
            
            //check cache for following elements and do configuration
            this.checkCache();
     
            //remove old object from Frame
            this.deleteObjectFromFrame(frame.getObject());
            
            //creating http request and getting xml string
            String xmlString = this.httpRequestor.sendRequest(requestString);
            
            //Make Item Object, create PictureBox and add box to cache
            ItemObject obj = (ItemObject) this.getObj(xmlString, 2);
            
            if(obj == null)
                this.customJOptionPane("There happened a Failure");
            
            //this.createPictureBox(obj, 1);
            this.addObjectCache(this.frame.getPicBox());
     
            //activate back button            
            if(this.cache.getPointer() > 0)
                this.frame.getButton("back").setEnabled(true);
     
            //activate Buttons
            this.frame.getButton("edit").setEnabled(true);
            this.frame.getButton("center").setEnabled(true);
            this.frame.getButton("save").setEnabled(true);
     
            this.frame.repaint();
        }



    Wie schon gesagt, während des normalen Betriebes, ohne dass Startparameter aus der Browserzeile übergeben werden, funktioniert der Code einwandfrei. Mit Startparameter aus der Browserzeile wirft er die Exception.

    Hab mir überlegt, ob es vl damit zusammenhängt, dass er die Daten schon alle lädt und die Funktionen im Hintergrund schon ausführt, bevor der User dem selbst erstellten Zertifikat zustimmt...

    Danke
     

  7. #7
    SE Tutorials.de Gastzugang
    Es wäre vielleicht auch mal wichtig auf WAS dir der Zugriff verweigert wird. Ein einfaches ACCESS DENIED kann man schon mit System.getProperty() in einem nicht-signierten Jar erzeugen. Vielleicht kann man aus dem Objekt welches keine Zugriff hat schließen wo der Fehler liegt.

    Anderst ausgedrückt :
    Person A : mach mal XY mit Z
    Person B : aber ich habe keinen Zugriff
    Nun weis aber Person A nicht auf WAS B keinen Zugriff hat. Und genau so stehen auch wir gerade in der Sonne.
     

  8. #8
    sognix sognix ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    15
    Hallo!

    Der Zugriff wird mir auf das folgende blockiert:

    Code java:
    1
    
    this.context = JAXBContext.newInstance(ItemObject.class);

    Folgend der gesamte Stacktrace

    java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkMemberAccess(Unknown Source)
    at java.lang.Class.checkMemberAccess(Unknown Source)
    at java.lang.Class.getDeclaredConstructor(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.hasDefaultConstructor(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.hasDefaultConstructor(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.ClassInfoImpl.<init>(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.RuntimeClassInfoImpl.<init>(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.createClassInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.createClassInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getClassInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getClassInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getTypeInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getTypeInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(Unknown Source)
    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(Unknown Source)
    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
    at javax.xml.bind.ContextFinder.find(Unknown Source)
    at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
    at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
    at XML.buildObject.build(buildObject.java:89)
    at main.Functions.getObj(Functions.java:662)
    at main.Functions.sendPathRequest(Functions.java:853)
    at main.applet.setLink(applet.java:565)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
     

  9. #9
    sognix sognix ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    15
    Hallo!

    Eine Vermutung zu diesem Problem:

    Ist es möglich, dass er die Exception wirft, weil der Browser die Funktion mittels JavaScript aufruft? Wie schon erwähnt: Applet-Intern funktioniert es einwandfrei.
     

  10. #10
    sognix sognix ist offline Mitglied
    Registriert seit
    Jul 2011
    Beiträge
    15
    So, nochmal meine Wenigkeit:

    Nach längeren Recherechen hab ich herausgefunden, dass das ein Bug ist, der seit 1.4.2 existiert und scheinbar bis jetzt noch nicht behoben wurde.

    BugReport:
    http://bugs.sun.com/bugdatabase/view...bug_id=5011139

    Damit: erledigt.
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 23.05.09, 10:18
  2. Antworten: 3
    Letzter Beitrag: 18.09.08, 13:00
  3. Suche bricht ab - Fehlermeldung
    Von maeder1 im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 11.01.08, 11:11
  4. Absturz mit und ohne Fehlermeldung !?
    Von strickey im Forum Cinema 4D
    Antworten: 4
    Letzter Beitrag: 01.11.05, 17:52
  5. [vba] fehlermeldung ohne zusammenhang!
    Von sra im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 18.01.05, 12:03