Caramba. Que aula. :) Bom, quanto as conexoes, ja foi resolvido. Quando peguei o projeto, ele ja estava um tanto quanto desenvolvido. Pra variar, as pessoas que haviam iniciado o projeto sairam da empresa e eu tive que continuar tocando tudo sozinho. O pior de tudo, conhecia e conheco muito pouco de java. Ja fiz um curso (ha uns 4 anos atraz) e nunca havia utilizado. Tive que aprender tudo na marra (o que ao meu ver e a melhor forma). Entao, voltando ao assunto das conexoes, depois de apanhar por mais ou menos 3 meses vasculhando o codigo e fazendo testes de performance com as ferramentas da Compuware (que são excelentes), descobrimos que o problema estava na persistencia. O pessoal que desenvolveu o sistema inicialmente achou uma implementacao de persistencia na internet parecida com EJB. Ele faz o mapeamento das classes e seus metodos no banco. Cada classe e metodo e mapeado para uma tabela. Bom, esse bacalhau todo que eles fizeram tava dando pau para car$#%(*#*. Se a gente colocava 5 usuarios simultanes (realmente simultaneos), o sistema se perdia. Dava problema de concorrencia, um iniciava uma operacao, o outro iniciava junto e quando esse acabava, o java nao conseguia acabar o outro. Bom, resolvi retirar a persistencia e criar outra. Fiz no "old fashion way". Criei uma classe persistente para cada classe de negocio que precisa ser persistente no meu sistema. Essa classe persistente tem todos os DMLs que necessito, escritos na mao, na forma mais otimizada possivel. Pode ser antiquado, mas funciona. Por esse e outros motivos, estaremos migrando para EJB.
Bom, acho que isso resume a estoria desse sistema. Tenho muito que fazer agora (uma lista de 12 links para ler). Mais uma vez obrigado pela ajuda, Glauco Cesar de Castro -----Mensagem original----- De: Dr. Spock [mailto:[EMAIL PROTECTED]] Enviada em: Tuesday, January 21, 2003 16:57 Para: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Assunto: Re: RES: [enterprise-list] Otimizacao do JBoss Olá Glauco, Fico contente que eu tenha ajudado. Fico, também, um pouco espantado com o que aconteceu com o uso do Tomcat. Suportar apenas 3 usuários era uma coisa que não deveria acontecer. Tenho vários casos de desenvolvimento com o ambiente de produção baseado no Tomcat, onde um limite de usuários desta ordem de grandeza não acontece. Porém, pode existir algo implementado nos componentes que força este limite. Acho mais provável a limitação estar na programação dos componentes JSP ou Servlets do que no 'Web Container'. A idéia básica do Tomcat é, além de ser uma implmentação de referência das API's Servlets e JSP, prover uma implementação do conceito de 'Web Container'. Neste conceito uma das características fundamentais é permitir o acesso concorrente aos componentes que são executados dentro deste 'container'. Contudo, a configuração 'default' do Tomcat traz um componente de Web Server que muitos chamam de 'Lightweight Web Server'. Este componente representa uma implementação simples e 'light' de um servidor http, mais para o propósito de desenvolvimento do que para produção. Para o ambiente de produção, o projeto Jakarta [1] (um dos projetos do grupo Apache [2]) recomenda o uso de um 'Apache Web Server' (ou qualquer outro Web Server) no lugar da implementação 'lightweight'. Assim, o 'Apache Web Server', uma sugestão óbvia do grupo Apache/Jakarta, se dedicaria em atender às requisições HTTP e prover as páginas e arquivos estáticos (que por sinal faz muito bem!), e quando estas requisições forem para componentes Web, este redirecionaria as requisições para o 'Web Container'. Daí o 'Web Container' deveria se dedicar em manter e executar os componentes Web (JSP/Servlets). Este mesmo cenário poderia prover o serviço de 'Load Balancing' e 'Fail-Over', onde poderiamos ter vários 'Web Servers' (Apache Web Server) atendendo às requisições HTTP e vários 'Web Containers' executando os componentes Web. Através deste cenário poderíamos obter performace melhores e daí atender cada vez mais usuários concorrentes. Quanto às diferenças de acesso ao disco entre o Tomcat e o JBoss, suponho que a resposta esteja no fulano chamado 'Classloader' ([3] e [4]). Este indivíduo sempre causa confusão nas nossas cabeças quando estamos desenvolvendo ou implantando uma aplicação J2EE. As regras definidas nas especificações Servlet e J2EE para o 'Classloader' afeta deste uma simples aplicação Web (JSP/Servlets) até o escopo de acesso aos objetos nos componentes EJB [5]. Até empacotar as aplicações em arquivos .jar, .war, .rar e .ear muda consideravelmente com o 'Classloader' e quando desejamos ter acesso à outros arquivos, classes ou recuros contidos nestas aplicações e no servidor de aplicações [6], também. Por isso, entender como funciona o 'Classloader' no JRE ([7], [8] e [9]) e na arquitetura J2EE é fundamental e nos ajudará a evitar muita dor de cabeça. Mas, o que o 'Classloader' tem a ver com o acesso à uma arquivo no disco? Tudo! Numa aplicação Web ou baseada em componentes EJB, que são executados num servidor de aplicações e num ambiente distribuído, recursos não 'serializáveis' podem ser usados mas não são recomendados. Dá trabalho ficar abrindo e fechando conexões com arquivos. Neste caso, não deveríamos, por exemplo, buscar um arquivo através da API de I/O (java.oi ou java.nio). Para acessar qualquer recurso devemos usar o 'Classloader' que, além de poder carregar classes [10], é capaz de localizar e carregar qualquer recurso que esteja no 'file System', num arquivo .jar, na rede via http, soap ou outros protocolos ou elementos distribuídos. As regras de 'Classloader' no 'EJB Container' se destacam mais e são mais rígidas do que no 'Web Container'. Por isso, pode parecer diferente entre o Tomcat e o JBoss, entre o 'Web Container' e o 'EJB Container'. Mas, o procedimento deveria ser o mesmo, já que a especificação J2EE é a mesma e é aplicada aos dois tipos de 'Containers' ([11] e [12]) . Porém, existe uma pequena diferença entre o esquema de 'Classloader' na especificação 'Servlet' e o esquema geral da especificação 'J2EE' ([10] e [12]). No esquema 'Servlet' a hierarquia de 'Classloaders' primeiro procura as classes/arquivos no pacote da aplicação Web (WEB-INF/lib/**.jar e WEB-INF/classes) e depois delega a localização do recurso desejado para o 'Classloader' pai na hierarquia. Já no esquema J2EE, este obedece fielmente a especificação da Virtual Machine [10]. Ou seja, um 'Classloader', na hierarquia de 'Classloaders' primeiro sempre delega a localização para o seu 'Classloader' pai e somente quando este responde que não achou é que tenta-se localizar no próprio escopo. E se no escopo local não achar, o 'Classloader' responde para o seu 'Classloader' filho que não achou, se o escopo local não for o último da hierarquia. Portanto, no J2EE primeiro delega-se para o 'Classloader' pai, se este achar está resolvido, se não tenta achar localmente. Parece confuso, mas é necessário entender o esquema de 'Classloader' do Java para saber como ter acesso aos recursos no disco e como empacotar devidamente as aplicações Web ou EJB. Segue no final deste e-mail uma lista de referências que pode ajudá-lo a esclarecer melhor toda esta confusão que armei ... Vale a pena desenbaraçar ... Enjoy ... []´s Spock --------------------------------------------------------------------- [1]. The Jakarta Apache Project http://jakarta.apache.org/ [2]. The Apache Software Foundation http://www.apache.org/ [3]. java.lang.ClassLoader http://java.sun.com/j2se/1.3/docs/api/java/lang/ClassLoader.html [4]. The Basic of Java Class Loaders http://www.javaworld.com/javaworld/jw-10-1996/jw-10-indepth_p.html [5]. Advanced Classloaging in J2EE http://www2.theserverside.com/resources/articles/AdvancedClassLoading/ar ticle.html [6]. EJB 2 and J2EE Packaging Part 1: http://www.onjava.com/pub/a/onjava/2001/06/26/ejb.html Part 2: http://www.oreillynet.com/pub/a/onjava/2001/07/25/ejb.html [7]. The Java Extension Mechanism http://java.sun.com/j2se/1.3/docs/guide/extensions/index.html [8]. Extension Mechanism Architecture http://java.sun.com/j2se/1.3/docs/guide/extensions/spec.html [9]. The Extension Mechanism Tutorial http://java.sun.com/docs/books/tutorial/ext/ [10]. The Java Virtual Machine Specification. Topic 5.3 Creation and Loading. http://java.sun.com/docs/books/vmspec/2nd-edition/html/ConstantPool.doc. html#72007 [11] Tomcat Class Loader How-To http://jakarta.apache.org/tomcat/tomcat-4.1-doc/class-loader-howto.html [12]. JBoss 3.0 Administration and Development Documentation http://www.jboss.org/docs/ --------------------------------------------------------------------- Glauco Cesar de Castro wrote: > > Ola Spock. > > Primeiramente, obrigado pelas dicas. Vou ver o que posso fazer. > > Mas so respondendo a sua pergunta. > Iniciamos o desenvolvimento com Tomcat. Isso a mais ou menos 3 anos. Ano > passado, quando colocamos o sistema em testes de performance, tivemos um > pequeno probleminha. Nao conseguiamos conectar mais que 3 usuarios > simultaneos (inclusive, na epoca, mandei alguns emails para a lista > pedindo socorro, o que resolveu algumas coisas). Achamos que poderia ser > o tomcat que nao estava dando conta do recado, pois havia lido que ele > nao e um servidor Web, e sim um "interpretador" JSP e que deveria > procurar um servidor Web (Apache por exemplo) e colocar o tomcat rodando > debaixo do mesmo. Como solucao, resolvemos utilizar o Jboss porque, alem > de parecer ser mais parrudo, iremos comecar a migrar o nosso sistema > para EJB. > Alem disso tudo, me corrija se estiver errado, existem algumas > peculiaridades quanto a programacao para o Jboss (JSP), principalmente > na parte de acesso a disco a partir do container Web. Entao, depois que > migramos para o Jboss, ficou complicado migrar de volta para o Tomcat. > > Bom, em resumo e isso. Essa e a razao pela qual utilizamos o Jboss, e > nao apenas o tomcat, que sei resolveria meu problema. > > Um abraco, > Glauco Cesar de Castro > > -----Mensagem original----- > De: Dr. Spock [mailto:[EMAIL PROTECTED]] > Enviada em: Monday, January 20, 2003 19:41 > Para: [EMAIL PROTECTED] > Assunto: Re: [enterprise-list] Otimizacao do JBoss > > > Caro Glauco, > > Se vc está utilizado somente JSP e algumas classes java, pq não só > usar o Tomcat? Pq vc precisa do JBoss? > > Se vc não estiver usando os recursos do JBoss e muito menos o 'EJB > Container', acredito que vc não precise do JBoss. Basta uma distribuição > > simples do Tomcat que vc pode obter em: > > http://jakarta.apache.org/site/binindex.cgi > > Fique atento para o fato de que existe uma distribuição do JBoss já > integrado com o Tomcat. É possível que vc esteja usando essa > distribuição. Então, se vc utiliza apenas o 'Web Container', não existe > nenhum ganho significativo em usar o JBoss. Pq, no final das contas vc > está apenas usando o Tomcat, mesmo no JBoss. Exceto, se vc estiver > usando algum serviço especifico do JBoss que vc não encontraria somente > no Tomcat. O mesmo acontece quando vc usa o JBoss integrado com o Jetty. > > Então, pq não usar somente o Tomcat? Rubustez? Como disse, se vc não > estiver usado algo que vc só encontra no JBoss, o JBoss, por sí só, não > está agregando valor. > > Mas, se realmente vc precisa do JBoss, vc poderá customizá-lo > alterando ou removendo os arquivos de configurações dos serviços > (services). Estes arquivos normalmente encontram-se em: > > $JBOSS_HOME/server/default/deploy/ > > Procure pelos arquivos '*-service.xml'. Estes arquivos são usados > pelo 'hot deploy' do JBoss para iniciar os serviços indicados nestes > arquivos. Modificando-os ou removendo-os vc irá alterar a configuração > dos serviços ativados no JBoss. Portanto, se vc desativar os serviços > que são desnecessários no seu ambiente, vc poderá economizar memória. > > Outros arquivos de configurações podem ser encontrados em: > > $JBOSS_HOME/server/default/conf/ > > Cuidado para não desativar algum serviço essencial do servidor de > aplicações. > > Enjoy ... []´s > > Spock > > Glauco Cesar de Castro wrote: > >>Ola para todos. >> >>Desenvolvi um sistema que, por enquanto, ainda nao esta usando EJB. >>Estou utilizando o Jboss (win2000 server) por ser free e por ser mais >>parrudo que o tomcat sozinho (que pro meu caso ja resolveria, pois >>estou utilizando JSP e classes JAVA). Bom, o problema eh que o servico > > >>do Jboss esta consumindo 82 mega de memoria RAM no servidor. Minha >>pergunta é, como posso otimizar isso? Nao acho que seria necessario >>tudo isso de memoria apenas para interpretacao de paginas JSP e >>utilizacao de algumas classes JAVA. >> >>Obrigado pela ajuda >> >>Glauco Cesar de Castro >> --------------------------------------------------------------------- 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]