you are always very fast, jaikiran :)
god bless you ; )

"jaikiran" wrote : 
  | As far as i know, it's not possible to do this at class level.
  | 
to do what at class level? to @IgnoreDependency?

"jaikiran" wrote : 
  | Can you please provide a bit more details about the issue you are running 
into? Preferably with the relevant code and the logs.
  | 
our problem is, that we do not want to use dependency injection on some 
stateless beans, because we want to lazy lookup a few ejbs just when we really 
use them. earlier we achieved that through private getters that looked up the 
ejbs by their local jndi name (@LocalBinding). but we cannot use this pattern 
anymore, because we want our .ear to be portable to WebSphereAS (WAS doesnt 
have such a thing like @LocalBinding, but requires a "ejblocal:/" prefix for 
local business interfaces).
thats why we put class level @EJBs annotation on that stateless beans and use 
getters that lookup the ejbs by the logical name declared in @EJB.
we thought this way we may avoid injection of ejbs that mostly never will get 
used. but when we now deploy our .ear on JBoss, JBoss complains about circular 
references (as we would use dependency injection).

please have a look at the simplified code below.

here is one statless bean that declares dependency on class level. it dont use 
injection, but lazy lookup the referenced ejb through getter-method.
@Stateless(name = "StatlessOne")
  | @Local(value = StatlessOne.class)
  | @EJBs(value = { //
  |     @EJB(name = "StatlessTwo", beanName = "StatlessTwo", beanInterface = 
StatlessTwo.class)
  | })
  | public class StatlessOneBean implements StatlessOne {
  |   @Resource
  |   private SessionContext sessionContext;
  | 
  |   // lookup "on-demand"
  |   public StatlessTwo getStatlessTwo() {
  |     return (StatlessTwo) sessionContext.lookup("java:comp/env/" + 
"StatlessTwo";
  |   }
  | 
  |   ...
  |   
  | }
here is the corresponding ejb. the first ejb gets injected, beause the second 
one will always use the first ejb.
@Stateless(name = "StatlessTwo")
  | @Local(value = StatlessTwo.class)
  | public class StatlessTwoBean implements StatlessTwo {
  |   @Resource
  |   private SessionContext sessionContext;
  | 
  |   @EJB(beanName = "StatlessOne") // lookup "always"
  |   private StatlessOne statlessOne;
  | 
  |   public boolean hasStatlessOne() {
  |     return (statlessOne != null);
  |   }
  | 
  |   ...
  |   
  | }
and thats the errors, JBoss loggs when we deploy our .ear:
2009-06-29 13:23:15,054 INFO  [org.jboss.ejb3.EJB3Deployer] Starting java:comp 
multiplexer
  | ...
  | // all ejbs got deployed without errors:
  | INFO  [org.jboss.ejb3.EJB3Deployer] Deployed: 
file:/...MyServer.ear-contents/StatelessOne.jar
  | INFO  [org.jboss.ejb3.EJB3Deployer] Deployed: 
file:/...MyServer.ear-contents/StatelessTwo.jar
  | ...
  | INFO  [org.jboss.deployment.EARDeployer] Started J2EE application: 
file:/...MyServer.ear
  | // AFTER deployment these erros are shown:
  | ERROR [org.jboss.deployment.scanner.URLDeploymentScanner] Incomplete 
Deployment listing:
  | 
  | --- MBeans waiting for other MBeans ---
  | ObjectName: 
jboss.j2ee:ear=MyServer.ear,jar=StatelessTwo.jar,name=StatelessTwo,service=EJB3
  |   State: NOTYETINSTALLED
  |   I Depend On:
  |     
jboss.j2ee:ear=AfpsServer.ear,jar=StatelessOne.jar,name=StatelessOne,service=EJB3
  | 
  | ObjectName: 
jboss.j2ee:ear=MyServer.ear,jar=StatelessOne.jar,name=StatelessOne,service=EJB3
  |   State: NOTYETINSTALLED
  |   I Depend On:
  |     
jboss.j2ee:ear=MyServer.ear,jar=StatelessTwo.jar,name=StatelessTwo,service=EJB3
  | 
  | ...
  | 
  | INFO  [org.jboss.system.server.Server] JBoss (MX MicroKernel) [4.2.2.GA 
[...] Started [...]

maybe i missunterstood the @EJB annotation at all?
i thought, that * @EJB on class level just declares a dependency and the 
application server puts the corresponding ejb into the local jndi context, 
while * @EJB on field level injects an instance of the corresponding ejb into 
the fieldam i wrong?


regards robert



ps:
its complicated for me to explain all these things in english.
so i hope you will forgive me if i confuse you O: )


View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4240786#4240786

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4240786
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to