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 :
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
Voici la methode de mon EJB Session appelée:

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;
	}
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
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 {
 
        }										
	}
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.

Sinon, j'ai un autre probleme lors de la communication entre deux beans sessions, quel méthode est la plus simple?

Merci