Bonjour alors voila j'ai un petit probleme.
Pour faire simple j'ai un bean entité : Adresse, un sessionBean et une servlet
ma servlet appele une méthode de mon sessionBean, cette méthode doit retourné un objet adresse.
Voici le code:
Coté servlet
Coté sessionBean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 System.out.println("1"); prototype.getTestAdresse((long)2328); System.out.println("2");
A l'execution, j'obtient:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public O2Adresse getTestAdresse(Long id) { O2Adresse addr =(O2Adresse) manager.createQuery( "From O2Adresse where adr_id=" + id).getSingleResult(); System.out.println(addr.getAdrCodepostal()); return addr; }
C'est a dire que la requete me retourne bien une adresse car je peux afficher le code postal dans le session bean parcontre, au moment je reprendre la main avec ma servlet, l'execution plante.
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
3214:44:19,106 INFO [STDOUT] 1 14:44:19,236 INFO [STDOUT] 38470 14:44:19,246 ERROR [[ListingServlet]] Servlet.service() for servlet ListingServlet threw exception java.lang.ClassCastException: [Ljava.lang.Class; at org.jboss.serial.persister.ClassReferencePersister.writeData(ClassReferencePersister.java:42) at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java:117) at org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:260) at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java:81) at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java:46) at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java:117) at org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:260) at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java:81) at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java:46) at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java:117) at org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:260) at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java:81) at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java:46) at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java:117) at org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:260) at org.jboss.serial.io.JBossObjectOutputStream.writeObjectOverride(JBossObjectOutputStream.java:111) at java.io.ObjectOutputStream.writeObject(Unknown Source) at org.jboss.serial.io.MarshalledObject.<init>(MarshalledObject.java:51) at org.jboss.ejb3.SessionContainer.marshallResponse(SessionContainer.java:211) at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:223) at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:55) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98) at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102) at $Proxy113.getTestAdresse(Unknown Source) at test.ListingServlet.doPost(ListingServlet.java:55) at test.ListingServlet.doGet(ListingServlet.java:43) ....
Au passage si je remplace la méthode de mon session pour qu'il renvoi systématiquement null, l'execution fonctionne...
Donc voila a prioris cela semble être un problème de communication, entre ma servet et mon sessionbean. Je sens bien un probleme de serialisation mais a prioris tous mes beans sont serializable. Au passage ils ont été généré par HibernateTools...
Au passage voila le code de mon entité, sans les constructeurs n'y les setters.
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 @Entity @Table(name="ADRESSE" ,schema="XxXXxX" , uniqueConstraints = { } ) public class O2Adresse implements java.io.Serializable { private long adrId; private O2Rue o2Rue; private Short adrNumero; private String adrSequence; private String adrComplementrue; private String adrBoitepostale; private String adrCodepostal; private String adrComplementville; private String adrAppartement; private String adrEtage; private String adrBatiment; private String adrEscalier; private Set<O2Installation> o2Installations = new HashSet<O2Installation>(0); private Set<O2Pointdinstallation> o2Pointdinstallations = new HashSet<O2Pointdinstallation>(0); private Set<O2Client> o2Clients = new HashSet<O2Client>(0); // Constructors //... @Id @Column(name="ADR_ID", unique=true, nullable=false, insertable=true, updatable=true, precision=10, scale=0) public long getAdrId() { return this.adrId; } @ManyToOne(cascade={}, fetch=FetchType.LAZY) @JoinColumn(name="RUE_ID", unique=false, nullable=false, insertable=true, updatable=true) public O2Rue getO2Rue() { return this.o2Rue; } @Column(name="ADR_NUMERO", unique=false, nullable=true, insertable=true, updatable=true, precision=4, scale=0) public Short getAdrNumero() { return this.adrNumero; } @Column(name="ADR_SEQUENCE", unique=false, nullable=true, insertable=true, updatable=true, length=6) public String getAdrSequence() { return this.adrSequence; } @Column(name="ADR_COMPLEMENTRUE", unique=false, nullable=true, insertable=true, updatable=true, length=32) public String getAdrComplementrue() { return this.adrComplementrue; } @Column(name="ADR_BOITEPOSTALE", unique=false, nullable=true, insertable=true, updatable=true, length=11) public String getAdrBoitepostale() { return this.adrBoitepostale; } @Column(name="ADR_CODEPOSTAL", unique=false, nullable=true, insertable=true, updatable=true, length=5) public String getAdrCodepostal() { return this.adrCodepostal; } @Column(name="ADR_COMPLEMENTVILLE", unique=false, nullable=true, insertable=true, updatable=true, length=60) public String getAdrComplementville() { return this.adrComplementville; } @Column(name="ADR_APPARTEMENT", unique=false, nullable=true, insertable=true, updatable=true, length=6) public String getAdrAppartement() { return this.adrAppartement; } @Column(name="ADR_ETAGE", unique=false, nullable=true, insertable=true, updatable=true, length=2) public String getAdrEtage() { return this.adrEtage; } @Column(name="ADR_BATIMENT", unique=false, nullable=true, insertable=true, updatable=true, length=20) public String getAdrBatiment() { return this.adrBatiment; } @Column(name="ADR_ESCALIER", unique=false, nullable=true, insertable=true, updatable=true, length=2) public String getAdrEscalier() { return this.adrEscalier; } @OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.LAZY, mappedBy="o2Adresse") public Set<O2Installation> getO2Installations() { return this.o2Installations; } @OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.LAZY, mappedBy="o2Adresse") public Set<O2Pointdinstallation> getO2Pointdinstallations() { return this.o2Pointdinstallations; } @OneToMany(cascade={CascadeType.ALL}, fetch=FetchType.LAZY, mappedBy="o2Adresse") public Set<O2Client> getO2Clients() { return this.o2Clients; } }
Partager