Bonjour,
je fais appel a un EJB Session depuis une servlet. tout se passe bien, la communication se fait bien mais lorsque a la fin de cette methode je retourne un objet vers ma servlet, la servlet recupere cet objet et lance une cette exception :
Voici la methode de mon EJB Session appelée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 15:38:14,570 ERROR [[MaterielDA]] Servlet.service() for servlet MaterielDA threw exception java.lang.LinkageError: Class com/hippocad/proxad/data/beans/SchemaTherapeutiqueListTO violates loader constraints
Et la servlet qui recupere l'objet :
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 /** * Business method * @ejb.interface-method view-type = "both" */ public SchemaTherapeutiqueListTO getSchemaTherapeutiqueListTO() { // TODO :: FAIRE REQUETE QUI RECUPERE ID DE TOUS LES ST // POUR CHAQUE ID, RECUPERE LES COMPOSÉS SchemaTherapeutiqueListTO listST = new SchemaTherapeutiqueListTO(); String sqlQry = "SELECT DISTINCT(id_categorie_pere) FROM `categorie_composition` WHERE status=0"; System.out .println("SchemaTherapeutiqueDABean.getListSchemaTherapeutiqueTO() sqlQry : " + sqlQry); /*MySqlCnxParameters prmHippoCad = new MySqlCnxParameters( DAServletProperties.getString("DAServletPrm.dbHost"), DAServletProperties.getString("DAServletPrm.dbName"), DAServletProperties.getString("DAServletPrm.dbUser"), DAServletProperties.getString("DAServletPrm.dbPwd")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$*/ MySqlCnxParameters prmHippoCad = new MySqlCnxParameters( "localhost", "materiel", "root", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ MysqlManager cnxMAnager = new MysqlManager(prmHippoCad); ResultSet rs; try { cnxMAnager.connect(); rs = cnxMAnager.getDefaultStatement().executeQuery(sqlQry); while (rs.next()) { long idSchemaTherapeutique = rs.getLong("id_categorie_pere"); listST.addSchemaTherapeutique(this.getSchemaTherapeutiqueTO(idSchemaTherapeutique)); } } catch (SQLException e) { System.out .println("SchemaTherapeutiqueDABean.getListSchemaTherapeutiqueTO() EXCEPTION !!!"); e.printStackTrace(); } System.out.println("getListSchemaTherapeutique "+ listST.getListSchemaTherapeutique().size()); return listST; }
Quelqu'un sait pourquoi j'ai cette exception de levée? J'ai trouvé sur le net, que c'etait parce que ma classe etait deux fois dans mon class-path, mais je ne vois pas ou.
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 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { long idSchemaTherapeutique; TypeReq pTypeReq; System.out.println("SchemaTherapeutiqueDAServlet.doPost()"); InputStream reqIn = req.getInputStream(); // Create XML decoder. final XMLDecoder xdec = new XMLDecoder(reqIn); final Object obj = xdec.readObject(); try { pTypeReq = (TypeReq)Enum.valueOf(TypeReq.class,(String)obj); final Object obj2; OutputStream respOs = resp.getOutputStream(); ; SchemaTherapeutiqueDALocal stDALocal= SchemaTherapeutiqueDAUtil.getLocalHome().create(); switch (pTypeReq) { case GET_SCHEMA_THERAPEUTIQUE: obj2 = xdec.readObject(); idSchemaTherapeutique = (Long)obj2; reqIn.close(); SchemaTherapeutiqueTO ST = stDALocal.getSchemaTherapeutiqueTO(idSchemaTherapeutique); ST.transfertObject(respOs); break; case GET_LIST_SCHEMA_THERAPEUTIQUE: reqIn.close(); SchemaTherapeutiqueListTO listST = stDALocal.getSchemaTherapeutiqueListTO(); System.out.println("test"); System.out.println(listST.getListSchemaTherapeutique().size()); listST.transfertObject(respOs); } respOs.flush(); respOs.close(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CreateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch(Exception theException) { System.out.println("EXCEPTION"+theException); } } catch (RuntimeException e) { System.out.println("IntervenantListTO.load()"); e.printStackTrace(); }finally { } }
Sinon, j'ai un autre probleme lors de la communication entre deux beans sessions, quel méthode est la plus simple?
Merci
Partager