CDI -- @Inject not working among dependent projects -


the basic architecture of project (jboss msc version 1.0.2.ga-redhat-2) this

(vwebproj) --- >compile dependency ---> service project (qserviceproj)    (qserviceproj) ---->compile dependency ---> proxy project(vproxyproj)   (vproxyproj) ---->compile dependency ---> manager project(vqmanagerproj) 

manager project(vqmanagerproj)

i have manger class inside manager project (vqmanagerproj) extends class jdao in turn implements interface vdao

@named("qmanager") @applicationscoped public class qmanager extends jdao {...}  jdao implements vdao 

proxy project (vproxyproj)

i have proxy class inside proxy project (vproxyproj) implements interface vproxy , has manager injected it

@named("vproxyimpl") @applicationscoped public class vproxyimpl implements vproxy {      @inject @named("qmanager")       private vdao vdao;  } 

sevice project (qserviceproj)

i have service class inside sevice project (qserviceproj) extends abstract class

@named @applicationscoped public class qservice extends abstractservice {..} 

inside abstract class have proxy injected

 public abstract class abstractservice{          @inject @named("vproxyimpl")         private static vproxy proxy;     } 

and using proxy object service class makes calls manager etc

web project (vwebproj)

now have servlet inside web project (vwebproj) in service class injected

@inject private qservice qservice; 

the problem except qservice none of other injections work i.e inside qservice proxy instance null

however if add injections directly in servlet class

@inject @named("qmanager")           private vdao vdao;  @inject @named("vproxyimpl")             private static vproxy proxy; 

they initialized if go via qservice null

i have put beans.xml in projects,

thanking in advance charlie

as far know injector can inject objects instances , fields - trying "inject" dependencies static fields.

i suggest using @singleton annotation instead - create separate instance hold current static references, , inject singletons instances instead.

@singleton class proxyservice {      @inject @named("vproxyimpl")      private vproxy proxy;       public vproxy getproxy() {          return proxy;      } }  public abstract class abstractservice{          @inject      private proxyservice proxyservice; } 

alternatively can consider making vproxy singleton - seems want obtain 1 instance of proxy in whole application. need decide best approach here.


Comments

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -