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
Continuando com a comparação de IDEs para RoR que comecei aqui vamos dar uma olhada nos recursos que o IntelliJ IDEA oferece para trabalharmos com o Rails …
<auto_promoção>
Antes de continuar, se você estiver começando agora e quiser aprender um pouco mais sobre RoR (Ruby On Rails), eu traduzi a pouco tempo o ótimo tutorial Four Dais on Rails: Primeiro Dia, Segundo Dia, Terceiro Dia, Quarto e Último Dia
</auto_promoção>
Para quem não conhece o IntelliJ IDEA é uma das melhores, se não a melhor IDE disponível hoje para se trabalhar com Java, mas ela possui também um módulo que pode ser instalado via o gerenciador de módulos da IDE para se trabalhar com Ruby, este módulo adiciona suporte para Ruby e Ruby On Rails …
Achei interessante a idéia pois assim é possível se trabalhar com mais de uma linguagem na mesma IDE, ja que estou começando a pouco com o RoR, mas ja trabalho com Java a algum tempo, por tanto, a maior parte dos projetos que desenvolvo e a grande maior parte do histórico é em Java …
A coisa que mais sinto falta quando estou utilizando o VIM ou o Kate para editar qualquer tipo de código fonte, é code completion, até o bash completa automagicamente os comandos disponíveis, por que eu preciso decorar todos os métodos de uma classe?
Claro, eu sei que em linguagens dinâmicas não é possível adivinhar todos os métodos disponíveis mas boa parte deles não é dinâmico
Uma ótima surpresa ao utilizar o IDEA para editar uma applicação Ruby On Rails é o code completion deles …

Todos os métodos definidos para a classe ja estavam ali disponíveis para serem chamados, e o melhor de tudo, com a documentação em um popup ![]()

Como pode ser visto na imagem acima, até mesmo nos arquivos rhtml, o code completion funciona beleza ![]()
Isto me poupa bastante tempo, pois ja mostra os métodos para criação dos controles dos formulários, com os parametros possíveis …
Agora eu não preciso mais ficar 100% do tempo com a API do Rails aberta em uma janela do browser
O Legal é que este code completion ja mostra inclusive os métodos que eu adicionei nos helpers da aplicação também ![]()

Quando eu estiver editando o Model, os validates_* ja estão todos la também (claro, isto a gente acaba decorando com o tempo … )
Mas alem do code completion estar espetacular, o IDEA também possui diversos templates de código ja prontos …

A minha única reclamação é que os templates não tem um nome exatamente intuitivo …
Como por exemplo:
Claro que uma vez isto decorado, é muito mais rápido …
Uma outra coisa espetacular do IntelliJ IDEA é que ele possui 3 tipos de code completion …
CTRL+SPACE – code completion normal, todas as possíveis classes, métodos e assemelhados …
CTRL+SHIFT+SPACE – smart completion, só o que provavelmente se encaixa naquele contexto …
CTRL+J – smart templates
Para facilitar um pouquinho para quem esta começando, e até para melhorar a integração IDE/Rails o menú “File\New” inclui todos os possíveis generators, inclusive os “não padrão” que estiverem disponíveis …

Eu achei esta integração dos generators bem melhor que a do RadRails, pois neste caso, parece que realmente faz parte da IDE e não que é algo que foi jogado ali por que foi a única forma que conseguiram …

Refactoring sempre foi “O” recurso mais espetacular do IntelliJ IDEA (fora o fato de a IDE parecer inteligente e se adaptar a forma de você trabalhar
), mas como pode ser visto no screenshot acima …
Quase nenhum Refactoring foi portado para o plugin de RoR ainda …
O plugin ainda esta em desenvolvimento, e com certeza haverão muitas melhoras neste ponto até o release oficial do plugin e do IntelliJ IDEA 7 …
Uma dica para quem estiver com o último EAP instalado, e estiver triste por que o plugin para Ruby não funciona nesta versão ainda …
Eu abri o jar, alterei a versão compatível no plugin.xml e tudo funcionou sem problema algum ![]()
Além destes screenshots também existe um menu para as actions do Rake, que eu particularmente não acho tão útil assim, exceto pelo fato de facilitar a execução dos testes a partir da IDE.
É possível executar a aplicação em modo debug com o webrick ou o mongrel, e colocar breakpoints em qualquer parte do código …
Só não consegui breakpoints nos arquivos .rhtml, mas a principio isto é até uma coisa boa pois evita que algum desavisado tente colocar lógica na camada de apresentação ![]()
A configuração de servidores para execução da aplicação funciona exatamente da mesma maneira que para executar aplicações Java, o que garante consistência na experiência do programador …
Diferente do RadRails que para executar uma aplicação Java se usa um menu e para startar uma aplicação rails se utiliza outro …
É possível facilmente utilizar tanto o Ruby como o JRuby como interpretador …
O IntelliJ IDEA como sempre superou as minhas expectativas, exceto pelo fato de o suporte a refactorings ainda não ter muitos recursos para o Ruby, mas mesmo assim, a “inteligência” da IDE continua ajudando bastante na produtividade …
Outra coisa interessante é a performance dos editores, depois dos 15 segundos que o IDEA leva para inicializar na minha maquina, trabalhar com o editor de Ruby ou RHTML dele teve praticamente a mesma performance de se trabalhar com o Kate ou o VI, e digo praticamente por que não medi apenas, pois não ocorreu nenhum travamento ou qualquer coisa do genero (coisas que me decepcionaram bastante no RadRails).
Só deixo um aviso:
Se você acha que não vale a pena pagar por uma IDE que vai aumentar a sua produtividade, nem teste o IntelliJ IDEA, pois é bem provável que você fique viciado nele e acabe comprando uma licença …
[Parte 1 - Rad Rails] [Parte 3 - Net Beans Hudson]
Tags: idea, produtividade, Ruby
Quando: 11 de novembro de 2006
Horário: 09:00 as 12:30
Palestrante: Julio Viegas
Onde: Auditório da Fundação Getúlio Vargas
Quanto:
R$ 15,00 público geral
R$ 10,00 associados da SUCESU
Descrição:
O Google Web Toolkit , GWT, é um framework Java para facilitar o desenvolvimento de de aplicações que façam uso de Ajax. O kit pretente evitar que o desenvolvedor perca tempo com detalhes tecnicos durante a criação de aplicações web bastante dinâmicas. Entre as vantagens, evita incompatibilidades entre browsers e plataformas e permite maior modularização dos componentes AJAX e JavaScript.
Sera sorteada uma licença personal do
e do Team City para os participantes do Tutorial.
Uma nova ação de promoção da JetBrains, em uma açao conjunta com grupos de usuário Java do mundo inteiro eles vão dar de presente algumas licenças do IntelliJ IDEA e do novo produto Team City.
São Licensas “Personal” ou seja, para uma pessoa apenas e que pode ser utilizada para fins comerciais.
O que isto tem a ver com o blog? bom eu ganhei uma licença, e nos proximos dois tutoriais do RSJUG deste ano, o palestrante ganha uma licença também, e vamos sortear uma licença para os presentes no dia, então não percam os proximos dois tutoriais deste ano do RSJUG, alem do excelente nivel técnico também orre o risco de ganhar uma licensa de uma das melhores IDEs java disponiveis no mercado hoje!