Zanata,

        J� usei bastante o Websphere utilizando BMP 1.1 e obtive
performance bem satisfat�ria.

        Tenho o J2EESDK em casa e o Jboss...

        Voc� est� fazendo o acesso entre os EntityBeans atrav�s de
intefaces locais ou remotas? Isto poderia ser um ponto chave para a
melhoria de desempenho.
        Outra coisa: Os EntityBeans devem ser usados para entidades que
realmente se deseja manipular. Por exemplo: Para ler as op��es para um
combo (que poderia ler muitas entradas no banco de dados) voc� deve
fazer acesso direto ao objeto de acesso a dados, sem passar pelo
EntityBean - Veja java.sun.com/blueprints e cheque o pattern FastLane e
Data Access Objects para a descri��o deste modelo.

Me d� um feedback sobre este modelo. Se precisar de consultoria t�cnica
posso ajudar tamb�m.

Um abra�o,

Marcelo Alcantara
Senior Java/Web Developer
------------------------
[EMAIL PROTECTED]
+55-11-9133-5094
S�o Paulo - Brasil


-----Original Message-----
From: j2ee [mailto:[EMAIL PROTECTED]] 
Sent: quinta-feira, 18 de julho de 2002 18:23
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Subject: [enterprise-list] EJB 2.0 CMP -> Performance Lenta / Deploy /
Application Servers

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


---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para:
[EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para:
[EMAIL PROTECTED]


---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para: 
[EMAIL PROTECTED]
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]

Responder a