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:
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>
Voici l'appel a DummyPrintList depuis RelacheBean en passant par la factory:
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
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 ();
    }
}
Et voici le code de mon Dummy:
DummyPrintList
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!!!!
}
}
Bon j'ai simplifier pas mal d'etapes.

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