Yeap, exatamente isto, a dica ta meio atrasada, mas só me registrei para fazer a prova hoje.
Para quem já tem a certificação SCJP (Sun Certified Java Programmer), pode fazer até o próximo dia 10/12/2008 “di gratis” a prova beta da nova certificação da SUN.
Não acredito que certificação prove alguma coisa, mas sempre ajuda colocar mais uma sigla no currículo, já que as empresas gostam delas por algum motivo
Quem quiser se inscrever, basta ligar para qualquer centro prometric ou acessar a página da prometric diretamente, não é necessário um voucher paraesta prova.
O conteúdo que estão pedindo não é nada demais para quem já trabalha com web services, segue o outline:
Mais informações na página da certificação.
Depois da prova (vou fazer dia 10) eu posto o que achei das questões por aqui.
Tags: certificação, Java, Java EE
O Java EE esta cada vez mais simples de se utilizar, então por definição esta cada vez melhor.
O motivo deste post são algumas melhorias vindas da especificação do EJB 3.1 que eu achei espetaculares:
Interface local opcional
Exatamente isto, agora a interface local dos EJBs é Opcional. Isto permite que o seguinte código seja válido:
1 2 3 4 | @Stateless public class HelloBean { public String hello() { return "hello"; } } |
E o cliente utiliza isto mais ou menos assim:
1 2 3 | @EJB Hello helloRef; ... helloRef.hello(); |
Mesmo a classe sendo acessada diretamente, o cliente nunca instância o objeto com um “new”, ele recebe um proxy, exatamente como se estivesse trabalhando com uma interface, mas mesmo assim o modelo fica mais simples e é menos trabalho para o programador
Nomes globais JNDI portáveis
Não sei se fui apenas eu, mas é um inferno desenvolver aplicações Java EE que precisem acessar EJBs em mais de um container, exceto se elas puderem fazer isto via anotações o que não cobre 100% dos casos, cada container utiliza um nome global diferente para o EJB, agora no Java EE 6 o nome global dos EJBs faz parte da especificação, então vai ser igual para todos os containers ![]()
Só quero ver como eles vão fazer para manter a compatibilidade com versões anteriores dos mesmos containers, acho que os EJBs vão ter nome e apelido ![]()
A sintaxe para os nomes globais dos EJBs vai ser a seguinte:
java:global[/<app-name>]/<module-name>/<bean-name>
E caso o session bean exponha mais de uma interface, o nome vai ser:
java:global[/<app-name>]/<module-name>/<bean-name>/<intf-name>
Isto quer dizer que para o EJB abaixo:
1 2 | @Stateless public class FooBean implements FooRemote { ... } |
Publicado em um arquivo de nome foobar.jar, podemos acessa-lo com o seguinte código:
1 | FooRemote foo = (FooRemote) = new InitialContext().lookup("java:global/foobar/FooBean") |
E acabou o nome especifico para cada container, ou pior, nome para cada deployment como alguns containers faziam.
Empacotamento de EJBs Simplificado
No Java EE 6 não será mais necessário em uma aplicação criar um .war para a aplicação web, um .jar para os EJBs e empacotar tudo isto em um .ear só para acessar alguns EJBs pela aplicação WEB, vai bastar colocar os EJBs dentro do WEB-INF/classes ou até mesmo em um jar dentro do WEB-INF/lib da aplicação WEB e tudo vai funcionar como mágica
Singleton EJBs
Esta última novidade eu não sei se é boa ou ruim …
Singletons são a forma mais podre de programação não orientada a objetos em uma linguagem OO.
Claro que em raros casos um singleton é realmente utilizado como um singleton e neste caso ele é realmente útil, mas eu vi apenas uns dois ou três casos destes até hoje, todas as outras aplicações que tem diversos singletons utilizam os mesmos como um repositório de métodos que não pertencem a objeto nenhum. Ou seja, uma entidade não OO na aplicação …
Mas fora a discussão filosófica, o pior é achar que você tem um singleton e a aplicação possuir duas instâncias do mesmo, por que na implementação clássica de singletons no java, eles são singletons apenas por classloader, o que causa diversos problemas …
Para solucionar este problema, o Java EE 6 possui EJBs Singletons ![]()
Exatamente isto.
Eles são utilizados como qualquer outro EJB, mas existira apenas uma instância dele no container ou no cluster, ou seja, apenas uma instância na aplicação …
Para criar um EJB Singleton, o código vai ser mais ou menos este:
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.sun.ejb31.test; import javax.ejb.Singleton; @Singleton public class CounterBean { private int hitCount; //Perceba a utilização de synchronized aqui public synchronized int incrementAndGetHitCount() { return hitCount++; } } |
E era isto, utilize como no primeiro exemplo!
Bom, por enquanto era isto, estou achando que o Java EE 6 vai matar a pau, ainda mais juntando com a especificação de WebBeans que deve sair junto!
Segue mais uma daquelas grandes coletâneas de links que falam de tudo um pouco, tem Java, .NET, Ruby, Rails, Python, …
E este último merece um certo destaque, um post sobre a péssima postura da Aptana para com a comunidade, quando eles pegaram um monte de código que foi escrito pela comunidade, juntaram com o código do Eclipse e resolveram mudar a licensa de tudo, se alguem esquentar a cabeça com isto eles poderiam até mesmo ser processados, por que estão quebrando a licensa do eclipse e por conseqüência também do Radrail, e quem baixar os fontes hoje não pode mais criar uma distribuição diferente baseado nele.
Bom, acho que era isto, vou tentar escrever com mais frequencia para não acumular tanta coisa junto
Se você mora em SP e programa em rails, acha interessante ou quer saber do que se trata, de uma passada no blog do Akita e participe do encontro que eles estão organizando.
Mas se você mora no RS não se desanime por que nos ja estamos começando a organizar algo parecido por aqui também
Por falar nisto ja temos uma data para a segunda turma do curso de Ruby on Rails da Tech Office, além de cursos de Spring Framework, JSF e um curso de JPA + Servlets/JSP + EJB 3 ja podem se inscrever para qualquer um deles
Vou começar agradecendo ao todos os que me desejaram boa sorte no post anterior. E também lembrar que não posso escrever aqui quais questões cairam realmente na prova por causa do NDA que precisamos concordar antes do inicio de qualquer prova de certificação.
Mas vamos ao que interessa, dicas para quem ainda vai fazer a prova e comentários em geral (pelo menos eu acho que interessa
)
Acho que foi mais ou menos isto, achei a prova muito cansativa, e a maioria das questões muito extensas.
Lembrei que eu odeio aquelas questões de arrastar quadrinhos.
Falando nisto, alguem sabe para que serve o pattern Mediator? e o pattern Strategy?
Bom, boa sorte para quem ainda vai fazer a prova, espero que este post ajude em alguma coisa
Se quiserem perguntar alguma coisa é só deixar um comentário.
PS.: O resultado da prova não sai na hora por ser uma prova beta, aparece só a mensagem dizendo que você vai receber o resultado entre 6 e 8 semanas, agora vou correr atraz de descobrir como vai funcionar o esquema para a segunda parte da prova
Tags: Java EE
Estou saindo agora para fazer a prova, espero ir bem, pois estudei muito pouco, marquei a prova sexta passada e a única data disponível era hoje
Queria ter marcado a prova mais para o final do mes para ter tempo de estudar …
Mas seguem os objetivos da prova, só pro cima o que eu estudei …
Application Design Concepts and Principles
1.1 Explain the main advantages of an object oriented approach to system design including the effect of encapsulation, inheritance, delegation, and the use of interfaces, on architectural characteristics.
1.2 Describe how the principle of “separation of concerns” has been applied to the main system tiers of a Java EE application. Tiers include client (both GUI and web), web (web container), business (EJB container), integration, and resource tiers.
1.3 Describe how the principle of “separation of concerns” has been applied to the layers of a Java EE application. Layers include application, virtual platform (component APIs), application infrastructure (containers), enterprise services (operating system and virtualization), compute and storage, and the networking infrastructure layers.
Estudei muito pouco aqui, espero que a experiência profissional me ajude nesta:D
Common Architectures
2.1 Explain the advantages and disadvantages of two tier architectures when examined under the following topics: scalability, maintainability, reliability, availability, extensibility, performance, manageability, and security.
2.2 Explain the advantages and disadvantages of three tier architectures when examined under the following topics: scalability, maintainability, reliability, availability, extensibility, performance, manageability, and security
2.3 Explain the advantages and disadvantages of multi-tier architectures when examined under the following topics: scalability, maintainability, reliability, availability, extensibility, performance, manageability, and security.
2.4 Explain the benefits and drawbacks of rich clients and browser-based clients as deployed in a typical Java EE application.
2.5 Explain appropriate and inappropriate uses for Web Services in the Java EE Platform
Integration and Messaging
3.1 Explain possible approaches for communicating with an external system from a Java EE-based system given an outline description of those systems and outline the benefits and drawbacks of each approach.
3.2 Explain typical uses of Web Services and XML over HTTP as mechanisms to integrate distinct software components.
3.3 Explain how Java Connector Architecture and JMS are used to integrate distinct software components as part of an overall Java EE application.
Business Tier Technologies
4.1 Explain and contrast uses for Entity Beans, Entity Classes, Stateful and Stateless Session Beans, and Message Driven Beans and understand the advantages and disadvantages of each type.
4.2 Explain and contrast the following persistence strategies: Container Managed Persistence (CMP) BMP, JDO, JPA, ORM and using DAOs (Data Access Objects) and direct JDBC-based persistence under the following headings: ease of development, performance, scalability, extensibility and security.
4.3 Explain how Java EE supports the deployment of server-side components implemented as Web Services and the advantages and disadvantages of adopting such an approach.
4.4 Explain the benefits of the EJB3 development model over previous EJB generations for ease of development including how the EJB container simplifies EJB development.
Web Tier Technologies
5.1 State the benefits and drawbacks of adopting a web framework in designing a Java EE application
5.2 Explain standard uses for JSP and Servlet technologies in a typical Java EE application.
5.3 Explain standard uses for JSF technology in a typical Java EE application.
5.4 Given a system requirements definition, explain and justify your rationale for choosing a web-centric or EJB-centric implementation to solve the requirements. Web-centric means that you are providing a solution that does not use EJBs. EJB-centric solution will require an application server that supports EJBs.
Basicamente JSF, JSP e Servlets, ja preparei bastante material para curso, e estudei bastante
Applicability of Java EE Technology
6.1 Given a specified business problem, design a modular solution implemented using Java EE which solves that business problem.
6.2 Explain how the Java EE platform enables service oriented architecture (SOA) -based applications.
6.3 Explain how you would design a Java EE application to repeatedly measure critical non-functional requirements and outline a standard process with specific strategies to refactor that application to improve on the results of the measurements.
Isto é basicamente esperiência profissional, Trabalho com isto o tempo todo
Patterns
7.1 From a list, select the most appropriate pattern for a given scenario. Patterns are limited to those documented in the book – Alur, Crupi and Malks (2003). Core J2EE Patterns: Best Practices and Design Strategies 2nd Edition and named using the names given in that book.
7.2 From a list, select the most appropriate pattern for a given scenario. Patterns are limited to those documented in the book – Gamma, Erich; Richard Helm, Ralph Johnson, and John Vlissides (1995). Design Patterns: Elements of Reusable Object-Oriented Software and are named using the names given in that book.
7.3 Select from a list the benefits and drawbacks of a pattern drawn from the book – Gamma, Erich; Richard Helm, Ralph Johnson, and John Vlissides (1995). Design Patterns: Elements of Reusable Object-Oriented Software.
7.4 Select from a list the benefits and drawbacks of a specified Core J2EE pattern drawn from the book – Alur, Crupi and Malks (2003). Core J2EE Patterns: Best Practices and Design Strategies 2nd Edition.
Aqui estudei bastante, li a descrição de vários patterns, espero não me confundir na hora …
Security
8.1 Explain the client-side security model for the Java SE environment, including the Web Start and applet deployment modes.
8.2 Given an architectural system specification, select appropriate locations for implementation of specified security features, and select suitable technologies for implementation of those features
8.3 Identify and classify potential threats to a system and describe how a given architecture will address the threats.
8.4 Describe the commonly used declarative and programmatic methods used to secure applications built on the Java EE platform, for example use of deployment descriptors and JAAS.
O único comentário que tenho sobre isto é: JAAS é um saco!
Bom, me desejem sorte
Tags: Java EE
Este ótimo review foi escrito pelo Marcos de Sousa. Muito obrigado pela colaboração!
ZK foi o primeiro projecto ajax no SourceForge.net, acumulou 450.000 downloads e 800.000 visitantes, e foi referenciado por mais de 4.000 websites desde o lançamento da primeira versão em 2005.
Simplesmente Rico
Basicamente o ZK possui quase tudo feito de bandeja, ora vejamos a versão ZK 3.0.0-FL-2007-09-28:
Facilidade de utilização
Simplicidade é um dos valores de base do ZK. Outra das facilidades que se encontra nessa framework, é a disponibilidade com que a sua equipa de desenvolvedores está disposta a ajudar.
A criação de novos/customizados componentes é bastante simples.
A documentação é muito boa e bem detalhada.
Plataforma Independente
Mega Componentes, Colaboração da Comunidade e Integração com outras frameworks e bibliotecas Javascript
ZK é uma das framework com um mais componentes e diversificados. E em cada versão novos componentes têm vindo a serem lançados. Está em andamento o desenvolvimento de componentes de larga escala como folha de cálculo “spreadsheets” e forums. Alias, já está disponível para download o primeiro SIP de spreadsheet. Comunidade open source é tudo sobre colaboração. ZK insentiva a comunidade na criação de novos componentes e ideias. A comunidade participa activamente e é citada pela contribuição que faz.
Todo o trabalho complicado é feito pela equipe de ZK. Se quiser algum novo componente ou sugerir melhorias/integração pode submeter na lista de “Feature Requests”.
Google Maps, FCKeditor, DOJO e Timeline já estão integrados desde as versões mais antigas.
Integração com Spring, Hibernate, bem como com Seasar (http://www.seasar.org/en/index.html, é a framework open source de Dependency-Injection mais popular no Japão).
A integração com Jboss Seam, bem como com tags JSP já está pronta.
A integração com Yui-Ext (http://www.extjs.com/, uma das mais famosas bibliotecas javascript), simplesmente é uma das melhores novidades. É mesmo para ficar de boca aberta. E mais ainda, todos os componentes do Yui-Ext serão integrados com ZK.
O desenho de layouts é sempre complicado para desenvolvedores. Logo, Ext Layout de Yui-Ext foi integrado. Mas, como se sabe usando plug-in externos acabamos pagando um preço (performance), logo a equipe do ZK lançou o ZK Layout de modo a trazer simplicidade, flexibilidade e poder no desenho de layout, isso aumenta a performance pois reduziram do Ext Layout 500 KB para o ZK Layout 20KB. Até parece que pagamos os caras de ZK para trabalharem para nós .
Para os amantes de JSF (JavaServer Faces), estavam todos tristes, pois, até agora nada foi dito de JSF. Em voz alta, já está integrado ZK em forma de componentes.
Confira nas referências os links com os artigos de integração com as frameworks passo a passo.
Histórico de Lançamento de versões do ZK
Dá para perceber o quanto a equipa do ZK está trabalhando nele com bastante dedicação.
Desvantagens
A licença de ZK é bastante crtiticada. No entanto, vale a pena dizer que segue a mesma licença do famoso MySQL.
Conclusão
Muito ficou por analisar (por exemplo as desvantagens do ZK). No entanto isso pode ser considerado lendo o artigo do Cameron Smith – ZK Rich Client Framework and Agile Development em Inglês http://www.theserverside.com/tt/articles/article.tss?l=ZKandAgile. No artigo ele faz uma discussão e depois apresenta um tutorial. Faz a comparação entre as frameworks RIA: Echo2, ZK, OpenLaszlo, Flex, GWT.
Devido a variedade de componentes de fabrica já prontos para serem usados, ajax de raíz (sem esforço), integração com frameworks populares como Spring, Hibernate, JSF, etc, devido ao suporte da comunidade, devido a ser open source, etc torna o ZK uma escolha privilegiada, principalmente no desenvolvimento de aplicações web para Intranet.
Referências
Sobre Marcos de Sousa
Marcos de Sousa actua na área de desenvolvimento há mais de cinco anos. É desenvolvedor no Banco BCI Fomento (www.bcifomento.co.mz). Setembro 2007, Maputo – Moçambique.
Tags: Java, Java EE, produtividade
Bom, acho que era isto, desculpem pelo tempo sem postar, é que a semana foi corrida com o Curso de Rails, mas agora vou voltar a postar com mais frequência!
Amanha ou segunda devo escrever alguma coisa sobre o Curso, que na minha opinião foi bem legal, acho que todos os alunos aproveitaram bastante! (Hoje não vou escrever mais por que é meu aniversário de casamento e tenho que dar mais atenção para a esposa se eu quiser chegar no segundo aniversário
)
Outra coisa, vocês acham úteis estas coletâneas de links que posto de vez em quando?
Tags: Dia a Dia, dia-dia, Java, Java EE, Mobile, produtividade, Ruby
O primeiro interessado em cada um dos livros que cumprir os itens acima leva o livro, o único custo vai ser o frete (se quiser pegar pessoalmente ai não paga nem isto
)
Sugestões de assunto para os tutoriais:
Estas são só idéias, praticamente qualquer coisa atual relacionada com desenvolvimento, ou melhor ainda com desenvolvimento ágil ta valendo
PS.: espero que alguem se interesse pelos livros
gem install -y rails gem install -y glassfish rails testapp cd testapp jruby script/server
O que você conseguiu com isto?
A forma mais demorada da face da terra de rodar a sua aplicação Rails no mundo!
Claro que isto pode ter outras vantagens, como rodar os testes exatamente no mesmo ambiente que vai ser colocada em produção, mas sinceramente, alguem tem este tipo de problema com o rails? algo do tipo funcionar no WEBrik e não funcionar no Mongrel por exemplo?
Eu ainda acho muito melhor a alternativa “tradicional” que escrever tudo normalmente usando o WEBrick ou Mongrel para testar, e depois de tudo pronto criar o war com o Goldspike:
script/plugin install http://jruby-extras.rubyforge.org/svn/trunk/rails-integration/plugins/goldspike rake war:standalone:create
ou então a versão “lite” com o Warble:
gem install warbler warble rake war
Bem melhor e não me obriga a ir tomar um café toda vez que eu for rodar a aplicação para testar …
Ajude este amigo que vos escreve na competição de programação “RailsRumble”, basta se registrar e depois votar na minha aplicação (Know Your Client), lembre-se que ela foi desenvolvida em 16h (não eu não fiquei as 48h do concurso na frente do computador)
Imagine a seguinte tarefa:
Criar duas telas para um blog, a primeira lista as categorias dos posts, junto com a quantidade de posts de cada categoria, a segunda lista todos os posts de uma categoria, com paginação e por padrão ira mostrar 20 posts por página …
para isto você tem ja pronta a seguinte estrutura:
Qual é o exemplo padrão para listar os posts de uma categoria com paginação?
Código do servlet:
Categoria c = entityManager.find(Categoria.class,1);
request.setAttribute("categoria",c);
request.setAttribute("posts",c.getPosts());
request.getRequestDispatcher("/resposta.jsp").forward(request,response);
Código da tabela com paginação:
<h2>${categoria.nome}</h2>
<display:table name="posts" pagesize="10"/>
Isto vai fazer o que foi solicitado, que é mostrar de uma forma paginada, os posts da categoria de id=1 (eu fixei o ID para simplificar o exemplo)
Quais quais os prováveis problemas de performance você já identificou?
Nenhum ainda?
Este tipo de código é bastante comum de se ver por ai, por este tipo de código digo, buscar todos os registros e paginá-los depois …
Inclusive em algumas situações (semana passada), por facilidade eu fiz coisa bem parecida (claro que este é um exemplo simplista, mas não é este o ponto) …
Qual o problema então?
Imagine uma categoria com 100.000 posts …
Cada vez que a página for carregada vai acontecer o seguinte:
Ou seja, isto é um desperdício de processamento e memória, que consome tempo do usuário …
Este ciclo todo vai ocorrer novamente quando o usuário pressionar o numero da página desejada também, que vai novamente entulhar a memória de lixo que não vai ser utilizado …
Isto não é uma critica a display tag, e sim aos programadores (eu incluso, pois como comentei fiz parecido em um sistema, e passei dois dias esta semana corrigindo isto).
E como resolver?
Buscar do banco de dados apenas os registros que serão utilizados …
Claro, isto vai requerer no mínimo duas consultas, uma para trazer o conteúdo e outra para trazer a contagem total de registros …
Mas a melhora é visível na performance de acesso a esta tela …
E como implementar isto com display tag?
Tem duas opções:
utilizar os atributos da tag partialList e size (claro que fazendo isto você precisa fazer ordenação externa também se quiser algma coluna ordenavel na tabela) e utilizar o helper da display tag para descobrir qual o primeiro registro a ser mostrado:
(Integer.parseInt(request.getParameter((new ParamEncoder(tableId).encodeParameterName(TableTagParameters.PARAMETER_PAGE)))) - 1) * pageSize
ou retornar em vez de uma collection uma implementação da interface org.displaytag.pagination.PaginatedList
Mas se você estiver utilizando por exemplo o paginator do tomahawk com JSF então boa sorte pois ele não tem um suporte muito bom para este tipo de coisa …
No caso de JSF+EJB3 acho mais indicado utilizar algo parecido com o p4j5, ou então não utilizar nenhum dos componentes de paginação prontos que eu conheço para JSF
Então, vocês escrevem código parecido com isto? (trazer um monte de registros e paginar só na view)
Conhecem gente que faz isto?
Que outras coisas vocês acham que fazem ou que viram fazer (as vezes colocar a culpa nos outros facilita o comentário
) que são visivelmente um problema grave de performance quando a aplicação sai do ambiente de testes?
Digo quando sai do ambiente de testes por que mesmo o exemplo citado em um ambiente com poucos dados não apresenta problema algum …
E de quem é a culpa deste tipo de código ser tão comum por ai?
Na minha opinião, é da falsa sensação de programação statefull que temos programando com a grande maior parte dos componentes disponíveis por ai …
A página de publicações ja foi atualizada com os exemplos, o passo a passo para fazer o exemplo do mini curso de EJB3 + JPA + JSF funcionar é o seguinte:
Se quiserem mais detalhes é só dar uma olhada no video a baixo …
Acho que era isto, nos próximos dias eu escrevo outros posts detalhando os exemplos …
Tags: Java, Java EE, Spring Framework, Trabalho
Como um bom brasileiro, vou começar reclamando para quem não pode fazer nada a respeito
(Se você também não gosta de lamentações clique aqui)


Eu errei feio e peço desculpas pelo “fiasco” do primeiro mini curso, o que aconteceu foi que eu testei antes de ir para o evento com o banco de dados padrão do netbeans/glassfish e tudo funcionou corretamente, no evento tentando utilizar o MySQL como faço em 99% dos outros projetos sofri com um bug na integração do NetBeans 6.0M10 com o glassfish 2.0 build 53 …
Possivelmente o BUG seja alguma alteração no formato dos arquivos de configuração/deployment do glassfish …
O NetBeans quando gera um jar de um projeto ejb, ele coloca dentro do jar um arquivo META-INF/sun-resources.xml que deveria criar os pools JDBC utilizados pelos EJBs daquele jar, mas a combinação de NetBeans 6.0M10 + esta versão de glassfish, isto não funciona de modo algum, e isto eu não tinha testado, pois fiz os testes com um pool que ja existia e desta forma o NetBeans não tentou criar novamente o pool …
Quando eu informo ao netbeans uma conexão nova, ele deveria criar ela automaticamente no servidor de aplicações, mas parece que a geração do arquivo de configurações do glassfish esta com problemas …
o que o netbeans esta gerando é o código a baixo …
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
<jdbc-resource enabled="true" jndi-name="devmedia" object-type="user" pool-name="mysqlPool"/>
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="mysqlPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
<property name="databaseName" value="devmedia"/>
<property name="serverName" value=""/>
<property name="portNumber" value=""/>
<property name="User" value="root"/>
<property name="Password" value="admin"/>
</jdbc-connection-pool>
</resources>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
<jdbc-resource enabled="true" jndi-name="devmedia" object-type="user" pool-name="mysqlPool"/>
<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="mysqlPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
<property name="url" value="jdbc:mysql:///devmedia"/>
<property name="URL" value="jdbc:mysql:///devmedia"/>
<property name="User" value="root"/>
<property name="Password" value="admin"/>
</jdbc-connection-pool>
</resources>
com este código funciona tudo OK …
O que eu fiz em casa que funcionou corretamente?
Tentei rodar o projeto pelo netbeans diversas vezes e não funcionou, então criei o ear pelo netbeans, abri o ear, abri o jar dos EJBs removi o arquivo META-INF/sun-resources.xml, acessei o console de administração do glassfish, criei uma conexão JDBC com as configurações descritas no arquivo acima, criei um JDBC Resource apontando para a conexão criada e nome devmedia.
Fiz o deploy do ear gerado pelo netbeans sem o descritor sun-resources e tudo funcionou (quando tentei fazer o deploy com o descritor ainda no arquivo ele dava o mesmo erro que estava ocorrendo no evento).
Fazendo ainda alguns testes depois, removi a aplicação e os resources JDBC que havia criado no passo anterior, alterei o descritor ao invés de remover ele, e também funcionou.
Por tanto, esta declarado que o problema da aplicação não funcionar foi causado por um BUG no NetBeans que esta criando o descritor de deployment com dados errados.
E a partir de hoje eu vou começar a prestar mais atenção nos avisos que aparecem quando se vai baixar uma versão beta de algum software: Não Utilize em produção!
Ja na última palestra, sobre Desenvolvimento Web com Spring Framework, os problemas começaram com o projetor da sala que só aguentava 800×600 (o da outra sala suportou os 1280×800 do meu notebook, espetacular o projetor), quem é que consegue trabalhar com 800×600?
Depois disto, o eclipse Europa, que não é mais beta, não tinha nada beta instalado, resolveu que iria cair a cada 5 minutos, e considerando o fiasco que eu ja tinha feito na palestra anterior, em que o exemplo não funcionou, eu comecei a ficar desesperado, e agradeço a quem estava na platéia que deve ter visto a minha cara de pânico e disse, por que tu não usa o IDEA?
Abri o IDEA e o pânico aumentou, pois em 800×600 o layout dele não se ajeitava …
Lembrei de remover a barra inferior do KDE e tudo resolvido, IntelliJ IDEA funcionando, consegui fazer o mini curso de desenvolvimento web com spring framework sem maiores problemas …
Os erros que ocorreram eram mais ou menos previstos, pois a idéia era mostrar como fazer uma aplicação do zero, o que pode dar errado, e como procurar soluções …
No final tudo funcionando, clientes sendo cadastrados, layout podre (não sou nenhum designer
)
O único problema foi que devido aos problemas emocionais do Eclipse Europa, a palestra atrasou um pouco e não deu tempo de passar mais com mais detalhes sobre a escrita de testes unitários (tem alguns exemplos aqui para quem quiser se adiantar), mas vou colocar os testes no exemplo que sera disponibilizado hoje a noite aqui no blog.
Lições aprendidas:
Fora isto só posso pedir desculpas novamente a quem estava assistindo a palestra de EJB3 + JPA + JSF, e como prometi para todos hoje a noite os exemplos estarão na página de publicações aqui do blog com um passo a passo de como fazer para funcionarem, ainda vou adicionar alguns exemplos de código e um video provando que o netbeans me sabotou na primeira palestra
PS.: desculpem pelo texto gigantesco, mas eu tinha muita coisa para explicar …
Tags: Eclipse, idea, Java, Java EE, Spring Framework, Trabalho
Uma das coisas legais de trabalhar com TI é que todo dia tem novidade, uma das coisas ruins de trabalhar com TI é que precisamos pelo menos ter uma idéia sobre tudo o que esta acontecendo …
Então, segue mais um daqueles posts com poucas opiniões e muitos links …
Um pouco sobre o Glassfish a implementação de referência do Java EE 5 (e um ótimo servidor de aplicações):
Tags: Dia a Dia, dia-dia, Eclipse, Java, Java EE, links, produtividade, Spring Framework
A SUN finalmente esta atualizando as provas da certificação SCEA para Java EE 5 (a versão anterior ainda falava de EJB 1.2, na verdade 1.2 e 2.0).
As inscrições para a prova BETA da certificação vão abrir no dia 20 de setembro de 2007.
A vantagem das provas beta é que são gratuitas, a desvantagem é que normalmente elas tem o dobro de questões que a prova normal ![]()
Mas passando na prova beta, você ganha o certificado sem desenbolsar R$1 …
Mais detalhes sobre o conteúdo da prova podem ser encontrados nesta thread do JaraRanch, mas basicamente é o seguinte:
Agora não tenho mais desculpas para não fazer a prova ![]()
Como na prova atual, a SCEA é dividida em 3 partes, uma prova objetiva, o desenvolvimento de uma arquitetura, e perguntas sobre a arquitetura desenvolvida …
Para se registrar, a partir do dia 20 de setembro, acessar o site http://www.2test.com/ e seguir os passos, ou ligar para o centro prometric mais próximo
Tags: Java EE, produtividade