Bonjour,

Je vous explique en quelques mots ce que je souhaite faire.

J'ai un EJB Entity Category dont voici le code

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
package ejb.bean.entity
 
@Entity
@Table(name = "T_CATEGORY")
@NamedQuery(name = "categories", query = "select c from Category c")
public class Category implements ICategory {
 
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer idCategory;
 
	@Column(name = "wording")
	private String wording;
 
	@OneToMany
	private List<Article> articles;
 
	public Category() {
		super();
	}
 
        ....
Cet Ejb implémente l'interface suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
package interfaces;
 
import javax.ejb.Remote;
 
@Remote(ICategory.class)
public interface ICategory {
 
	public String getDescription();
 
}
Ensuite j'ai créé un EJB StateLess qui me permet de récupérer toutes les catégories. Donc j'arrive très bien à partir de mon service catégories à récupérer la liste des catégories existantes en faisant comme suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
List<T> list = (List<T>)em.createNamedQuery(name).getResultList();
Sachant que em est l'entity manager. Et que je n'utilise pas directement la classe Category mais son Interface.


Donc une fois la liste récupérée au niveau de mon EJB StateLess si je l'affiche je retrouve bien les traces dans les logs. Par contre quand je fais appel à la méthode de EJB StateLess appartir d'un client tout ce passe bien appart la récupération de la liste de ICategory. Cela lève l'erreur suivante :

Exception in thread "main" javax.ejb.EJBException: Error while sending a request
Caused by: java.lang.RuntimeException: Error while handling answer on the remote side
Caused by: java.rmi.UnmarshalException: ClassNotFoundException unmarshalling returnjava.lang.ClassNotFoundException: ejb.bean.entity.Category (no security manager: RMI class loader disabled)
J'ai testé en renvoyant au client une ArrayList<String> et cela fonctionne. Pourtant je fais bien attention à utiliser des List que j'ai typé en ICategory. J'ai bien mis les bonnes annotations ( @Remote au niveau de l'interface ) et j'ai fait le lien sous eclipse du fichier source ou je met toutes mes interfaces Remote donc le client connait bien les interfaces. Ai-je oublié quelque chose ??

Normalement je n'ai pas besoin de rajouter l'implémentation de Serializable, le faite de mettre l'annotation @remote fait tout ??

Ou est-ce du au faite que j'ai fais de la généricité ?? Car j'ai créé un EJB StateLess Dao qui est typable ( je ne sais pas si ca se dit ^^ ). Donc dans mon service categorie j'utilise cette EJB en le typant avec ICategory.

Peut être que je dois faire non pas un stateless mais un statefull ??

La je ne sais plus très bien quoi faire, quelqu'un pourrai me donner une piste svp

Merci d'avance,

Cordialement,

Matthieu