Nel mio progetto JavaEE ho un'interfaccia simile a questa:
@Local
public interface DataAccess { ... }
E due bean stateless che lo implementano:
@Stateless
public class DataAccess_Online implements DataAccess { ... }
@Stateless
public class DataAccess_Offline implements DataAccess { ... }
E ottengo l'eccezione:
Cannot resolve reference Local ejb-ref.... because there are 2 ejbs in the application with interface ...DataAccess
Il problema è chiaro, potrebbe esserci solo una classe che implementa DataAccess. Ma sarebbe conveniente se potessi usare due. Nel client voglio lavorare solo su Interface DataAccess, quindi non devo distinguere tra online / offline nel mio codice, entrambi offrono gli stessi metodi.
Nel client ho un'iniezione di dipendenza:
@EJB
DataAccess da;
E vedo come questo è un problema con due implementazioni per DataAccess, ma cosa dovrei cambiare per farlo funzionare? Il client inizia sempre con la versione online di DataAccess, ma dopo un po 'potrebbe richiedere la versione offline, quindi la versione offline richiede solo la stessa interfaccia, se ho bisogno di un'iniezione DataAccess sarà sempre la versione online.
Come posso utilizzare due implementazioni di un'interfaccia insieme all'iniezione di dipendenza @EJB?