Bonjour a tous,
je vais essayer d'exposer mon probleme de facon detailler, ne prenaient donc pas peur en le lisant.
Tout d'abord, j'utilise un serveur glassfish2.1 avec des EJB3, sous net bean6.5, avec une jdk 1.6.0.13 sous Vista(c'est un bordel pas possible, mais ce n'est as moi qui choisi, et je ne parle pas de la stabilite du truc!!!)
Donc voici le soucis:
VOici un extrait de mon diagramme de classe. (Attention, PrintBean s'est transforme en RelacheBean).
- RelacheBean est mon Bean Stateless.
- RelacheBean Remote est l'interface Remote
- PrintBeanFactory est une factory qui me permet d'instancier mes classes Dummy ou Default.
- IPrintList est une interface
- DummyPrintList et DefaultPrintList est une classe qui implemente IPrintList.
Le but de tout ceci, permettre a DummyPrintList ou DefaultPrintList d'utiliser l'entityManager.
Voici mon fichier de persistence:
Voici l'appel a DummyPrintList depuis RelacheBean en passant par la factory:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="LgppBusinessLayerPU" transaction-type="JTA"> <provider>oracle.toplink.essentials.PersistenceProvider</provider> <jta-data-source>jdbc/lgppDatasource</jta-data-source> <properties> <property name="toplink.ddl-generation" value="drop-and-create-tables"/> </properties> </persistence-unit> </persistence>
RelacheBean
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 @Stateless public class RelacheBean extends BaseService implements RelacheRemote { .... /* ******************************** * Construct ******************************** */ public RelacheBean() throws Exception { } @PostConstruct public void initBean(){ logger.debug("initBean[PostConstruct]"); PrintBeanFactory factory=PrintBeanFactory.getPrintFactory(); printList=factory.getPrintList(); ptList=factory.getptList(); logger.debug("initBean : Factory created"); } ..... }
PrintBeanFactory
Et voici le code de mon Dummy:
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 public abstract class PrintBeanFactory implements IPrintConstants{ private final static String env = ENV_TEST; public PrintBeanFactory() { } public final static PrintBeanFactory getPrintFactory() { if (env.equalsIgnoreCase(ENV_TEST)) return new DummyPrintBeanFactory(); else return new DefaultPrintBeanFactory(); } /** * Getter */ public IPrintList getPrintList() { return new DummyPrintList (); } }
DummyPrintList
Bon j'ai simplifier pas mal d'etapes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class DummyPrintList implements IPrintList{ public DummyPrintList() { Je souhaite faire un em.persist ICI!!!! } }
Pour faire ce persist, j'ai essayer de commencer par faire passer la reference de mon EntityManager a ma factory qui le passait lui meme au construct de mon Dummy, mais je me tapais une TransactionException.
J'ai alors essayer de recreer mon entitymanager via un lookup, nikel l'entityManager se cree, mais des que j'essaye de faire un persist d'une de mes entity, je me tape un IllegalArgumentException : Object not know Entity.
Donc voila ou j'en suis apres 2 jrs de recherches et tests intensif, je dois louper quelque chose mais je ne vois pas quoi.
Je suis donc ouvert aux hypotheses, reflexions,etc...
Merci d'avance a qui saura repondre a ma question et a ceux qui sont arrive jusque la.
Ah oui, joie du qwerty = pas d'accent. Desole
Partager