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] 
-------------------------------------------------------------------------

Responder a