Bonjour à tous.
Voilà je viens vous exposer mon problème ici, car j'y ai passé la journée et n'ai pas vraiment avancé..voir pas du tout .. bref je suis en grosse galère.

Le problème :
je veut écrire dans un .xml, rajouter un élément, en passant par une servlet.
En gros j'ai donc :
une page html -> lance la servlet -> servlet écrit dans le xml
J'utilise donc Jdom pour parser le document.

Mais voilà, rien ne s'écrit dans mon fichier xml si je passe par la servlet, alors que si je passe par une classe de test, qui effectue exactement la même chose, ça fonctionne bien .. je n'y comprends rien.

servlet :
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
 
package servlet;
 
import gestionReservation.Calendrier;
import gestionReservation.Reservation;
import gestionReservation.Salle;
import comparaison.ComparerResa;
import persistance.TraitementJdom;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
 
/**
 * Servlet implementation class ServletReservation
 */
@WebServlet("/ServletReservation")
public class ServletReservation extends HttpServlet {
	private static final long serialVersionUID = 1L;
    private TraitementJdom m_traitementJdom = null;   
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletReservation() {
        super();
        this.m_traitementJdom = new TraitementJdom();
 
    }
 
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		Salle salle2 = new Salle(2);
		Salle salle1 = new Salle(1);
		Salle salle3 = new Salle(3);
		List lsalles = new ArrayList();
		lsalles.add(salle1);
		lsalles.add(salle2);
		lsalles.add(salle3);
 
		Calendar dateDeb = Calendar.getInstance();
		Calendar dateFin = Calendar.getInstance();
		dateDeb.set(2013, 03, 24, 16,15);
		dateFin.set(2013,03,24,15,15);
 
		Calendar dateDeb2 = Calendar.getInstance(); 
		Calendar dateFin2 = Calendar.getInstance();
		dateDeb.set(2013, 03, 25, 16,15);
		dateFin.set(2013,03,25,15,15);
 
		String commentaire="";
 
		//réservations
		Reservation resa = new Reservation(1,salle2.getNumSalle(), dateDeb, dateFin,commentaire);
		Reservation resa2 = new Reservation(2, salle3.getNumSalle(), dateDeb2, dateFin2,commentaire);
 
		//liste réservations
		Calendrier cal=new Calendrier();
		cal.getListeResa().add(resa);
		cal.getListeResa().add(resa2);
 
		//affichage des reservations
		String str = "";
		str=cal.afficherReservation(cal.getListeResa());
		request.setAttribute("reservations", str);
		this.getServletContext().getRequestDispatcher( "/affichageReservation.jsp" ).forward( request, response );
 
		TraitementJdom arbre = new TraitementJdom();
		arbre.parserDocument();
		arbre.creerSalle("4");
	}
 
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 
 
 
		Calendrier cal=new Calendrier();
		int numSalle=Integer.parseInt(request.getParameter("numSalle")); //récupère le contenu du champs salle
		String dateDebut=request.getParameter("dateDebut");
		String heureDeb=request.getParameter("heureDeb");
		String heureFin=request.getParameter("heureFin");
 
		Calendar dateConvertDeb = Calendar.getInstance();
		Calendar dateConvertFin = Calendar.getInstance();
 
		//decouper chaine de caractères
		if(dateDebut!=null && heureDeb!=null && heureFin!=null){
 
			String[] dateDecoup;
			dateDecoup=new String[3];
 
			String[] heureDebDecoup;
			heureDebDecoup=new String[2];
			String[] heureFinDecoup;
			heureFinDecoup=new String[2];
 
			dateDecoup = dateDebut.split("/");
			heureDebDecoup = heureDeb.split(":");
			heureFinDecoup = heureFin.split(":");
			//conversion str to calendar
			dateConvertDeb.set(Integer.parseInt(dateDecoup[2]),
					Integer.parseInt(dateDecoup[1]), Integer.parseInt(dateDecoup[0]),
					Integer.parseInt(heureDebDecoup[0]),Integer.parseInt(heureDebDecoup[1]));
			dateConvertFin.set(Integer.parseInt(dateDecoup[2]), 
					Integer.parseInt(dateDecoup[1]), Integer.parseInt(dateDecoup[0]),
					Integer.parseInt(heureFinDecoup[0]),Integer.parseInt(heureFinDecoup[1]));
 
			Reservation resaTest=cal.reserverUneSalle(numSalle, dateConvertDeb, dateConvertFin, cal.getListeResa());
			cal.getListeResa().add(resaTest);
			String str = "";
			str=cal.afficherReservation(cal.getListeResa());
			request.setAttribute("reservations_post", str);
 
			//persistance
	//		Element salle = new Element("salle");
 
			//request.setAttribute("coucou", str);
			this.getServletContext().getRequestDispatcher( "/affichageReservation.jsp" ).forward( request, response );
 
 
 
		}
		else{
			String str_erreur="erreur";
			request.setAttribute("reservations_erreur", str_erreur);
			this.getServletContext().getRequestDispatcher( "/affichageReservation.jsp" ).forward( request, response );
 
		}//fin condition
 
 
		this.m_traitementJdom.parserDocument();
		this.m_traitementJdom.creerSalle("4");
 
 
	}//fin do post
 
	//public void init(ServletConfig config) throws ServletException{
	//}
 
}
à la fin je fais :
this.m_traitementJdom.parserDocument();
this.m_traitementJdom.creerSalle("4");
et rien ne se crée dans le .xml

