2009-06-11 13 views
4

La spécification EJB3 indique que EJB2 et EJB3 peuvent coexister dans une seule application. Je souhaite migrer mes beans de session sans état EJB2 vers des beans session sans état EJB3.
Cette question ne concerne pas JPA du tout (qui est une feuille de travail à effectuer dans l'avenir)Comment migrer des beans session sans état ejb2 vers ejb3 au coup par coup?

Je suis en cours d'exécution sur websphere 6.1 avec le pack de fonctionnalités EJB3 installé et patché et le profil est augmenté (un exemple d'application ejb3 confirme que cela fonctionne)

Quels changements dois-je apporter à mon code, web.xml, application.xml, ejb-jar.xml et d'autres liaisons spécifiques à websphere pour convertir un ejb SINGLE de 2 à 3?

Répondre

1

Je vais avoir une fissure à répondre à ma propre question que je vais le long.
Voici comment je suis arrivé à travers elle

Les fichiers XML suivants sont utilisés pour avoir doctypes, mais doit maintenant avoir: namespaces

myApp.ear/META-INF/application.xml

<application version="5" xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd"> 

myApp.ear/web.war/WEB-INF/web.xml

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

myApp.ear/ejb.jar/META-INF/ejb-jar.xml

<ejb-jar id="ejb-jar_ID" version="3.0" 
      xmlns="http://java.sun.com/xml/ns/javaee" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"> 

Les modifications suivantes ont été apportées à web.xml

  • Les éléments taglib sont maintenant sous un élément jsp-config

  • l'élément d'affichage-nom a été retiré de éléments filtrants et des éléments de servlet

Remove myApp.ear/ejb.jar/META-INF/ibm-ejb-jar-bnd.xmi

recherches JNDI de changer toutes vos recherches JNDI ejb locales à utiliser ejblocal: [classname]

J'ai également supprimé ma ressource jdbc ref des mappages ejb-jar.xml et j'utilise une recherche globale à la place

Le problème de sécurité que je rencontrais était dû au fait que j'avais supprimé ibm-application-bnd.xmi où il lie les utilisateurs et les groupes aux rôles/

0

Vous devez placer des espaces de noms Java EE xml dans les trois fichiers xml que vous avez mentionnés pour commencer. Ensuite, je pense que vous supprimez vos fichiers de liaison WAS et utiliser une recherche jndi différente

+0

Cela semble me prendre un peu de temps, mais maintenant mes clients ejb sont refusés en raison de ne pas avoir de rôles adéquats. À partir du message d'erreur, je peux voir qu'il récupère le nom d'utilisateur correct, mais pas le mappage vers les rôles. Il utilise le FileRegistrySample fourni avec websphere dans mon environnement de développement, et la même configuration fonctionnait correctement avec l'ancienne configuration de ejb2. Ont-ils fait quelque chose de différent avec l'authentification? –