3
respostas

Internacionalização de mensagens no EJB

Galera, tenho uma dúvida com respeito às mensagens de erro ou sucesso do EJB. Pensando no EJB como um módulo separado, como seria feito pra internacionalizar mensagens? Por exemplo: alguma regra de negócio que não está sendo atendida. Visto que o ejb pode ser acessado tanto pela parte web quando por webservices.

3 respostas

Oi Humberto, em tese seu ejb não teria isso.. Ele executa regras de negócio e retorna informações relativas a essa regra.. Mensagens são coisas relacionadas com o usuário, deixe para a camada web o lance da mensagem(jsf, spring mvc ou qualquer coisa que esteja usando). O ejb em si não tem nenhum mecanismo de internacionalização.

Obrigado Alberto, mas fiquei com uma dúvida... Como o ejb responderia para outras camadas algum erro de validação? Só pra vc entender um pouco mais, tenho uma aplicação(legado) que faz várias validações no ejb, como por exemplo, cnpj vazio ou inválido. Quando ocorre esse erro, é retornado uma mensagem (em português) para a camada que chamou saber qual requisito está faltando. Tanto faz quem esteja chamando(camada web ou webservice) . Meu problema é que uma aplicação internacionalizada vai consumir meus webservices. Queria uma melhor solução sem impactar no legado que já existe em campo.

Humberto, seu problema nesse caso é de acoplamento. Na verdade o EJB esta realizando uma função que não é dele. O correto mesmo seria o EJB levantar uma exceção (preferencialmente de negocio, definida pelo seu sistema) e a camada de visualização como o Alberto citou se encarregaria de expor a mensagem, porem neste caso especifico, como o EJB expõe a interface direta do WS e você quer mexer o minimo possível no legado, eu tentaria criar um Interceptor/Filter que capturasse informa o language do cabeçalho HTTP e usaria programaticamente para setar a mensagem especifica.

Espero que tenha ajudado.

Até mais