Alors que si je fais une petite classe main, et je remet exactement la même chose, ça fonctionne ...


et mon traitement jdom

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 
package persistance;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import java.util.List;
 
import org.jdom2.*;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.w3c.dom.css.DocumentCSS;
import org.jaxen.*;
 
public class TraitementJdom {
	private Element m_racine = null;
	private DocType doctype = null;
	private Document m_document = null;
 
	public TraitementJdom(){
		this.m_racine = new Element("calendrier");
		this.doctype = new DocType("calendrier", "dtdResa.dtd");
		this.m_document = new Document(m_racine, doctype);
	}
 
	public void parserDocument(){
		SAXBuilder sxb = new SAXBuilder();
	      try
	      {
	         this.m_document = sxb.build(new File("WebContent/lib/listeSallesReservations.xml"));	
	      }
	      catch(Exception e){}
 
	      //On initialise un nouvel élément racine avec l'élément racine du document
		  this.doctype = new DocType("calendrier", "dtdResa.dtd");
	      this.m_racine = this.m_document.getRootElement();         
	}
 
	public void ecrire(){
		Format format= Format.getPrettyFormat();
		format.setEncoding("ISO-8859-1");
		XMLOutputter sortie = new XMLOutputter(format);
		FileOutputStream fos = null;
		try{
			fos = new FileOutputStream("WebContent/lib/listeSallesReservations.xml");
			OutputStreamWriter out = new OutputStreamWriter(fos,"ISO-8859-1");
			sortie.output(this.m_document, out);
		}
		catch(IOException e){
			e.printStackTrace();
		}finally{
			if (fos !=null){
				try{
					fos.close();
				}catch(IOException e){
					e.printStackTrace();
				}
			}
		}
 
	}
 
public void creerReservation(String numSalleResa, String numReservation, String dateReservation, String heureDebutResa, String heureFinResa, String commentaireResa){
 
		Element reservation = new Element("reservation");
 
		Element numResa = new Element("numResa");
		Element date = new Element("date");
		Element heureDeb = new Element("heureDeb");
		Element heureFin = new Element("heureFin");
		Element commentaire = new Element("commentaire");
 
		numResa.setText(numReservation);
		date.setText(dateReservation);
		heureDeb.setText(heureDebutResa);
		heureFin.setText(heureFinResa);
		commentaire.setText(commentaireResa);
 
		reservation.addContent(numResa);
		reservation.addContent(date);
		reservation.addContent(heureDeb);
		reservation.addContent(heureFin);
		reservation.addContent(commentaire);
 
		this.getSalle(numSalleResa).addContent(reservation);
		ecrire();	
	}
 
public void creerSalle(String numeroSalle){
	Element salle = new Element("salle");
	Element numSalle = new Element("numSalle");
 
	numSalle.setText(numeroSalle);
	salle.addContent(numSalle);
 
	this.m_racine.addContent(salle);
	ecrire();
}
 
public Element getSalle(String numeroSalle){	
	Element salle = null;
 
	List listEtudiants = this.m_racine.getChildren("salle");
 
	Iterator i = listEtudiants.iterator();
	   while(i.hasNext())
	   {
	      Element courant = (Element)i.next();
	      if(courant.getChild("numSalle").getTextTrim() == numeroSalle){
	salle = courant;
	      }
	   }	   
	return salle;
	}
 
}

J'espère que vous pourrez m'aider à résoudre ce problème ..
Si je n'ai pas bien expliqué demandez moi .. mais je pense que c'est une erreur très conne ...

Un grand merci à tous ceux qui essayeront de m'aider...


EDIT : j'ai entendu parlé de "déployé la bibliothèque que tu utilises avec ton application web sur le serveur"
C'est certainement ça mon pb, qq'un pourrait m'expliquer de façon détaillé (que j'arrive à suivre...) en quoi cela consiste ?