Discussion:
Accès JPA2 à une ressource JPA dans glassfish
Nicolas Delsaux
2012-01-05 09:02:57 UTC
Permalink
Salut,
j'ai une application déployée sous forme d'un EAR dans laquelle, dans
un module, je déclare un PersistenceProvider utilisant JPA1 alors que
mon application utilise JPA2.
Ma question est simple : comment ça peut marcher ?
J'ai fouillé un peu dans le code des PersistenceUnitLoader, mais je
n'ai pas trouvé comment Glassfish détectait que mon
PersistenceProvider était du JPA1 et que mon code utilisateur était du
JPA2.
J'ai fait l'hypothèse qu'en fait, comme Glassfish est un sacré bon
serveur, il dispose quelque part d'une couche d'adaptation permettant
de transformer le JPA2 en JPA1, mais où ? comment ? et pourquoi ne me
dit-il pas que mon PersistenceProvider n'est pas au niveau de mon
application utilisatrice ?
Et bonne année, au fait ;-)

--
Nicolas Delsaux
Laurent Forêt
2012-01-05 09:07:16 UTC
Permalink
Je ne sais pas, mais je voulais moi aussi fêter la bonne année à la liste
;).

Donc tous mes voeux pour cette nouvelle année.

Laurent Forêt
http://www.devcoop.fr,
http://laurentforet.org
IvyBeans Creator
Membre du JUG Bordeaux
Post by Nicolas Delsaux
Salut,
j'ai une application déployée sous forme d'un EAR dans laquelle, dans
un module, je déclare un PersistenceProvider utilisant JPA1 alors que
mon application utilise JPA2.
Ma question est simple : comment ça peut marcher ?
J'ai fouillé un peu dans le code des PersistenceUnitLoader, mais je
n'ai pas trouvé comment Glassfish détectait que mon
PersistenceProvider était du JPA1 et que mon code utilisateur était du
JPA2.
J'ai fait l'hypothèse qu'en fait, comme Glassfish est un sacré bon
serveur, il dispose quelque part d'une couche d'adaptation permettant
de transformer le JPA2 en JPA1, mais où ? comment ? et pourquoi ne me
dit-il pas que mon PersistenceProvider n'est pas au niveau de mon
application utilisatrice ?
Et bonne année, au fait ;-)
--
Nicolas Delsaux
Baptiste MATHUS
2012-01-05 11:41:45 UTC
Permalink
Allez, pareil. Je sais pas non plus, mais bonne année à tous ;-).
Désolé Nicolas :-)
Je ne sais pas, mais je voulais moi aussi fêter la bonne année à la liste
;).
Donc tous mes voeux pour cette nouvelle année.
Laurent Forêt
http://www.devcoop.fr,
http://laurentforet.org
IvyBeans Creator
Membre du JUG Bordeaux
Post by Nicolas Delsaux
Salut,
j'ai une application déployée sous forme d'un EAR dans laquelle, dans
un module, je déclare un PersistenceProvider utilisant JPA1 alors que
mon application utilise JPA2.
Ma question est simple : comment ça peut marcher ?
J'ai fouillé un peu dans le code des PersistenceUnitLoader, mais je
n'ai pas trouvé comment Glassfish détectait que mon
PersistenceProvider était du JPA1 et que mon code utilisateur était du
JPA2.
J'ai fait l'hypothÚse qu'en fait, comme Glassfish est un sacré bon
serveur, il dispose quelque part d'une couche d'adaptation permettant
de transformer le JPA2 en JPA1, mais où ? comment ? et pourquoi ne me
dit-il pas que mon PersistenceProvider n'est pas au niveau de mon
application utilisatrice ?
Et bonne année, au fait ;-)
--
Nicolas Delsaux
--
Baptiste <Batmat> MATHUS - http://batmat.net
Sauvez un arbre,
Mangez un castor !
jerome moliere
2012-01-05 13:39:34 UTC
Permalink
Salut à tous,
meilleurs voeux aussi...
files ton message dans tes logs GF et après on verra ..
excuses nous de ne pas faire les bouffons à essayer de faire des
soupes aux chous à base de carottes lol
J.MOLIERE - Mentor/J
auteur Eyrolles
blog: http://romjethoughts.blogspot.com
Nicolas Delsaux
2012-01-05 13:58:50 UTC
Permalink
Salut  à tous,
meilleurs voeux aussi...
files ton message dans tes logs GF et après on verra ..
J'ai pas de message dans les logs.
En fait, je stocke mes données dans une base non-SQL (neo4j) en
utilisant des outils du web sémantique (Empire-RDF, dans ce cas).
Empire-RDF dispose d'un EntityManager implémentant JPA1, et notre
application ne dispose dans ces jars que de JPA2.
On s'est rendus compte qu'il y avait un truc bizarre parce que JPA2
ajoute un certain nombre de méthodes qui n'existent pas dans JPA1. Or,
dans certains tests unitaires lancés avec Arqulian et Glassfish
Embedded, on se paye des erreurs dûes au fait que la méthode n'existe
pas :

