Instanciar um Facade fora do MB

Boa tarde galera =D… vamos ao cenário.

Meu projeto está separado da seguinte maneira

-Paginas Web
-Controller (MB)
-Facades
-Regras
-Util

Tenho uma classe no meu util que conecta a um webservice de CEP e retorna o XML dos dados.

queria fazer uma validação diretamente nesta classe para varrer uma listagem de Bairro e verificar se o bairro ja existe ou nao, e se nao existir, cadastra-lo automaticamente.

o que acontece é o seguinte. tenho o evento no MB que chama este metodo na minha classe Util. Diretamente na minha classe Util queria listar os bairros utilizando a classe de Facade. (FindAll)

mas nao consigo fazer a chamada da mesma pois está retornando sempre NULL…

já tentei utilizar a anotação @EJB na variavel facade

mas verifiquei que para ser um EJB a classe deve seguir algumas qualificações… Exemplo: ser um @ManagedBean

nao entendi muito bem o funcionamento…

aguem pode me ajudar =D

grato

Tem como mostrar com código o que quer fazer? Acho que pode ser mais fácil de se expressar.

e pra anotação @EJB funcionar sua classe tem que… ser um EJB :slight_smile:

[quote=Rodrigo Sasaki]Tem como mostrar com código o que quer fazer? Acho que pode ser mais fácil de se expressar.

e pra anotação @EJB funcionar sua classe tem que… ser um EJB :)[/quote]

Mas nas versões atuais do EJB não basta colocar a anotação pro AS reconhecer a classe como EJB?Ou precisa algo mais?

[quote]mas verifiquei que para ser um EJB a classe deve seguir algumas qualificações… Exemplo: ser um @ManagedBean [/quote]HEIN?!

Posta apenas pequenas partes do seu código, por favor.

Tá horrivelmente difícil de entender você! =D

Sim, se ele anotar a classe como EJB já funciona, mas tem que ver se realmente faz sentido essa classe ser um EJB no sistema dele.

[quote=Hebert Coelho][quote]mas verifiquei que para ser um EJB a classe deve seguir algumas qualificações… Exemplo: ser um @ManagedBean [/quote]HEIN?!
[/quote]

Hehehehe foi essa a minha reação também :smiley:

Sim, se ele anotar a classe como EJB já funciona, mas tem que ver se realmente faz sentido essa classe ser um EJB no sistema dele.[/quote]

Entendi,pelo visto não há a necessidade,o que ele quer é injetar o componente de alguma forma.

Pois é, é preciso ver oq ele quer.

Ou se realmente ele sabe o que ele quer…

vamo la entao =D

na tela terá um botão

<p:commandButton id="btnCep" style="height: 25px; width: 25px;" actionListener="#{usuarioController.retornaCEP}" update=":formEnd" icon="btn_preferencias"/>

que chamará o MB

[code]@ManagedBean
@SessionScoped
public class UsuarioController implements Serializable {
// parte omitida(…)

public void retornaCEP(ActionEvent evt) {
      // BuscaCep é uma classe que recebe o endereço e retorna o mesmo com os dados de bairro, cidade, jd, estado etc já preenchidos. =D
      endereco = new BuscaCep().retornaEnd(endereco.getCep());

}[/code]

aqui é onde estou tendo problemas.

// omitido

public class BuscaCep {
    @EJB
    private CidadeFacade cidadedao;
    @EJB  // aqui é onde estou tendo problemas
    private BairroFacade bairrodao;

   
    public Endereco retornaEnd(Endereco end) {
       String cep = end.getCep().trim().replace("-", "");
              if (cep.length() == 8) {
                  try {
                      Webservicecep wbCep = WBCep.getEndereco(cep);
                      //checa resultado de resposta do webservice
                      if (wbCep.getResultado().equals("1")) {

                      map.clear();
                      map.put("nome_bairro", wbCep.getBairro());
                      lsBairro = bairrodao.findbyCriteria(map);

                         if (lsBairro.isEmpty()) {
                         //crio o bairro no banco e já seto no endereco
                         end.setBairro(bairrodao.edit(new Bairro(wbCep.getBairro().toUpperCase())));
                         } else if (lsBairro.size() > 1) {
                         // Quando existir bairros com o mesmo nome
                         Funcoes.msg("info", "Existem" + String.valueOf(lsBairro.size()) + "com o mesmo nome!");
                         } else {
                          //pego o bairro da unica posição restante
                          end.setBairro(lsBairro.get(0));
                         }
                       }
                  } catch (JAXBException ex) {
                Logger.getLogger(UsuarioController.class.getName()).log(Level.SEVERE, null, ex);
                Funcoes.msg("fatal", "Falha na leitura de retorno do webService");
            } catch (MalformedURLException ex) {
                Logger.getLogger(UsuarioController.class.getName()).log(Level.SEVERE, null, ex);
                Funcoes.msg("fatal", "WebService fora do ar, contate o administrador");
            }
        } else {
            Funcoes.msg("info", "CEP invalido");
        }
     return end;
    }
}

maior ou menos assim tentei criar aqui agora na mao pois tive que deixar funcionando de outra maneira muito gambiarra kkk

bairrodao.findbyCriteria(map); sempre está null pois nao consigo instancia-lo

veja se intenderam. kkk

alguem ?