Bonjour !
Mon appli est, en gros, un gestionnaire de contacts, qui stock des infos sur des utilisateurs (10 à 20 users).
Ces informations sont stockées dans un fichier xml : UsersInfos.xml.
Dans mon appli, la servlet principale (ShowUserList) affiche, au format html, le contenu de ce fichier. Il y a donc un travail de parsing de ce fichier xml afin d'en obtenir la représentation sous forme d'Objects java.
Mais je n'ai pas qu'à parser le contenu de ce fichier, je doit aussi écrire dessus. Or, j'ai lu sur un forum qu'il n'était pas possible d'écrire directement sur un fichier contenu dans un jar/war (ce qui peut semble assez logique), donc ce que je fais c'est que je crée un fichier UsersInfos.xml quelque part où je pourrai le modifier (en l'occurence j'ai choisi java.io.tmpdir).
Afin de ne pas partir d'une base vierge (rentrer XX utilisateurs à la main à chaque fois) mon War contient plusieurs ressources dont un fichier "UsersInfos.xml" qui me sert donc de base de départ :
ContactManagerOscar.war
/WEB-INF/
|-...
|-res/
| |-...
| |-UsersInfos.xml
|-...
Je cherche donc à créer un nouveau fichier sur le server où je me trouve et le remplir avec le contenu de celui présent dans mon War.
J'arrive trés bien à effectuer cette opération sous windows avec un petit environnement embarqué qui est capable d'héberger des servlets (à partir d'un .jar équivalent à mon war), mais dès que je passe sous Tomcat, je ne m'en sors pas et j'obtiens ça :
Je pense (mais en fait je n'en sais rien) que c'est un problème de droit d'exécution qui n'ont pas les droits d'écriture, mais comment le savoir ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90 2006-10-13 14:34:53 HostConfig[localhost]: D?compression de l archive ContactManagerOscar.war de l application web 2006-10-13 14:34:53 StandardHost[localhost]: Installation d une application pour le chemin de contexte /ContactManagerOscar depuis l URL file:/var/lib/tomcat4/webapps/ContactManagerOscar 2006-10-13 14:34:53 WebappLoader[/ContactManagerOscar]: Deploying class repositories to work directory /var/lib/tomcat4/work/Standalone/localhost/ContactManagerOscar 2006-10-13 14:34:53 WebappLoader[/ContactManagerOscar]: Deploy class files /WEB-INF/classes to /var/lib/tomcat4/webapps/ContactManagerOscar/WEB-INF/classes 2006-10-13 14:34:53 WebappLoader[/ContactManagerOscar]: Deploy JAR /WEB-INF/lib/kxml-min.jar to /var/lib/tomcat4/webapps/ContactManagerOscar/WEB-INF/lib/kxml-min.jar 2006-10-13 14:34:53 StandardManager[/ContactManagerOscar]: Alimentation de la classe du g?n?rateur de nombre al?atoire java.security.SecureRandom 2006-10-13 14:34:53 StandardManager[/ContactManagerOscar]: L alimentation du g?n?rateur de nombre al?atoire est termin? 2006-10-13 14:34:53 StandardWrapper[/ContactManagerOscar:showServlet]: La servlet showServlet est marqu? comme indisponible 2006-10-13 14:34:53 StandardContext[/ContactManagerOscar]: La servlet /ContactManagerOscar a g?n?r? une exception "load()" javax.servlet.ServletException: Erreur ? l instantiation de la classe servlet com.monsite.partmult.webui.ShowUserList at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:865) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:776) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3363) at org.apache.catalina.core.StandardContext.start(StandardContext.java:3586) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:774) at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:115) at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:135) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:758) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:548) at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:260) at org.apache.catalina.core.StandardHost.install(StandardHost.java:741) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:445) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:353) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:671) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1149) at org.apache.catalina.core.StandardHost.start(StandardHost.java:707) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1141) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:316) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:2143) at org.apache.catalina.startup.Catalina.start(Catalina.java:463) at org.apache.catalina.startup.Catalina.execute(Catalina.java:350) at org.apache.catalina.startup.Catalina.process(Catalina.java:129) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:156) ----- Root Cause ----- java.security.AccessControlException: access denied (java.util.PropertyPermission java.io.tmpdir read) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264) at java.security.AccessController.checkPermission(AccessController.java:427) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285) at java.lang.System.getProperty(System.java:628) at com.monsite.partmult.UsersHandler.<init>(UsersHandler.java:47) at com.monsite.partmult.UsersHandler.getInstance(UsersHandler.java:34) at com.monsite.partmult.Administrator.<init>(Administrator.java:20) at com.monsite.partmult.Administrator.getInstance(Administrator.java:11) at com.monsite.partmult.webui.ShowUserList.<init>(ShowUserList.java:35) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at java.lang.Class.newInstance0(Class.java:350) at java.lang.Class.newInstance(Class.java:303) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:856) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:776) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3363) at org.apache.catalina.core.StandardContext.start(StandardContext.java:3586) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:774) at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:115) at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:135) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:758) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:548) at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:260) at org.apache.catalina.core.StandardHost.install(StandardHost.java:741) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:445) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:353) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:671) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1149) at org.apache.catalina.core.StandardHost.start(StandardHost.java:707) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1141) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:316) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:2143) at org.apache.catalina.startup.Catalina.start(Catalina.java:463) at org.apache.catalina.startup.Catalina.execute(Catalina.java:350) at org.apache.catalina.startup.Catalina.process(Catalina.java:129) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:156)
Partager