java.lang.AbstractMethodError:
com.clarkparsia.empire.impl.EntityManagerImpl.createNamedQuery(Ljava/lang/String;Ljava/lang/Class;)Ljavax/persistence/TypedQuery;

Et effectivement, elle n'existe que dans l'interface d'EntityManager
du package javax.persistence.

Du coup, je me suis dit que Glassfish standard (et non embedded)
faisait un truc magique pour se mettre entre les deux.

En fait, c'est pas un bug dans le code, plutôt un truc qui me
srurprend parce qu'il marche.
excuses nous de ne pas faire les bouffons à essayer de faire des
soupes aux chous à base de carottes lol
Hein ???
J.MOLIERE - Mentor/J
auteur Eyrolles
blog: http://romjethoughts.blogspot.com
--
Nicolas Delsaux
Laurent Forêt
2012-01-05 14:14:39 UTC
Permalink
Tu peux faire du JPA avec neo4j ?
Post by Nicolas Delsaux
Post by jerome moliere
Salut à tous,
meilleurs voeux aussi...
files ton message dans tes logs GF et après on verra ..
J'ai pas de message dans les logs.
En fait, je stocke mes données dans une base non-SQL (neo4j) en
utilisant des outils du web sémantique (Empire-RDF, dans ce cas).
Empire-RDF dispose d'un EntityManager implémentant JPA1, et notre
application ne dispose dans ces jars que de JPA2.
On s'est rendus compte qu'il y avait un truc bizarre parce que JPA2
ajoute un certain nombre de méthodes qui n'existent pas dans JPA1. Or,
dans certains tests unitaires lancés avec Arqulian et Glassfish
Embedded, on se paye des erreurs dûes au fait que la méthode n'existe
com.clarkparsia.empire.impl.EntityManagerImpl.createNamedQuery(Ljava/lang/String;Ljava/lang/Class;)Ljavax/persistence/TypedQuery;
Et effectivement, elle n'existe que dans l'interface d'EntityManager
du package javax.persistence.
Du coup, je me suis dit que Glassfish standard (et non embedded)
faisait un truc magique pour se mettre entre les deux.
En fait, c'est pas un bug dans le code, plutôt un truc qui me
srurprend parce qu'il marche.
Post by jerome moliere
excuses nous de ne pas faire les bouffons à essayer de faire des
soupes aux chous à base de carottes lol
Hein ???
Post by jerome moliere
J.MOLIERE - Mentor/J
auteur Eyrolles
blog: http://romjethoughts.blogspot.com
--
Nicolas Delsaux
jerome moliere
2012-01-05 14:17:16 UTC
Permalink
On fait bien du chich kebab avec du beurre ? -)
C'est trop simple JPA, trop simple NoSQL faut bien rajouter du piment non?
J.MOLIERE - Mentor/J
auteur Eyrolles
blog: http://romjethoughts.blogspot.com
Laurent Forêt
2012-01-05 14:27:02 UTC
Permalink
Pour garder l'image, j'ai l'impression que ça ressemble à mettre du jambon
dans un pain à Kebab.

Ca ne fait pas un bon jambon beurre, et un chiche Kebab immangeable par la
plupart des amateurs.

Ton empire RDF ca serait le beurre ?

Laurent
Post by jerome moliere
On fait bien du chich kebab avec du beurre ? -)
C'est trop simple JPA, trop simple NoSQL faut bien rajouter du piment non?
J.MOLIERE - Mentor/J
auteur Eyrolles
blog: http://romjethoughts.blogspot.com
Nicolas Delsaux
2012-01-05 14:32:17 UTC
Permalink
Post by Laurent Forêt
Pour garder l'image, j'ai l'impression que ça ressemble à mettre du jambon
dans un pain à Kebab.
Mais vous êtes au taquet, les gars !
Et en bonus des blagues de qualité, vous m'aidez pas vraiment (mais
c'est pas grave, on est surtout là pour discuter).
Post by Laurent Forêt
Ton empire RDF ca serait le beurre ?
Bon, je vais devoir détailler encore plus.
Notre application est susceptible de stocker des données dans des
formats variés, fournis par le client. Pour éviter le coup de la table
à trois colonnes (objet->propriété->valeur), on a fait le choix du web
sémantique et du RDF. Donc le client stocke ses données dans des
triplets sémantiques.
Seulement, à côté de ses entités "molles", on a aussi des entités
"dures" : un user, un groupe, des choses comme ça (et d'autres plus
spécifiques).
Histoire d'éviter les ennuis, on a préféré tout stocker ans le même
panier, c'est-à-dire neo4j avec une surcouche sémantique.
Et, comme je me voyais pas réécrire un JPA pour RDF, on a choisi
d'utiliser Empire-RDF qui a priori fait ça très bien.
En fait, c'est pas vraiment un kebab au beurre que vous voyez là,
c'est plutôt un sandwich mixte, ou les burgers bi-goût de Quick. La
base est la même, mais on l'utilise différement à différents endroits.
Maintenant je comprend que le NoSQL puisse paraître difficile aux
professionnels de la troisième forme normale :-D
--
Nicolas Delsaux
jerome moliere
2012-01-05 14:39:09 UTC
Permalink
Bon pour être plus cool je dois dire qu'il te faut un gars qui
connaisse très bien JPA et son implémentation dans GF !!!
on peut y aller à coup de grep pour avancer sur les messages... ou
demander à Antonio qui en bon champion te dépannera vite fait ? Ou si
Alexis n'est pas à la bourre dans sa prochaine livraison du Q1 2012 de
GF il pourra te mettre en rapport avec le lead JPA de GF si tu ne veux
pas poser la question sur la mailing list des utilisateurs GF ..
my 2 cents
J.MOLIERE - Mentor/J
auteur Eyrolles
blog: http://romjethoughts.blogspot.com
Post by Nicolas Delsaux
Post by Laurent Forêt
Pour garder l'image, j'ai l'impression que ça ressemble à mettre du jambon
dans un pain à Kebab.
Mais vous êtes au taquet, les gars !
Et en bonus des blagues de qualité, vous m'aidez pas vraiment (mais
c'est pas grave, on est surtout là pour discuter).
Post by Laurent Forêt
Ton empire RDF ca serait le beurre ?
Bon, je vais devoir détailler encore plus.
Notre application est susceptible de stocker des données dans des
formats variés, fournis par le client. Pour éviter le coup de la table
à trois colonnes (objet->propriété->valeur), on a fait le choix du web
sémantique et du RDF. Donc le client stocke ses données dans des
triplets sémantiques.
Seulement, à côté de ses entités "molles", on a aussi des entités
"dures" : un user, un groupe, des choses comme ça (et d'autres plus
spécifiques).
Histoire d'éviter les ennuis, on a préféré tout stocker ans le même
panier, c'est-à-dire neo4j avec une surcouche sémantique.
Et, comme je me voyais pas réécrire un JPA pour RDF, on a choisi
d'utiliser Empire-RDF qui a priori fait ça très bien.
En fait, c'est pas vraiment un kebab au beurre que vous voyez là,
c'est plutôt un sandwich mixte, ou les burgers bi-goût de Quick. La
base est la même, mais on l'utilise différement à différents endroits.
Maintenant je comprend que le NoSQL puisse paraître difficile aux
professionnels de la troisième forme normale :-D
--
Nicolas Delsaux
Nicolas Delsaux
2012-01-05 15:18:07 UTC
Permalink
Perso Neo4j c'est le projet qui m'emballe du moment et le choix me parait
plutôt cool pour tes besoins. RDF je découvre. Mais pourquoi JPA et pas un
peu de spring Data ?
Ah, tiens, je n'y avais pas pensé.
Cela dit, notre application est "pure JavaEE" : on a des EJBs, un peu
de web-services, le tout écrit dans le monde JavaEE "standard". Donc
si on commence à glisser du Spring data, à mon avis, ça va vite vite
déraper et on va se retrouver à faire du total Spring avant d'avoir
compris.

