Java 如何将ejb2无状态会话bean逐段迁移到ejb3?

Java 如何将ejb2无状态会话bean逐段迁移到ejb3?,java,jakarta-ee,migration,ejb-3.0,ejb-2.x,Java,Jakarta Ee,Migration,Ejb 3.0,Ejb 2.x,EJB3规范指出EJB2和EJB3可以在单个应用程序中共存 我希望将我的EJB2无状态会话bean迁移到EJB3无状态会话bean。 这个问题与JPA完全无关(这是一项单独的工作,将在将来进行) 我在WebSphere6.1上运行,安装并修补了EJB3功能包,并对配置文件进行了扩充(一个EJB3示例应用程序确认它可以工作) 要将单个ejb从2转换为3,我需要对代码、web.xml、application.xml、ejb-jar.xml和其他特定于websphere的绑定进行哪些更改?首先需要将J

EJB3规范指出EJB2和EJB3可以在单个应用程序中共存

我希望将我的EJB2无状态会话bean迁移到EJB3无状态会话bean。
这个问题与JPA完全无关(这是一项单独的工作,将在将来进行)

我在WebSphere6.1上运行,安装并修补了EJB3功能包,并对配置文件进行了扩充(一个EJB3示例应用程序确认它可以工作)


要将单个ejb从2转换为3,我需要对代码、web.xml、application.xml、ejb-jar.xml和其他特定于websphere的绑定进行哪些更改?

首先需要将Java EE xml名称空间放在前面提到的三个xml文件中。然后,我认为您删除了WAS绑定文件,并使用了不同的jndi查找

我将在继续时尝试回答我自己的问题。
我就是这样度过的

以下xml文件过去具有doctype,但现在必须具有名称空间:

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">
 <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">
<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">

myApp.ear/web.war/web-INF/web.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">
 <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">
<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">

myApp.ear/ejb.jar/META-INF/ejb-jar.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">
 <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">
<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">

对web.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">
 <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">
<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">
  • taglib元素现在位于jsp配置元素下

  • 显示名称元素已从筛选器元素中删除 和servlet元素

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

JNDI查找 将所有本地EJBJNDI查找更改为使用ejblocal:[classname]

我还从ejb-jar.xml映射中删除了我的jdbc资源ref,并改为使用全局查找


我遇到的安全问题是因为我删除了ibm-application-bnd.xmi,它将用户和组绑定到角色/

,这似乎给了我一些帮助,但是现在我的ejb客户端由于没有足够的角色而被拒绝。从错误消息中,我可以看到它选择了正确的用户名,但没有映射到角色。它在我的开发环境中使用了websphere附带的FileRegistrySample,同样的配置在旧的ejb2设置中运行良好。他们对身份验证做了什么不同的事情吗?