Pessoal,
Pe�o a aten��o de todos nesse momento e se poss�vel gostaria da indica��o
de alguma solu��o ou at� mesmo da indica��o de algum consultor que possa
sanar as seguintes d�vidas.
Estou desenvolvendo uma aplica��o simples que ser� utilizada para testes
baseada na tecnologia J2EE e estou tendo alguns problemas de performance.
A aplica��o possui apenas 04 EJBs, onde 01 deles � "Session Beans Stateful"
e 03 deles s�o "Entity Beans" utilizando o conceito de persist�ncia do EJB
2.0 (CMP). Para n�o ficar muito confuso vamos dar nome aos "bois":
- ClienteEJB (Entity)
- TipoClienteEJB (Entity)
- ClassificacaoEJB (Entity)
- FacadeEJB (Session - Stateful)
O relacionamento entre as entidades � feita atrav�s de CMR com a seguinte
configura��o de multiplicidade:
TipoClienteEJB -> ClassificacaoEJB (n:1)
ClienteEJB -> TipoClienteEJB (n:1)
O Fa�ade faz acesso a entidade ClienteEJB utilizando o m�todo
findTodosClientes() que retorna uma Collection contendo os "remotes" desssa
entidade para o Fa�ade.
O Fa�ade por sua vez percorre essa Collection acessando elemento-a-elemento
(EJBLocalObject -> ClienteEJB) e faz acesso aos "getters" dessa entidade,
encapsulando os seus dados em inst�ncias de "Value Objects" que ser�o
enviadas para o Client atrav�s de um ArrayList.
O servidor de aplica��o que estamos utilizando � o pr�prio "EJB Server" que
vem junto com o sdk1.3.1 do J2EE e o gerenciador de banco de dados utizado
� o Cloudscape. Fiz isso porque a documenta��o da Javasoft/Sun diz que se a
aplica��o for executada nesses servidores indica que a mesma est� dentro
das especifica��es e, sendo assim, poder� ser executada em qualquer
servidor de aplica��o (container EJB) que atender �s especifica��es da Sun.
At� a� tudo bem. Segui todas as recomenda��es dos livros "J2EE Tutorial",
do "Mastering EJB II" e as recomenda��es da Sun, utilizando o mesmo padr�o
de codifica��o exposto pelo Blueprint "PetStore 1.3.1".
A m�quina utilizada para testes n�o � muito "parruda", � um Pentium III com
apenas 256Mb de RAM, mas mesmo assim acho que a performance n�o deveria ser
t�o lenta.
A aplica��o funciona perfeitamente e sem problemas, a n�o ser o problema da
performance.
Com apenas algumas entidades (05 entidades para cada EJB) a coisa flui
normalmente, mas quando resolvi inserir 200 entidades para o EJB ClienteEJB
a coisa ficou "insuportavelmente" mais lenta. A lentid�o acontece quando o
Client acessa o Fa�ade e o mesmo pede para consultar todos os clientes.
Acredit�vamos que os Entities ficariam "levantados" na mem�ria ap�s o seu
primeiro acesso, mas o que verificamos � que mesmo isso acontecendo o
acesso a essas entidades � muito lenta.
Por exemplo:
Na primeira vez que fa�o a busca atrav�s do m�todo findTodosClientes(),
para cada entidade verificamos que o container faz o seguinte:
- acessa o m�todo setEntityContext()
- acessa o m�todo ejbActivate()
- acessa os m�todos ejbLoad() e ejbStore() sequencialmente (uma vez
para cada "getter" que eu tenha em meu EJB)
Ou seja, se o meu EJB possui 08 "fields", o container EJB far� o acesso de
18 m�todos apenas para ler a entidade e deix�-la ativa em mem�ria.
Nas pr�ximas vezes que tento acessar o mesmo m�todo, heis o que ele faz:
- acessa os m�todos ejbLoad() e ejbStore() (uma vez para
cada "getter" que eu tenha em meu EJB)
Ou seja, � muita coisa!!!
O processo torna-se extremamente lento e dispendioso. Consome muito
processamento e mem�ria (Isso tudo no "olh�metro", n�o utilizei nenhuma
ferramenta para medi��o, apenas o Task Manager do Win2K).
O trabalho que venho fazendo visa entender a tecnologia e saber se a mesma
� ou n�o interessante para futuros projetos de desenvolvimento da empresa
em que trabalho. Meus gerentes j� est�o ficando preocupados com os
resultados apresentados e estamos come�ando a ter uma outra vis�o sobre a
tecnologia.
Portanto deixo as seguintes perguntas e acho que seria interessante a todos
da lista que conhecessem o cen�rio.
- Quando os campos CMP s�o carregados? Qual � o comportamento convencional?
- Algu�m da lista desenvolveu ou conhece algum caso de sucesso de aplica��o
que utiliza EJB 2.0 (CMP) com alguns EJB que contenham algo em torno de
10.000 ou mais entidades? Se sim, temos como v�-la funcionando? �
perform�tico? Funciona bem? Em que ambiente est� funcionando
(m�quina/software/rede)?
- Algu�m j� fez a migra��o de alguma aplica��o feita em J2EE (utilizando
CMP) para outros servidores comerciais?
* Tentei fazer para o JBoss 3.0, mas o mesmo exige a cria��o de arquivos
espec�ficos de deploy (jboss.xml) e isso demandaria tempo para o
aprendizado. Algu�m conhece alguma ferramenta que ajude a fazer isso?
Algu�m trabalha especificamente com esse servidor?
* Tentei fazer o deploy no Borland Enterprise Server e achei (IMHO)
um "lixo". O suporte fugiu todas as vezes que precisei. Desisti dessa
ferramenta, ao menos que algu�m possa me dizer que a conhece e sabe quais
os detalhes de como ela funciona.
* Temos como alvo o server da WebLogic (BEA), mas ainda n�o fiz a
tentativa por falta de tempo e por decis�o da ger�ncia. Mas temos em mente
a contrata��o da consultoria de algum profissional que possa nos apresentar
uma proposta de trabalho para:
# Instala��o do Servidor
# Treinamento r�pido
# Documenta��o b�sica de configura��o
# Apresenta��o de algum caso de sucesso contemplando o quadro
apresentado no 1o. item dessas quest�es.
* Gostar�amos de utilizar o WebSphere (IBM), mas a vers�o atual ainda n�o
contempla o CMP do EJB2.0.
- O problema de performance que estou tendo acontece apenas no "EJB
Server" do sdk1.3.1 do J2EE? Com outros servidores comerciais esse problema
estaria resolvido?
Tenho muito mais d�vidas, mas acho que se deix�-las todas aqui estarei
cansando o leitor da lista com um amontoado de palavras que n�o levar�o a
nada.
Mas ajudaria muito se:
- pud�ssemos discutir o assunto em grupo e deixar claro se a performance
das aplica��es geradas em J2EE s�o mesmo lentas;
- algum consultor pudesse entrar em contato atrav�s do meu e-mail
particular ([EMAIL PROTECTED]) e enviasse alguma proposta de
consultoria sobre o assunto;
Muito obrigado
Zanata
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------