Ejb, lomboz et collection
Thomas Roosen
-
Thomas Roosen -
Thomas Roosen -
Bonjour,
je rencontre un problème avec des EJB créés avec Lomboz.
Il se trouve que lorsque une méthode de l'EJB renvoie autre chose qu'un type
simple, je rencontre une erreur.
Je teste mon EJB avec un client de Test créé à partir d'un assistant de
Lomboz.
Dans les messages suivants, vous trouverez le code des fichiers "ListerBean.java" correspondant à la partie métier de l'EJB et "VenteBean.java" qui correspond à l'élément de base qui compose ma
liste.
La première méthode (getListe())doit me retourner une collection ==> renvoie
une erreur.
La deuxième méthode (getLeon()) ne doit rien me retourner ==> ok
la troisième méthode (getInt()) doit me retourner un entier ==> ok
la quatrième méthode (getVenteBean()) doit me retourner un "VenteBean" ==>
renvoie une erreur.
De plus, il faut savoir que la méthode en elle même ne semble pas poser de
problème puisque même dans les cas où je rencontre une erreur, les traces
apparaissent bien dans la console.
Voici maintenant l'erreur.
Qu'est a-t-il déjà rencontré (et solutionné) ce problème?
D'avance merci.
je rencontre un problème avec des EJB créés avec Lomboz.
Il se trouve que lorsque une méthode de l'EJB renvoie autre chose qu'un type
simple, je rencontre une erreur.
Je teste mon EJB avec un client de Test créé à partir d'un assistant de
Lomboz.
Dans les messages suivants, vous trouverez le code des fichiers "ListerBean.java" correspondant à la partie métier de l'EJB et "VenteBean.java" qui correspond à l'élément de base qui compose ma
liste.
La première méthode (getListe())doit me retourner une collection ==> renvoie
une erreur.
La deuxième méthode (getLeon()) ne doit rien me retourner ==> ok
la troisième méthode (getInt()) doit me retourner un entier ==> ok
la quatrième méthode (getVenteBean()) doit me retourner un "VenteBean" ==>
renvoie une erreur.
De plus, il faut savoir que la méthode en elle même ne semble pas poser de
problème puisque même dans les cas où je rencontre une erreur, les traces
apparaissent bien dans la console.
Voici maintenant l'erreur.
java.lang.reflect.UndeclaredThrowableException at $Proxy1.getVenteBean(Unknown Source) at serviceCommercial.Test14.testBean(Test14.java:55) at serviceCommercial.Test14.main(Test14.java:6 Caused by: java.io.NotSerializableException: serviceCommercial.VenteBean at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278) at java.rmi.MarshalledObject.<init>(MarshalledObject.java:92) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:363) at sun.reflect.GeneratedMethodAccessor77.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261) at sun.rmi.transport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:536) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247) at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223) at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:133) at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source) at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:135) at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:87) at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46) at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:45) at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:100) at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:85) ... 3 more Exception in thread "main"
Qu'est a-t-il déjà rencontré (et solutionné) ce problème?
D'avance merci.
A voir également:
- Ejb, lomboz et collection
- Collection google - Accueil - Photo
- Pour le mariage d'olivia, jalil et sa famille veulent lui offrir un cadeau en commun. quel service en ligne peut utiliser jalil pour collecter l'argent ? ✓ - Forum Vos droits sur internet
- Pour l’anniversaire de raphaël, victoria et ses amis veulent lui offrir un cadeau en commun. quel service en ligne peut utiliser victoria pour collecter l’argent ? - Forum Loisirs / Divertissements
- Collecter les souvenirs - Forum Loisirs / Divertissements
- Pour le mariage d'olivia, jalil et sa famille veulent lui offrir un cadeau en commun. quel service en ligne peut utiliser jalil pour collecter l’argent ? - Forum Jeux vidéo
1 réponse
Ci-dessous le code des fichiers "ListerBean.java" et "VenteBean.java"
********************ListerBean.java*********************
********************VenteBean.java*********************
********************ListerBean.java*********************
/* * Created on 28 juin 2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package serviceCommercial; import java.sql.ResultSet; import java.util.Collection; import java.util.HashSet; import javax.ejb.SessionBean; import odbc.ODBCConnect; /** * * <!-- begin-user-doc --> A generated session bean <!-- end-user-doc --> * <!-- lomboz.beginDefinition --> <?xml version="1.0" encoding="UTF-8"?> <lomboz:EJB xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:lomboz="http://lomboz.objectlearn.com/xml/lomboz"> <lomboz:session> <lomboz:sessionEjb> <j2ee:display-name>Lister</j2ee:display-name> <j2ee:ejb-name>Lister</j2ee:ejb-name> <j2ee:ejb-class>serviceCommercial.ListerBean</j2ee:ejb-class> <j2ee:session-type>Stateless</j2ee:session-type> <j2ee:transaction-type>Container</j2ee:transaction-type> </lomboz:sessionEjb> </lomboz:session> </lomboz:EJB> <!-- lomboz.endDefinition --> * * <!-- begin-xdoclet-definition --> * @ejb.bean name="Lister" * jndi-name="Lister" * type="Stateless" * transaction-type="Container" * *-- * This is needed for JOnAS. * If you are not using JOnAS you can safely remove the tags below. * @jonas.bean ejb-name="Lister" * jndi-name="Lister" * *-- * <!-- end-xdoclet-definition --> * @generated */ public abstract class ListerBean implements SessionBean { /** * @ejb.interface-method * view-type="remote" **/ public Collection getListe(){ Collection listeVentes = new HashSet(); odbc.ODBCConnect baseServiceComm = new ODBCConnect(); baseServiceComm.connectage("ServiceCommercial"); System.out.println("avant GS"); baseServiceComm.getStatement(); ResultSet res = baseServiceComm.ExecuteQ("SELECT * FROM VENTES"); try { System.out.println("avant while"); while (res.next()) { System.out.println("while"); VenteBean uneVente = new VenteBean(); uneVente.setNVendeur(res.getInt(1)); uneVente.setTrimestre(res.getInt(2)); uneVente.setAnnee(res.getInt(3)); uneVente.setCAHT(res.getInt(4)); listeVentes.add(uneVente); } System.out.println("après boucle"); System.out.println("taille = " + listeVentes.size()); } catch (Exception e) { System.out.println("Erreur"); } baseServiceComm.fermeture(); return listeVentes; } /** * @ejb.interface-method * view-type="remote" **/ public void getLeon(){ Collection listeVentes = new HashSet(); odbc.ODBCConnect baseServiceComm = new ODBCConnect(); baseServiceComm.connectage("ServiceCommercial"); System.out.println("avant GS"); baseServiceComm.getStatement(); ResultSet res = baseServiceComm.ExecuteQ("SELECT * FROM VENTES"); try { System.out.println("avant while"); while (res.next()) { System.out.println("while"); VenteBean uneVente = new VenteBean(); uneVente.setNVendeur(res.getInt(1)); uneVente.setTrimestre(res.getInt(2)); uneVente.setAnnee(res.getInt(3)); uneVente.setCAHT(res.getInt(4)); listeVentes.add(uneVente); } System.out.println("après boucle"); System.out.println("taille = " + listeVentes.size()); } catch (Exception e) { System.out.println("Erreur"); } baseServiceComm.fermeture(); } /** * @ejb.interface-method * view-type="remote" **/ public int getInt(){ Collection listeVentes = new HashSet(); odbc.ODBCConnect baseServiceComm = new ODBCConnect(); baseServiceComm.connectage("ServiceCommercial"); System.out.println("avant GS"); baseServiceComm.getStatement(); ResultSet res = baseServiceComm.ExecuteQ("SELECT * FROM VENTES"); try { System.out.println("avant while"); while (res.next()) { System.out.println("while"); VenteBean uneVente = new VenteBean(); uneVente.setNVendeur(res.getInt(1)); uneVente.setTrimestre(res.getInt(2)); uneVente.setAnnee(res.getInt(3)); uneVente.setCAHT(res.getInt(4)); listeVentes.add(uneVente); } System.out.println("après boucle"); System.out.println("taille = " + listeVentes.size()); } catch (Exception e) { System.out.println("Erreur"); } baseServiceComm.fermeture(); return listeVentes.size(); } /** * @ejb.interface-method * view-type="remote" **/ public VenteBean getVenteBean(){ Collection listeVentes = new HashSet(); odbc.ODBCConnect baseServiceComm = new ODBCConnect(); baseServiceComm.connectage("ServiceCommercial"); System.out.println("avant GS"); baseServiceComm.getStatement(); ResultSet res = baseServiceComm.ExecuteQ("SELECT * FROM VENTES"); try { System.out.println("avant while"); while (res.next()) { System.out.println("while"); VenteBean uneVente = new VenteBean(); uneVente.setNVendeur(res.getInt(1)); uneVente.setTrimestre(res.getInt(2)); uneVente.setAnnee(res.getInt(3)); uneVente.setCAHT(res.getInt(4)); listeVentes.add(uneVente); } System.out.println("après boucle"); System.out.println("taille = " + listeVentes.size()); } catch (Exception e) { System.out.println("Erreur"); } baseServiceComm.fermeture(); return new VenteBean(); } }
********************VenteBean.java*********************
/*
* Created on 2 juin 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package serviceCommercial;
import java.io.Serializable;
/**
* @author Administrateur
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class VenteBean implements Serializable{
private int nVendeur;
private int trimestre;
private int annee;
private int CAHT;
public VenteBean()
{
super();
}
public void setNVendeur(int _vendeur)
{
nVendeur = _vendeur;
}
public void setTrimestre(int _trimestre)
{
trimestre = _trimestre;
}
public void setAnnee(int _annee)
{
annee = _annee;
}
public void setCAHT(int _CAHT)
{
CAHT = _CAHT;
}
public int getNVendeur()
{
return nVendeur;
}
public int getTrimestre()
{
return trimestre;
}
public int getAnnee()
{
return annee;
}
public int getCAHT()
{
return CAHT;
}
}