[英]Migrate EJB 2.1 from WebSphere 6.1 to JBoss EAP 6.1
我正在嘗試從WS 6.1遷移到JBoss EAP 6.1。 我很難使EJB 2.1在JBoss 6.1中工作。
(注意:@ GatewayEjbJndiName @在編譯時被ant替換。)
這是原始的ejb-jar.xml:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar id="ejb-jar_ID" version="2.1" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
<display-name>ServerGateway</display-name>
<enterprise-beans>
<session id="Session_gateway">
<display-name>GatewayEJBSB</display-name>
<ejb-name>@GatewayEjbJndiName@</ejb-name>
<home>ca.company.qc.project.server.gateway.ejb.GatewayEJBRemoteHome</home>
<remote>ca.company.qc.project.server.gateway.ejb.GatewayEJBRemote</remote>
<ejb-class>ca.company.qc.project.server.gateway.ejb.GatewayEJBBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>@GatewayEjbJndiName@</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
這是(經過許多小時的研究)我提出的JBoss EAP 6.1(ejb-jar.xml):
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar id="ejb-jar_ID" version="2.1" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
<display-name>ServerGateway</display-name>
<enterprise-beans>
<session id="Session_gateway">
<display-name>GatewayEJBSB</display-name>
<ejb-name>@GatewayEjbJndiName@</ejb-name>
<home>ca.company.qc.project.server.gateway.ejb.GatewayEJBRemoteHome</home>
<remote>ca.company.qc.project.server.gateway.ejb.GatewayEJBRemote</remote>
<ejb-class>ca.company.qc.project.server.gateway.ejb.GatewayEJBBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-ref>
<ejb-ref-name>ejb/projectGatewayEJB</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>ca.company.qc.project.server.gateway.ejb.GatewayEJBRemoteHome</home>
<remote>ca.company.qc.project.server.gateway.ejb.GatewayEJBRemote</remote>
</ejb-ref>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>@GatewayEjbJndiName@</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
但是每次嘗試啟動JBoss服務器時,我都會遇到以下錯誤:
[org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-3) JNDI bindings for session bean named ProjectGatewayEJB in deployment unit subdeployment "GatewayEJBClientProject.jar" of deployment "Project.ear" are as follows:
java:global/Project/GatewayEJBClientProject/ProjectGatewayEJB!ca.company.qc.project.server.gateway.ejb.GatewayEJBRemote
java:app/GatewayEJBClientProject/ProjectGatewayEJB!ca.company.qc.project.server.gateway.ejb.GatewayEJBRemote
java:module/ProjectGatewayEJB!ca.company.qc.project.server.gateway.ejb.GatewayEJBRemote
java:jboss/exported/Project/GatewayEJBClientProject/ProjectGatewayEJB!ca.company.qc.project.server.gateway.ejb.GatewayEJBRemote
java:global/Project/GatewayEJBClientProject/ProjectGatewayEJB!ca.company.qc.project.server.gateway.ejb.GatewayEJBRemoteHome
java:app/GatewayEJBClientProject/ProjectGatewayEJB!ca.company.qc.project.server.gateway.ejb.GatewayEJBRemoteHome
java:module/ProjectGatewayEJB!ca.company.qc.project.server.gateway.ejb.GatewayEJBRemoteHome
java:jboss/exported/Project/GatewayEJBClientProject/ProjectGatewayEJB!ca.company.qc.project.server.gateway.ejb.GatewayEJBRemoteHome
10:54:41,858 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.subunit."Project.ear"."ProjectWebApp.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."Project.ear"."ProjectWebApp.war".INSTALL: JBAS018733: Failed to process phase INSTALL of subdeployment "ProjectWebApp.war" of deployment "Project.ear"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:127) [jboss-as-server-7.2.0.Alpha1-redhat-4.jar:7.2.0.Alpha1-redhat-4]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.4.GA.jar:1.0.4.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.4.GA.jar:1.0.4.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_40]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_40]
at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_40]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS014543: No EJB found with interface of type 'ca.company.qc.project.server.gateway.ejb.GatewayEJBRemoteHome' and name 'ServerGateway.jar#GatewayEJB' for binding java:module/env/ProjectGatewayEJBBean
at org.jboss.as.ejb3.deployment.processors.EjbInjectionSource.getResourceValue(EjbInjectionSource.java:97)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.addJndiBinding(ModuleJndiBindingProcessor.java:229)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:120)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:120) [jboss-as-server-7.2.0.Alpha1-redhat-4.jar:7.2.0.Alpha1-redhat-4]
... 5 more
EJBBean / EJBRemote / EJBRemoteBusiness / EJBRemoteHome類中的任何地方都沒有注釋。 因為EJB 2.1不支持它(據我所知)。
我使用“ standalone-full.xml”配置文件運行服務器。 我也嘗試了standalone-ha.xml,但沒有成功。
我真的不知道下一步該怎么辦。
JBoss社區論壇上有一個主題,希望它能幫助您解決問題。
檢查基於規則的自動可插拔遷移工具JBoss Windup 。 它在某種程度上涵蓋了從EJB 2.1到EJB 3的遷移。
如果發現未涵蓋的內容,則Windup團隊將很樂意在http://issues.jboss.org/WINDUPRULE上接受增強功能的請求。
對你的問題:
EJB 3可與standalone.xml
,不需要standalone-ha
(代表高可用性,即集群解決方案)。 與web
概要文件(Java EE 6規范中指定的web
概要文件)相反, full
表示完整概要文件。 請參閱Java EE 6 Web配置文件與Java EE 6完整平台 。
我建議遷移到EJB 3,因為Java EE 7已經存在了一段時間,並且大多數應用程序服務器將不再支持EJB2.x。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.