Fabrica de bean com cdi

2 respostas
D

Eu gostaria que se a minha aplicação tivesse rodando no Windows retornasse a instancia do Windows, e se tivesse rodando no Linux a instancia do Linux.
Alguém tem idéia de por que da esse erro: "Multiple beans are eligible for injection to the injection point". Na hora da injecao da dependencia?
É possivel fazer o que eu estou querendo?

Abaixo meu código fonte.

HostService.java
@Stateless
public class HostService {

  @Inject
  private HostCommand command;
}
HostCommand.java
public interface HostCommand {
  void execute();
}
WindowsCommand.java
public class WindowsCommand implements HostCommand {
  public void execute() {}
}
LinuxCommand.java
public class LinuxCommand implements HostCommand {
  public void execute() {}
}
CommandFactory.java
public class CommandFactory {

  @Produces
  public HostCommand createCommand() {
    if (isWindows()) { return new WindowsCommand(); }
    else { return new LinuxCommand(); }
  }
}

Obrigado ;)

2 Respostas

ViniGodoy

Tópico movido para o fórum de Java Enterprise Edition. Como foi que você pensou que esse tema seria Java Básico?

mister_m

Anote suas duas implementações como @Alternative. O CDI está considerando que ambas estão disponíveis para injeção, além do @Produces.

Criado 29 de janeiro de 2012
Ultima resposta 30 de jan. de 2012
Respostas 2
Participantes 3