Applet mit XML-Datei aus .jar laden....UNMÖGLICH****?

brucewayne

Grünschnabel
Hallo, und ein kurzes aber großes Lob, in diesem Forum habe ich schon soviel gelernt, daß es nun an der Zeit wird, auch mal selbst eine Frage zu stellen ;)

Mein Problem:
Ich habe ein Applet, welches eine XML Datei lädt, die sich in der .jar befindet.
Applet ist signiert, XML wird über resource geladen, alles funktioniert in Eclipse.
Sobald ich es im Browser laufen lassen will, geht es nicht mehr.
Ich habe schon Stundenlang (wörtlich) im Internet nach Lösungen gesucht, bin mittlerweile am verzweifeln, ob es in einem Applet überhaupt möglich ist, eine XML zu laden (oder irgendeine andere Datei).

probiert habe ich folgende aufrufe:
Code:
URL path = this.getClass().getResource("/xml/movies.xml");
Code:
URL path = ClassLoader.getSystemResource"xml/movies.xml");
Code:
InputStream path = AppletClassLoader.getSystemResourceAsStream("xml/movies.xml");
Code:
InputStream path = getClass().getResourceAsStream("/xml/movies.xml");

alles dieses sollte dann (und funktioniert auch anstandslos in eclipse) zu meinen objekten führen:
Code:
Movies movies = JAXB.unmarshal(path, Movies.class);
Die Datei befindet sich in dem Resource-Folder: /res -> unterordner /xml/movies.xml
(in der .jar-Datei wird es dann zu -> abc.jar!/xml/movies.xml)

Das Applet wirft im Browser entweder NullpointerExceptions oder AccessDeniedExceptions, OBWOHL ich es (nach Anleitung von T. Darimont;)) signiert habe...

Muss/kann ich die .xml-Datei auch signieren?
Könnte ich die xml-Datei auch auf den Server legen? (habs schon versucht, dann findet er bei:
Code:
URL path = this.getClass().getResource("http://www.eineseite.de/movies.xml");
nicht mal in Eclipse die xml, obwohl ich genau die url im Browser eingeben kann und der Browser die xml dann öffnet.)

Es ist zum verzweifeln...

Edit:
hier mal eine Beispiel-Fehlermeldung, TROTZ signiertem applets:
Code:
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 javax.xml.bind.JAXB$Cache.<init>(Unknown Source)
	at javax.xml.bind.JAXB.getContext(Unknown Source)
	at javax.xml.bind.JAXB.unmarshal(Unknown Source)
	at webinterface.controller.ImportMovies.loadMoviesFromXML(ImportMovies.java:36)
	at webinterface.controller.ImportMovies.loadMovies(ImportMovies.java:31)
	at webinterface.main.MainApplet.init(MainApplet.java:65)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Ausnahme: java.security.AccessControlException: access denied (java.lang.RuntimePermission accessDeclaredMembers)
 
Zuletzt bearbeitet:
Also mit dem letzten kann ich dir vielleicht helfen:
Applets dürfen nur von dem Server Dateien laden, von dem sie selbst geladen wurden (aus Sicherheitsgründen). Hast du dein Applet vom selben Server geladen?
 
Hallo genodeftest,

meinen letzter Versuch (den mit der xml von der Website) habe ich nur in eclipse auspobiert, als es da schon nicht ging, hab ich mir garnicht erst die mühe gemacht, ne .jar zu erstellen, signen, hochladen etc.
aber werde es dann später nochmal versuchen, ob es so klappt, wenn das applet auch auf dem server liegt.
 
Zurück