Circular Dependency - Local EJB Lookups

Hi all,

In My Enterprise Application I have two EJBs with Local Interafaces.Both the beans are packaged within same EAR.

For some functional reason both the beans are dependent on each other i.e. circular dependency.

While deployment It shows me following error:

Error loading deployment descriptors for dsaaldon -- Cannot resolve reference Unresolved Ejb-Ref ejb/CBOControllerLocalHome@jndi: @com.bt.nhs.spine.dsa.controller.CBOControllerLocalHome@com.bt.nhs.spine.dsa.controller.CBOControllerLocal@Session@null

at com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:325)

at com.sun.enterprise.deployment.backend.AppDeployer.deploy(AppDeployer.java:164)

at com.sun.enterprise.deployment.backend.AppDeployer.doRequestFinish(AppDeployer.java:107)

at com.sun.enterprise.deployment.phasing.J2EECPhase.runPhase(J2EECPhase.java:146)

at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:71)

at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:633)

at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:188)

at com.sun.enterprise.deployment.phasing.PEDeploymentService.deploy(PEDeploymentService.java:520)

at com.sun.enterprise.management.deploy.DeployThread.deploy(DeployThread.java:143)

at com.sun.enterprise.management.deploy.DeployThread.run(DeployThread.java:172)

Caused by: java.lang.RuntimeException: Cannot resolve reference Unresolved Ejb-Ref ejb/CBOControllerLocalHome@jndi: @com.bt.nhs.spine.dsa.controller.CBOControllerLocalHome@com.bt.nhs.spine.dsa.controller.CBOControllerLocal@Session@null

at com.sun.enterprise.deployment.util.EjbBundleValidator.accept(EjbBundleValidator.java:89)

at com.sun.enterprise.deployment.EjbDescriptor.visit(EjbDescriptor.java:1553)

at com.sun.enterprise.deployment.EjbBundleDescriptor.visit(EjbBundleDescriptor.java:572)

at com.sun.enterprise.deployment.Application.visit(Application.java:1333)

at com.sun.enterprise.deployment.archivist.ApplicationArchivist.validate(ApplicationArchivist.java:406)

at com.sun.enterprise.deployment.backend.Deployer.loadDescriptors(Deployer.java:307)

ejb-jar is as follows :

- <session>

<display-name>CBOControllerLocalHome</display-name>

<ejb-name>CBOControllerLocalHome</ejb-name>

<local-home>com.bt.nhs.spine.dsa.controller.CBOControllerLocalHome</local-home>

<local>com.bt.nhs.spine.dsa.controller.CBOControllerLocal</local>

<ejb-class>com.bt.nhs.spine.dsa.controller.CBOControllerEJB</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

- <ejb-local-ref>

<ejb-ref-name>ejb/JobControllerLocalHome</ejb-ref-name>

<ejb-ref-type>Session</ejb-ref-type>

<local-home>com.bt.nhs.spine.dsa.controller.JobControllerLocalHome</local-home>

<local>com.bt.nhs.spine.dsa.controller.JobControllerLocal</local>

</ejb-local-ref>

- <resource-ref>

<res-ref-name>jdbc/DSADS</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

</session>

- <session>

<display-name>JobControllerLocalHome</display-name>

<ejb-name>JobControllerLocalHome</ejb-name>

<local-home>com.bt.nhs.spine.dsa.controller.JobControllerLocalHome</local-home>

<local>com.bt.nhs.spine.dsa.controller.JobControllerLocal</local>

<ejb-class>com.bt.nhs.spine.dsa.controller.JobControllerEJB</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

- <ejb-local-ref>

<ejb-ref-name>ejb/CBOControllerLocalHome</ejb-ref-name>

<ejb-ref-type>Session</ejb-ref-type>

<local-home>com.bt.nhs.spine.dsa.controller.CBOControllerLocalHome</local-home>

<local>com.bt.nhs.spine.dsa.controller.CBOControllerLocal</local>

</ejb-local-ref>

- <resource-ref>

<res-ref-name>jdbc/DSADS</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

</session>

[4730 byte] By [SandyShah-Indiaa] at [2007-11-27 9:44:59]
# 1
Try adding an <ejb-link> attribute to each ejb-local-ref. <ejb-link> should contain the ejb-name of theEJB to which the ejb-local-ref is mapped.
ksaksa at 2007-7-12 23:52:49 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...
# 2
thanx man..It works fine
SandyShah-Indiaa at 2007-7-12 23:52:49 > top of Java-index,Enterprise & Remote Computing,Enterprise Technologies...