Antes de qualquer coisa, gostaria de agradecer a todos pelos esclarecimentos e pela participa��o na discuss�o.
Quero agradecer especialmente aos amigos: Danilo Luiz Rheinheimer <[EMAIL PROTECTED]>, Julio Cesar dos Santos Lins <[EMAIL PROTECTED]>, Sven E. van �t Veer <[EMAIL PROTECTED]>, Paulo ([EMAIL PROTECTED]), Roberto Figueiredo <[EMAIL PROTECTED]>, Sr. Apocalipse [[EMAIL PROTECTED]] (com esse eu nem discuto...), Carloshp Silva [[EMAIL PROTECTED]] e ao Alvaro Mota <[EMAIL PROTECTED]>. Tenho certeza que ainda vamos nos falar muito. :) Apenas hoje consegui ler todas as respostas e gostaria de debater algumas coisas sobre cada uma delas Pe�o que antes de ler as minhas coloca��es, lembrem dos seguintes: - Estou apenas querendo debater o assunto, pois n�o tenho certeza do que estou falando. Acredito que podemos avan�ar um pouco mais nessas id�ias e com as minhas d�vidas ajudar outros desenvolvedores. - Esse � o meu primeiro trabalho em Java e estou a 40 dias vendo como isso pode ser utilizado, ou seja, tive que quebrar v�rios paradigmas para chegar at� aqui. Eu desenvolvia em VB/Oracle/SQL Server h� 08 anos, conhe�o Java a menos de 01 ano e estou trabalhando com Java (standard e enterprise) a apenas 40 dias. Portanto n�o exijam muito de mim. OK?! :) - Tentei utilizar a pior situa��o poss�vel para ver a que ponto chegaria (EJB Server [refer�ncia] e BD Cloudscape [refer�ncia]), n�o foi a minha inten��o conseguir a melhor performance poss�vel. Queria ver qual era a pior situa��o. - Sempre soube que a aplica��o que foi desenvolvida para testes "abra�ava" v�rios problemas de Design, pois n�o tive tempo de verificar todos os patters existentes e mesmo se tivesse os visto n�o saberia em que momento utiliz�-los corretamente. Preciso de um pouco mais de horas de desenvolvimento em Java (standard/enterprise) para "absorver" algumas caracter�sticas que s� se aprendem no dia-a-dia. * Sobre a minha d�vida inicial ------------------------------ Na minha primeira mensagem falei sobre um problema que estava tendo com uma aplica��o "simples". Realmente n�o estou seguindo nenhum "design" arrojado de sistema, apenas quis ter uma pequena amostra do que se poderia fazer com o tal "EJB". Realmente, a arquitetura do mesmo n�o est� bem feita. Pra n�o dizer que est� uma "droga", me aventurei em utilizar os patterns: Service Locator, Value Objects e Fa�ade. Apenas isso. N�o tinha muito tempo pra experimentar os outros Patterns ou todas as poss�veis formas de combina��es entre eles. * Sobre o BluePrint - Petstore 1.3.1 ------------------------------------ "A Java Pet Store � uma PODEROSA aplica��o que possibilita aos desenvolvedores arquitetar solu��es padronizadas de alta qualidade, al�m de formar um reposit�rio de conhecimentos sobre os aspectos mais comuns de design e recomenda��es de 'best pratice'." [Fonte: Sun Network - nr 36 - Fevereiro/2002 - p�g 31] N�o a enxerguei apenas como uma demonstra��o, mas sim como um modelo a ser seguido e proposto pela pr�pria Sun. N�o consegui absorver toda a sua complexidade ainda, pois n�o sei o que � melhor. Mas foi o �nico "caso de uso" que vi funcionando corretamente, utilizando o CMP do EJB 2.0. Ent�o, o que um "leigo" faria se n�o tivesse ningu�m pra perguntar? Seguiria o modelo proposto, concordam? :) * Sobre os m�todos "finders" ---------------------------- Realmente n�o d� para entender o porque de sua "n�o-utiliza��o". Estamos falando de Enterprise Servers ou de servidores de aplica��o convencionais (COM+, MTS, etc) onde tudo trabalha com algo parecido com componentes "Stateless"? :] Eu havia entendido que todas as inst�ncias ficariam na mem�ria do container (ativa ou passivada) e que o container faria o "papel" do nosso bom e velho Banco de Dados. Estou apenas divagando, pois essa foi a id�ia que tive quando ouvi falar de Enterprise Server (algo muito "esbanjador" de mem�ria e processamento). Se n�o fosse para usar os m�todos "finders", pra que ent�o propuseram a sua utiliza��o? Por que um metodo do tipo findAll � ridiculo? Quando utiliz�-lo ent�o, pois existem exemplos no J2EE Tutorial que estimulam a sua utiliza��o. O Roberto Figueiredo cita que a documenta��o diz que um Entity dever� trazer no m�ximo 10 registros e isso � demaseadamente grande para performance. Onde isso est� escrito? Isso seria de grande ajuda para a continuidade dos meus estudos e para futuras explica��es. Diz tamb�m que um SessionBean dever� fazer uma conex�o direta para trazer somente as chaves prim�rias dos registros que voc� quer utilizar, e usar os EntityBean para trazer todo o resto do registro um a um pela chave prim�ria. Pois �, mas n�o � isso mesmo que um m�todo find faz? Os finders devem ser encarados como m�todos utilizados internamente pelo Container (com o EJBQL)? * Sobre a bibliografia que utilizei --------------------------------- - J2EE Tutorial (Sun) [gratuito - dispon�vel no site da http://java.sun.com/j2ee] - Mastering Enterprise Java Beans - 2a Ed. [gratuito - dispon�vel no site da http://www.theserverside.com] (leitura de t�picos referentes a BMP e CMP) - EJB Design Patterns [gratuito - dispon�vel no site da http://www.theserverside.com] (leitura superficial) - Core J2EE Patterns - As Melhores Pr�ticas e Estrat�gias de Design Deepak Alur at Al. - Ed. Campus - (leitura superficial) * Sobre as transa��es --------------------- [Sven] J2EE � um plataforma transacional, performance n�o � da primeira importancia. Pois �. Com um app server bom, vc pode setar um flag que somente os EJB acessam os dados. No J2EE RI isso n�o funciona, portanto, poderia utilizar um flag (boolean isDirty) que indica q vc alterou algo. Fora isso, usa Value Object Design Pattern e coloque 2 metodos no EJB, getData e setData. [Zanata] - Nova pergunta Uma das respostas pediu para que eu desativasse a transa��o do m�todo, mas no CMP eu tenho apenas 03 alternativas para transa��es: Required, Require New, Mandatory. No BMP sim eu tenho 05 alternativas: Suportada, Requerida, Requer Nova, Mandat�ria e N�o requerida. Isso est� correto ou acontece apenas no servidor de refer�ncia? * Banco de Dados Compartilhado entre Container X Sistemas Legados ------------------------------------------------------------------ � poss�vel compartilhar um Banco de Dados que est� sendo utilizado para persist�ncia de entidades atrav�s de um EJB Container com outras aplica��es/sistemas externos? Se for poss�vel, quais os cuidados a serem tomados? * Servidor de Aplica��es ------------------------------------------------------------------ [Sven] De acordo com o Sven, o WebLogic 7 � o melhor servidor comercial. J� t�nhamos feito um levantamento e ele est� em 1o. lugar nas pesquinas. Websphere � uma crian�a problem�tica. Apesar que n�o tem CMP EJB 2.0 precisa de um DB2 ou Informix para passiva��o de EJB etc. � /extremamente complicado a instala��o � complicado o deployment de aplica��es. Ele n�o � um produto mas uma combina��o de v�rias produtos. Prefiro ficar sem clientes do que mexer com cliente com websphere. (OK, Tomarei cuidado) J� utilizei Weblogic, Oracle, Websphere e Orion e Borland. Destes Weblogic d� o menos dor de cabe�a. [J�lio Cesar - CESAR] De acordo com o C�sar, o JBoss � um bom servidor de aplica��o, e realmente, de acordo com que verifiquei ele est� em 4o lugar nas pesquisas. Por ser um servidor n�o-comercial, acho que esta � uma boa ferramenta. Verifiquei que o �nico problema dele n�o ter o "selo" J2EE (se � assim que se fala...) � que para isso o fornecedor do servidor precisa pagar para a Sun algo em torno de US$20000. Por ser uma ferramenta n�o-comercial, quem � que vai pagar a conta?! :) Do pouco que vi, achei o servidor muito bom. Mas n�o avancei muito devido ao monte de d�vidas que apareceram e resolvi "despejar" todas elas na lista. * Sobre a migra��o de aplica��es para outros servidores de aplica��es --------------------------------------------------------------------- [Sven] Os 'grandes' podem auto gerar alguns destes XML baseado no ejb-jar.xml e seu bean. (Sobre o problema da gera��o de arquivos XML para deploy) * Sobre a minha pergunta... ---------------------------------------------------------------------------- ---------------------------------- P: 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)? R: [Sven] J� fez, 8500 transa��es a cada 5 minutos. Roda num PIII 2 cpu de 850 c 2 Giga de memoria, DB � Oracle 8.1.5 num maq igual com 4 GB de memoria. Utilizando J2EE CMP, JMS etc. Funciona perfeitamente. R: [Danilo Luiz Rheinheimer] ... fiz testes inserindo ate 90.000 registros em uma tabela e ele acessou sem problemas. Eu usei neste teste o JBoss e o Firebird como banco de dados. E claro que efetuar FindAll em tudo isso vai ficar demorado. Se vc tem uma situacao como essa e muito provavel que o seu design esteja incorreto. ============================================================================ ========= Por enquanto, s� tenho que agradecer a todos pela participa��o. Quanto ao pedido de consultoria, estarei encaminhando as respostas que recebi para a minha ger�ncia e espero que eles tomem alguma atitude para entrar em contato. Espero que continuemos com a discuss�o. Forte abra�os a todos. Zanata --------------------------------------------------------------------- Para cancelar a subscri��o, envie mensagem para: [EMAIL PROTECTED] Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]