Rho
Rho
Rho la vache
En lisant un peu la doc de Spring JPA, et grâce à ton trop mauvais
conseil, je viens de découvrir que j'avais écrit la même chose dans un
petit truc que j'ai fait pour des potes :
http://gaedo.origo.ethz.ch/blog?page=1

Du coup, pas merci :-)

Mais je vais quand même regarder plus en détail.
--
Nicolas Delsaux
Laurent Forêt
2012-01-05 15:37:24 UTC
Permalink
Post by Nicolas Delsaux
Perso Neo4j c'est le projet qui m'emballe du moment et le choix me parait
plutôt cool pour tes besoins. RDF je découvre. Mais pourquoi JPA et pas
un
peu de spring Data ?
Ah, tiens, je n'y avais pas pensé.
Cela dit, notre application est "pure JavaEE" : on a des EJBs, un peu
de web-services, le tout écrit dans le monde JavaEE "standard". Donc
si on commence à glisser du Spring data, à mon avis, ça va vite vite
déraper et on va se retrouver à faire du total Spring avant d'avoir
compris.
Oui vu les quelques râles de ta part concernant les debuggages et tests
d'EJB que j'ai pu voir traîner de ci de là, c'est ce que je me disais.
Concernant le dérapage vers spring, je confirme, quand tu commences à y
mettre un doigt, il est quasi certain que tu y tombes jusqu'au cou.
Mais je dois bien reconnaitre que les gars de chez Springframework ont
quand même fait des trucs bien sympa.
Post by Nicolas Delsaux
Rho
Rho
Rho la vache
En lisant un peu la doc de Spring JPA, et grâce à ton trop mauvais
conseil, je viens de découvrir que j'avais écrit la même chose dans un
http://gaedo.origo.ethz.ch/blog?page=1
Du coup, pas merci :-)
DSL !! Mais ça l'air quand même sympa et ça marche pour GAE ton truc et les
grands esprits se rencontres. Pour info Spring Neo4j est en 2.0 depuis peu
: http://www.springsource.org/node/3348. C'est peut être déjà mature.
Post by Nicolas Delsaux
Mais je vais quand même regarder plus en détail.
Je prends les retours.
Post by Nicolas Delsaux
--
Nicolas Delsaux
Laurent Forêt
2012-01-05 14:28:13 UTC
Permalink
Post by Nicolas Delsaux
Post by jerome moliere
Salut à tous,
meilleurs voeux aussi...
files ton message dans tes logs GF et après on verra ..
J'ai pas de message dans les logs.
En fait, je stocke mes données dans une base non-SQL (neo4j) en
utilisant des outils du web sémantique (Empire-RDF, dans ce cas).
Empire-RDF dispose d'un EntityManager implémentant JPA1, et notre
application ne dispose dans ces jars que de JPA2.
On s'est rendus compte qu'il y avait un truc bizarre parce que JPA2
ajoute un certain nombre de méthodes qui n'existent pas dans JPA1. Or,
dans certains tests unitaires lancés avec Arqulian et Glassfish
Embedded, on se paye des erreurs dûes au fait que la méthode n'existe
com.clarkparsia.empire.impl.EntityManagerImpl.createNamedQuery(Ljava/lang/String;Ljava/lang/Class;)Ljavax/persistence/TypedQuery;
Et effectivement, elle n'existe que dans l'interface d'EntityManager
du package javax.persistence.
Du coup, je me suis dit que Glassfish standard (et non embedded)
faisait un truc magique pour se mettre entre les deux.
En fait, c'est pas un bug dans le code, plutôt un truc qui me
srurprend parce qu'il marche.
Tu as juste à te dire qu'ils sont trop fort chez SUN. Euh non Oracle.
Post by Nicolas Delsaux
Post by jerome moliere
excuses nous de ne pas faire les bouffons à essayer de faire des
soupes aux chous à base de carottes lol
Hein ???
Post by jerome moliere
J.MOLIERE - Mentor/J
auteur Eyrolles
blog: http://romjethoughts.blogspot.com
--
Nicolas Delsaux
Continuer la lecture sur narkive:
Loading...