2010-08-12 27 views
0

Je migre une application Weblogic 9 vers JBoss 5.1 et rencontre le problème suivant:Comment puis-je différer l'insertion réelle de la base de données de mon bean CMP2.1 dans JBoss 5.1?

Une session ejb gère les entités CMP 2.1. Ceux-ci sont insérés au moment de l'appel à la méthode MyEntityLocalHome.create(). Étant donné que la table de base de données a des contraintes "non nulles", certains des champs, normalement définis après l'appel de la méthode create(), ne sont pas définis et l'insertion échoue.

Je sais que si le gestionnaire a appelé create (myNotNullField); méthode, en passant les paramètres corrects, le problème serait résolu. Malheureusement, le gestionnaire utilise une couche qui découvre à l'exécution laquelle * LocalHome et quelle méthode create() doit être appelée (par introspection) et la méthode create est découverte en utilisant les champs PK de l'entité. Cela signifie que la couche ne peut pas trouver les méthodes create() avec des paramètres qui ne font pas partie du PK.

Dans les documents JBoss, j'ai trouvé un paramètre (insert-after-ejb-post-create) qui me permet de différer l'insertion après la méthode ejbPostCreate (...), mais cela ne résout pas non plus mon problème , car l'appel "LocalHome.create() retourne toujours après l'insertion de la base de données

Comment puis-je retarder l'insertion réelle dans le DB à la fin de la transaction, afin que le gestionnaire puisse définir les champs" non null " ? Depuis l'application fonctionne dans Weblogic 9, je suppose que cette option existe dans WLS ... ce paramètre n'existe dans Jboss 5.1?

Merci pour votre aide :)

Répondre

0

Cela a été fait en utilisant la configuration cmp2.x jdbc2, dans standardjboss.xml, avec insert-after-ejb-postprocess réglé sur false.