EJB 3.0 circular injection problem
mireksz Mar 16, 2010 4:00 PMHello,
I using jboss 5.0.0 GA (also tryied on jboss 5.1.0.GA)
I have problem with injection. I have two services:
@Local
public interface DepatureService {
void find();
}
@Stateless
public class DepatureServiceImpl implements DepatureService {
@EJB
EmployeeService employeeService;
@Override
public void find() {
}
}
@Local
public interface EmployeeService {
public void hire();
}
@Stateless
public class EmployeeServiceImpl implements EmployeeService {
@EJB
DepatureService depatureService;
@Override
public void hire() {
}
}
When I remove injection for example in EmployeeServiceImple or inDepartmentServiceImpl then works fine. But when I have this circular injection I get the following exception:
20:49:24,968 INFO [Ejb3DependenciesDeployer] Encountered deployment AbstractVFSDeploymentContext@5734641{vfszip:/D:/SPS/jboss-5.0.0.GA/server/default/deploy/testejb.jar}
20:49:24,968 INFO [Ejb3DependenciesDeployer] Encountered deployment AbstractVFSDeploymentContext@5734641{vfszip:/D:/SPS/jboss-5.0.0.GA/server/default/deploy/testejb.jar}
20:49:25,078 INFO [JBossASKernel] Created KernelDeployment for: testejb.jar
20:49:25,078 INFO [JBossASKernel] installing bean: jboss.j2ee:jar=testejb.jar,name=DepatureServiceImpl,service=EJB3
20:49:25,078 INFO [JBossASKernel] with dependencies:
20:49:25,078 INFO [JBossASKernel] and demands:
20:49:25,078 INFO [JBossASKernel] jboss.ejb:service=EJBTimerService
20:49:25,078 INFO [JBossASKernel] jndi:EmployeeServiceImpl/local-pakiet.EmployeeService
20:49:25,078 INFO [JBossASKernel] and supplies:
20:49:25,078 INFO [JBossASKernel] jndi:DepatureServiceImpl/local-pakiet.DepatureService
20:49:25,078 INFO [JBossASKernel] jndi:DepatureServiceImpl/remote
20:49:25,078 INFO [JBossASKernel] Class:pakiet.DepatureService
20:49:25,078 INFO [JBossASKernel] jndi:DepatureServiceImpl/local
20:49:25,078 INFO [JBossASKernel] Added bean(jboss.j2ee:jar=testejb.jar,name=DepatureServiceImpl,service=EJB3) to KernelDeployment of: testejb.jar
20:49:25,093 INFO [JBossASKernel] installing bean: jboss.j2ee:jar=testejb.jar,name=EmployeeServiceImpl,service=EJB3
20:49:25,093 INFO [JBossASKernel] with dependencies:
20:49:25,093 INFO [JBossASKernel] and demands:
20:49:25,093 INFO [JBossASKernel] jboss.ejb:service=EJBTimerService
20:49:25,093 INFO [JBossASKernel] jndi:DepatureServiceImpl/local-pakiet.DepatureService
20:49:25,093 INFO [JBossASKernel] and supplies:
20:49:25,093 INFO [JBossASKernel] Class:pakiet.EmployeeService
20:49:25,093 INFO [JBossASKernel] jndi:EmployeeServiceImpl/local-pakiet.EmployeeService
20:49:25,093 INFO [JBossASKernel] jndi:EmployeeServiceImpl/remote
20:49:25,093 INFO [JBossASKernel] jndi:EmployeeServiceImpl/local
20:49:25,093 INFO [JBossASKernel] Added bean(jboss.j2ee:jar=testejb.jar,name=EmployeeServiceImpl,service=EJB3) to KernelDeployment of: testejb.jar
20:49:25,156 WARN [HDScanner] Failed to process changes
org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
*** CONTEXTS MISSING DEPENDENCIES: Name -> Dependency{Required State:Actual State}
jboss.j2ee:jar=testejb.jar,name=DepatureServiceImpl,service=EJB3
-> <UNKNOWN jboss.j2ee:jar=testejb.jar,name=DepatureServiceImpl,service=EJB3>{Described:** UNRESOLVED Demands 'jndi:EmployeeServiceImpl/local-pakiet.EmployeeService' **}
jboss.j2ee:jar=testejb.jar,name=EmployeeServiceImpl,service=EJB3
-> <UNKNOWN jboss.j2ee:jar=testejb.jar,name=EmployeeServiceImpl,service=EJB3>{Described:** UNRESOLVED Demands 'jndi:DepatureServiceImpl/local-pakiet.DepatureService' **}
*** CONTEXTS IN ERROR: Name -> Error
<UNKNOWN jboss.j2ee:jar=testejb.jar,name=DepatureServiceImpl,service=EJB3> -> ** UNRESOLVED Demands 'jndi:EmployeeServiceImpl/local-pakiet.EmployeeService' **
<UNKNOWN jboss.j2ee:jar=testejb.jar,name=EmployeeServiceImpl,service=EJB3> -> ** UNRESOLVED Demands 'jndi:DepatureServiceImpl/local-pakiet.DepatureService' **
at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:863)
at org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:665)
at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:293)
at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:221)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
How to resolve this problem
Best regards