2EJB || !2EJB 17/05/2006
Por: Bruno Mentges de Carvalho , trackbackUma empresa gringa prestou serviço para a empresa onde trabalho para fazer o front-end de uma grande aplicação, onde os usuários iriam fazer diversas configurações de maneira "amigável". Era mais um projeto web, e iria conectar-se ao sistemão para prover serviços de maneira rápida e simplificada.
Essa empresa terceirizada tinha desenvolvido um software que gerava código (EJBs) dinamicamente, o que proporcionaria rapidez no desenvolvimento. Então eles projetaram o sistema (será que projetaram?) para utilizar EJBs em uma arquitetura que lembra SOA (Service Oriented Architecture), porém sem o Service Locator, uma bagunça.
Hoje, acredito que 2 anos depois, estamos reestruturando a aplicação que além de ser totalmente buguenta e muito instável ainda tem mais de 250 EJBs sem necessidade. Eu não sou do tipo que odeia EJB, eles têm as suas funções, mas com certeza não é o martelo de ouro, e nem todos os problemas são pregos ! Ah, e nao tem nenhum teste automatizado ! NENHUM ! Como esse software sobreviveu ?
Apelidamos a aplicação carinhosamente de NullPointerException Hell, já que em TODAS as classes geradas automaticamente tem NPEs a vontade. Nenhum input é validado !
Ex, só pra ilustrar como estão as coisas:
public bla.bla.Output execute (bla.bla.Input input, bla.bla.Output output)
{
Collection col = input.getSomeCollection();
Iterator it = col.iterator();
while(it.hasNext())
{
Object someObject = it.next();
if (someObject.lenght() > 3)
{
…
}
…
}
}
Quantos NPEs voces podem achar aí ? É isso que dá gerar código "automaticamente" …
Começamos por tirar todos os entity beans e transformá-los em DAOs + Hibernate. E os session beans serão aos poucos trocados por, acreditem, POJOs !
Há luz no fim do túnel !