Bonjour, j'ai un souci.
J'ai une base de donnée mySQL qui contient des Blobs.
J'ai une servlet qui communique avec un serveur par le biais d'une socket et le serveur communique avec JDBC avec ma base.

J'essaie de récupérer mon blob et de le mettre dans une classe contenant toutes mes infos nécessaires et d'ensuite envoyer ce blob par la socket. Le soucis est que l'objet que je récupère est un com.mysql.jdbc.Blob et non un java.sql.Blob mais ca je pense que ca ne pose pas de problème.

La où est le soucis c'est que au moment de l'envoie de mon objet sur la socket, j'ai une erreur dont voici la stackstrace:

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
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.mysql.jdbc.Blob
	java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1333)
	java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
	java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
	java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	ConnectionSocket.SendReceive.receive(SendReceive.java:40)
	BTMPPkg.BTMPClient.recoit(BTMPClient.java:59)
	BTMPPkg.BTMPClient.recupFilm(BTMPClient.java:90)
	Servlet.servletBTMP.processRequest(servletBTMP.java:39)
	Servlet.servletBTMP.doGet(servletBTMP.java:86)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
voici mon objet que je veux sérialisé:
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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
 
package BTMPPkg.Data;
 
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.Date;
import java.util.Vector;
 
 
public class Films implements Serializable
{
    private static final long serialVersionUID = 4368390168812353361L;
    private int id;
    private String Nom;
    private Date date_de_sortie;
    private double duree;
    private String couleur;
    private String mpaa;
    private String genre;
    private String acteur;
    private String producteur;
    private String maisonProduction;
    private String qualite;
    private Blob affiche;
 
    public Films(){}
 
    public Films(int id,String Nom,Date date_de_sortie,double duree,String couleur,String mpaa,String genre,String acteur,String producteur,String maisonProduction,String qualite)
    {
        this.id = id;
        this.Nom = Nom;
        this.date_de_sortie = date_de_sortie;
        this.duree = duree;
        this.couleur = couleur;
        this.mpaa = mpaa;
        this.genre = genre;
        this.acteur = acteur;
        this.producteur = producteur;
        this.maisonProduction = maisonProduction;
        this.qualite = qualite;
 
    }
 
 
    public Vector getVector()
    {
        Vector v = new Vector();
 
        v.add(getId());
        v.add(getNom());
        v.add(getDate_de_sortie());
        v.add(getDuree());
        v.add(getCouleur());
        v.add(getMpaa());
        v.add(getGenre());
        v.add(getActeur());
        v.add(getProducteur());
        v.add(getMaisonProduction());
        v.add(getQualite());
 
        return v;
    }
 
    /**
     * @return the id
     */
    public int getId() {
        return id;
    }
 
    /**
     * @return the Nom
     */
    public String getNom() {
        return Nom;
    }
 
    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }
 
    /**
     * @param Nom the Nom to set
     */
    public void setNom(String Nom) {
        this.Nom = Nom;
    }
 
    /**
     * @return the date_de_sortie
     */
    public Date getDate_de_sortie() {
        return date_de_sortie;
    }
 
    /**
     * @param date_de_sortie the date_de_sortie to set
     */
    public void setDate_de_sortie(Date date_de_sortie) {
        this.date_de_sortie = date_de_sortie;
    }
 
    /**
     * @return the duree
     */
    public double getDuree() {
        return duree;
    }
 
    /**
     * @param duree the duree to set
     */
    public void setDuree(double duree) {
        this.duree = duree;
    }
 
    /**
     * @return the mpaa
     */
    public String getMpaa() {
        return mpaa;
    }
 
    /**
     * @param mpaa the mpaa to set
     */
    public void setMpaa(String mpaa) {
        this.mpaa = mpaa;
    }
 
    /**
     * @return the genre
     */
    public String getGenre() {
        return genre;
    }
 
    /**
     * @param genre the genre to set
     */
    public void setGenre(String genre) {
        this.genre = genre;
    }
 
    /**
     * @return the acteur
     */
    public String getActeur() {
        return acteur;
    }
 
    /**
     * @param acteur the acteur to set
     */
    public void setActeur(String acteur) {
        this.acteur = acteur;
    }
 
    /**
     * @return the producteur
     */
    public String getProducteur() {
        return producteur;
    }
 
    /**
     * @param producteur the producteur to set
     */
    public void setProducteur(String producteur) {
        this.producteur = producteur;
    }
 
    /**
     * @return the maisonProduction
     */
    public String getMaisonProduction() {
        return maisonProduction;
    }
 
    /**
     * @param maisonProduction the maisonProduction to set
     */
    public void setMaisonProduction(String maisonProduction) {
        this.maisonProduction = maisonProduction;
    }
 
    /**
     * @return the qualite
     */
    public String getQualite() {
        return qualite;
    }
 
    /**
     * @param qualite the qualite to set
     */
    public void setQualite(String qualite) {
        this.qualite = qualite;
    }
 
    /**
     * @return the couleur
     */
    public String getCouleur() {
        return couleur;
    }
 
    /**
     * @param couleur the couleur to set
     */
    public void setCouleur(String couleur) {
        this.couleur = couleur;
    }
 
    /**
     * @return the affiche
     */
    public InputStream getAffiche() throws SQLException, FileNotFoundException, IOException {
 
        return affiche.getBinaryStream();
    }
 
    /**
     * @param affiche the affiche to set
     */
    public void setAffiche(Blob affiche) throws SQLException {
 
        this.affiche = affiche;
    }
}
et voici la partie du code qui récupère mon blob:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while (rs.next())
            {
                Date d = rs.getDate(2);
                Films f = null;
                if(d.after(c.getTime()))
                {
                    f = new Films(rs.getInt(3),rs.getString(4),rs.getDate(5),rs.getDouble(6),rs.getString(7),rs.getString(8),rs.getString(9),rs.getString(10),rs.getString(11),rs.getString(12),rs.getString(13));
                    Blob b= (Blob) rs.getBlob("Affiche");
                    f.setAffiche(b);
 
                    films.add(new Seance(rs.getString(1),rs.getDate(2),f));
 
                }
            }
Le rs est bien rempli car si je ne met pas le blob je peux recevoir le reste de la classe.


Merci d'avance

Julien