Já postei um tópico sobre a utilização de um único EJB para a aplicação toda.
Pensei e tive uma ideia e gostaria de ver a opinião de voces.
Não testei e o código tem vários erros, mas é apenas para exemplificar a ideia.
Gostaria de saber quais os problemas que posso ter.
Performance, se eu utilizo a transação do container, etc.
ex:
class GenericEJB implements SessionBean
{
public Object callMethod(String className, String methodName, Object object)
{
Class targetClass = Class.forName(className);
Object target = targetClass.newInstance();
return targetClass.getMethod(methodName,new Class[] { object.getClass }).invoke(target,new Object[] { object });
}
}
class Delegate
{
protected Object callMethod(String className, String methodName, Object object)
{
GenericEJB ejb = ... pega o ejb todo mundo sabe como;
ejb.callMethod(className, methodName, object);
}
}
class FuncionarioDelegate extends Delegate
{
public Funcionario consultarFuncionario(FuncionarioDTO funcionarioDTO)
{
return (Funcionario) callMethod("FuncionarioService", "consultarFuncionario", funcionarioDTO);
}
}
class FuncionarioService
{
public Funcionario consultarFuncionario(FuncionarioDTO funcionarioDTO)
{
// consulta o funcionario
}
}
class Cliente
{
public void chama()
{
FuncionarioDTO fd = new FuncionarioDTO ();
fd.setCodigo(1);
fd.setNome("Maria");
FuncionarioDelegate f = new FuncionarioDelegate();
Funcionario func = f.consultarFuncionario(f);
}
}
Como podem ver é um negócio louco, mas que pode ter fundamento…

Se houvesse uma resposta definitiva para tudo, nossa profissão seria moleza e nós não teríamos salários de milhões que temos! 

