Bonjour,

Je suis entrain de développer un WebService sur le serveur d'application Glassfish. Et je suis confronté à un énorme problème, j'arrive pas à le résoudre. En effet, j'ai effectue un mapping Objet relationnel avec JPA entre les tables de ma base de données SQL Server 2005 et les classes Java de mon WebService. Dès lors que je déploie mon application, j'obtiens l'erreur suivante :
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
Buildfile: C:\project\.metadata\.plugins\org.eclipse.jst.server.generic.core\serverdef\sunappsrv-ant.xml
deploy.j2ee.web:
tools:
deploydir:
     [exec] CLI171 Échec de la commande deploydir : Déploiement de l'application dans le domaine a échoué ; Erreur de déploiementjava.security.PrivilegedActionException: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
     [exec] java.sql.Date n'a pas de constructeur sans argument par défaut.
     [exec] 	this problem is related to the following location:
     [exec] 		at java.sql.Date
     [exec] 		at public java.sql.Date datas.Produit.getDateDisponibilite()
     [exec] 		at datas.Produit
     [exec] 		at private java.util.List service.jaxws.SearchProductByCategoryResponse._return
     [exec] 		at service.jaxws.SearchProductByCategoryResponse
     [exec]  -- Impossible de créer JAXBContext en raison de la restriction de sécurité
     [echo] Application dir Deployed at: http://localhost:8080/compare
BUILD SUCCESSFUL
Total time: 4 seconds
Et la classe mise en cause est la suivante :
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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package datas;
 
import java.sql.Date;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
 
import service.Impl;
 
@Entity
@Table(name="produit")
public class Produit {
 
	protected int idProduit;
	protected String nom;
	protected String modele;
	protected double prix;
	protected String lienUrl;
	protected int quantite;
	protected Date dateDisponibilite;
	protected int poids;
 
	protected Categorie categorie;
	protected Fournisseur fournisseur;
 
	@Id
	@Column(name="IdProduit")
	public int getIdProduit() {
		return idProduit;
	}
	public void setIdProduit(int idProduit) {
		this.idProduit = idProduit;
	}
	@Column(name="Nom")
	public String getNom() {
		return nom;
	}
	public void setNom(String nom) {
		this.nom = nom;
	}
	@Column(name="Modele")
	public String getModele() {
		return modele;
	}
	public void setModele(String modele) {
		this.modele = modele;
	}
	@Column(name="Prix")
	public double getPrix() {
		return prix;
	}
	public void setPrix(double prix) {
		this.prix = prix;
	}
	@Column(name="LienUrl")
	public String getLienUrl() {
		return lienUrl;
	}
	public void setLienUrl(String lienUrl) {
		this.lienUrl = lienUrl;
	}
	@Column(name="Quantite")
	public int getQuantite() {
		return quantite;
	}
	public void setQuantite(int quantite) {
		this.quantite = quantite;
	}
	//@Transient
	/*
	@Column(name="dateDisponibilite")
	public Date getDateDisponibilite() {
		return dateDisponibilite;
	}
	public void setDateDisponibilite(Date dateDisponibilite) {
		this.dateDisponibilite = dateDisponibilite;
	}*/
	@Column(name="Poids")
	public int getPoids() {
		return poids;
	}
	public void setPoids(int poids) {
		this.poids = poids;
	}
	@ManyToOne
	@JoinColumn(name="IdCategorie",referencedColumnName="IdCategorie")
	public Categorie getCategorie() {
		return categorie;
	}
	public void setCategorie(Categorie categorie) {
		this.categorie = categorie;
	}
	@ManyToOne
	@JoinColumn(name="IdFournisseur",referencedColumnName="IdFournisseur")
	public Fournisseur getFournisseur() {
		return fournisseur;
	}
	public void setFournisseur(Fournisseur fournisseur) {
		this.fournisseur = fournisseur;
	}
 
	// Constructeurs
	public Produit(){  }
 
	public Produit(int idProduit, Categorie categorie, Date dateDisponibilite, Fournisseur fournisseur) {
		this.dateDisponibilite = dateDisponibilite;
		this.categorie = categorie;
		this.fournisseur = fournisseur;
	}
 
	//Lecture d'un enregistrement dans la BD
	public Produit lire(int id){
 
		Produit pdt = null;
 
		pdt = Impl.em.find(Produit.class, id);
 
		if(pdt != null) return pdt;
		else return null;
 
	}
 
	//Insertion un enregistrement dans la BD
	public void ajouter(){
 
		try{
			Impl.em.getTransaction().begin();
 
			Impl.em.persist(this);
 
			Impl.em.getTransaction().commit();
		} catch(Exception e){
			Impl.em.getTransaction().rollback();
		}
 
	}
 
	//Modification de l'enregistrement dans la BD
	public void modifier(){
 
		try{
			Impl.em.getTransaction().begin();
 
			Impl.em.flush();
 
			Impl.em.getTransaction().commit();
		} catch(Exception e){
			Impl.em.getTransaction().rollback();
		}
	}
 
	//Suppression l'enregistrement de la BD
	public void supprimer(){
 
		try{
			Impl.em.getTransaction().begin();
 
			Impl.em.refresh(this);
			Impl.em.remove(this);
 
			Impl.em.getTransaction().commit();
		} catch(Exception e){
			Impl.em.getTransaction().rollback();
		}
	}
}
Merçi d'avance pour vos réponses.