Recursos especiais neste artigo:
Conteúdo sobre boas práticas.
Este artigo apresenta alguns dos principais problemas encontrados durante a implementação de EJBs. Muitos dos problemas enfrentados com esta tecnologia podem estar relacionados com código, mas também temos diversos outros que podem estar relacionados com processos e decisões de arquitetura. Abordaremos também as suas causas e algumas formas de resolvê-los ou atenuá-los.
Em
que situação o tema é útil
Por vezes, gastamos um tempo valioso tentando solucionar
problemas com EJBs, mas que podem possuir soluções simples e de fácil adoção.
Este artigo ajudará o desenvolvedor a checar alguns pontos importantes antes de
se preocupar efetivamente com implementações funcionais do negócio, evitando desperdício
de tempo e erros nos diferentes ambientes (desenvolvimento, testes, produção,
etc.).
EJBs já possuem alguns bons anos de estrada no ecossistema Java. Entretanto, às vezes ainda nos deparamos com problemas que acabam atravancando a implementação, fazendo com que o desenvolvedor perca horas a fio tentando resolver um problema que muitas vezes nem está relacionado com a finalidade de sua implementação. Alguns destes problemas poderiam ser evitados tomando-se alguns cuidados preliminares antes de iniciar o desenvolvimento, ou até mesmo, antes de construir a arquitetura para atender determinada funcionalidade do sistema.
O intuito deste artigo é mostrar alguns dos problemas enfrentados no dia a dia relacionados à implementação de EJBs, além de algumas formas de solucioná-los. Algumas das soluções aqui apresentadas podem não refletir a melhor forma de resolver determinados problemas, haja vista que melhores soluções podem estar relacionadas com padrões arquiteturais de cada empresa e de cada negócio. De qualquer maneira, identificar a causa de um problema já será um excelente começo para determinar qual a melhor solução de acordo com as necessidades e padrões da sua empresa.
Vamos começar falando um pouco sobre arquitetura e estrutura de projetos e depois abordaremos alguns problemas de implementação. Mas antes de abordarmos o real conteúdo do artigo, será necessário fazer alguma preparação mínima para que seja possível evidenciar na prática os problemas aqui apresentados. Esta preparação é necessária para que o leitor faça um acompanhamento e análise mais detalhado do artigo.
Em primeiro lugar, vamos listar os itens que precisamos para acompanhar o artigo. Vale lembrar que dependendo da experiência do leitor, qualquer um dos itens abaixo pode ser substituído por outro de sua preferência (ou mesmo versões mais novas), mas que podem afetar os resultados ou a implementação de alguns dos testes:
· IDE Eclipse Java EE (Indigo);
· Servidor de Aplicação JBoss 5.1.0 GA.
As devidas instalações e configurações não serão abordadas neste artigo. No entanto, o leitor poderá encontrar inúmeros tutoriais a respeito na internet que abordam estes assuntos específicos.
Alguns dos problemas apresentados aqui estão relacionados com o modo conceitual de como os EJBs funcionam. Portanto, dependendo do nível de conhecimento do leitor nesta tecnologia, é muito provável que alguns dos problemas apresentados já sejam pontos de verificação e/ou preocupação no momento da implementação. Entretanto, mesmo programadores mais experientes por vezes caem em algumas armadilhas de código ou conceitos que acabam prejudicando o trabalho ou prazos de entrega, trazendo algum atraso para o projeto.
O artigo consistirá de um projeto EJB completo no Eclipse, simulando alguns problemas que serão tratados no artigo e também algumas simulações de seus possíveis efeitos. Procuraremos detalhar e, principalmente, tornar da forma mais clara possível cada problema abordado, para que o leitor obtenha o máximo de entendimento possível, logo na primeira leitura. Deste modo, vamos primeiro discorrer sobre como montar o projeto no Eclipse. Na sequência e depois de tudo funcionando, abordaremos os seguintes problemas relacionados à implementação de projetos com EJBs:
· Montando o ambiente – Entendendo a arquitetura utilizada;
· Dificuldades relacionadas com a estrutura dos projetos;
· Problemas com a publicação de arquivos (Deploy);
· Exceções na inicialização de atributos de EJBs;
· Utilização de atributos em construtores antes da Injeção de Dependência;
· Concorrência em collections;
· Utilização de atributos em EJBs Stateless;
· Overhead de chamadas em classes utilitárias;
· Ganho de performance com @Local e @Remote.
Montando o ambiente – Entendendo a arquitetura utilizada
Nosso sistema de teste para este estudo de caso está dividido em quatro projetos no Eclipse:
· artigo-base: contém classes e interfaces comuns para os demais projetos. Este projeto serve de base (como o nome sugere) para todos os projetos que precisarem efetuar algum tipo de chamada ou implementação entre si, via interfaces e classes comuns;
· artigo-ejb: contém a implementação dos nossos EJBs e será o mais utilizado para análise dos problemas de implementação e configuração apresentados no artigo;
· artigo-client: possui as classes que serão executadas para validar nossas análises dos estudos de caso e demonstrar as possíveis condições testadas. A intenção deste projeto é simular, da forma mais próxima possível, situações de chamadas de EJBs que podem ocorrer em sistemas rodando em produção;
· artigo-ear: projeto utilizado para gerar nosso Enterprise Archive que será publicado no servidor.
Estes projetos devem ser importados dentro do seu workspace no Eclipse. Na opinião de muitos profissionais, esta é uma das formas mais claras e objetivas de se estruturar este tipo de projeto. Aliás, é justamente falando sobre simplicidade na estrutura dos projetos que começaremos a analisar nossos problemas com EJBs.
Dificuldades relacionadas com a estrutura dos projetos
Frequentemente, temos a oportunidade de presenciar diversas arquiteturas para projetos de código com EJBs na empresa que trabalhamos. Além disso, na internet encontramos inúmeros grupos de discussões com informações a respeito. Cada empresa pode ter diferentes arquiteturas e organização de arquivos de acordo com o negócio, além de diferentes abordagens de gerenciamento de equipes e estratégias de forma geral. No entanto, a experiência nos mostra que a simplicidade deve ser considerada como fator preponderante ante outras premissas, ou seja, mesmo que sua empresa demande uma configuração de projeto absolutamente fora do comum, evite reinventar a roda e tente sempre manter a simplicidade e a clareza dos projetos, para facilitar futuras manutenções e ajudar no entendimento para novos integrantes do grupo de desenvolvimento (ainda mais hoje em dia com o alto turnover na área de TI). ...
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.