cs_nosferaptus
Messages postés5Date d'inscriptionmardi 6 mars 2007StatutMembreDernière intervention 4 avril 2010
-
4 avril 2010 à 03:42
cs_nosferaptus
Messages postés5Date d'inscriptionmardi 6 mars 2007StatutMembreDernière intervention 4 avril 2010
-
4 avril 2010 à 14:40
Bonsoir tout le monde,
Mon problème est le suivant : j'utilise les RMI et je rencontre cette erreur:
"java.lang.ClassCastException: $Proxy0 cannot be cast to client.IClassDao"
je ne trouve pas de solution alors j'ajoute le jar du projet serveur comme bibliothèque pour le Client et je ne déclare pas une Interface mai j'utilise celle existante dans le jar dans ce cas ça marche mais par contre ça m'affiche une autre erreur :
"java.lang.NullPointerException"
je vous passe mon code en espérant que vous puissiez m'aidez
public void persist(Classe c) throws RemoteException;
public void update(Classe c) throws RemoteException;
public void delete(Classe c) throws RemoteException;
public Classe findById(String id) throws RemoteException;
public List<Classe> findAll() throws RemoteException;
}
****************************************************************
Code de l'implémentation de l'interface ClassDao :
public void persist(Classe c) throws RemoteException{
Utility.setPu("ServeurPU");
Utility.getEntityManager().getTransaction().begin();
Utility.getEntityManager().persist(c);
Utility.getEntityManager().getTransaction().commit();
}
public void update(Classe c) throws RemoteException{
Utility.getEntityManager().merge(c);
}
public void delete(Classe c) throws RemoteException{
Classe cl=Utility.getEntityManager().find(Classe.class,c.getIdC());
Utility.getEntityManager().remove(cl);
}
public Classe findById(String id) throws RemoteException{
return Utility.getEntityManager().find(Classe.class,id);
}
public List<Classe> findAll() throws RemoteException{
return (List<Classe>) Utility.getEntityManager().createQuery("SELECT c FROM Classe c").getResultList();
}
}
****************************************************************
Code du lancement Serveur :
cs_nosferaptus
Messages postés5Date d'inscriptionmardi 6 mars 2007StatutMembreDernière intervention 4 avril 2010 4 avril 2010 à 14:40
maintenant j'ai un autre problème:
quand je lance un "FindAll" via le client une exception est levée :
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: org.hibernate.collection.PersistentBag
pourtant j'ai changé le type de retour de cette méthode :
public Vector<Classe> findAll() throws RemoteException{
Vector<Classe> v=new Vector<Classe>();
List<Classe> l;
l=(List<Classe>) Utility.getEntityManager().createQuery("SELECT c FROM Classe c").getResultList();
for(int i=0;i<l.size();i++)
v.add(l.get(i));
return v;
}
puisque la classe "Vector" est "Serializable" contrairement à une "List"
de même pour le "FindById" qui est une méthode qui retourne un objet de type "Classe" donc je l'ai modifié pour que le type de retour soit un type primitif (String) et là ça marche !!!
c'est quoi la façon par laquelle je peut récupérer tout l'objet classe par une méthode et non pas un attribut à la fois ?