segunda-feira, 24 de setembro de 2007

SCEA - JEE5 Beta Exam

É... descobri só hoje (já meio atrasado) que abriu a nova prova SCEA atualizada à nova versão JEE5. E ela está na versão Beta, o que por tradição da Sun é FREE. Já que é "de grátis" então vamos fazer né =)

Então, se você quer se arriscar nesta certificação, ao invés de investir na SCWCD, SCBCD e tantas outras... invista seu tempo nesta =)

As inscrições abriram no dia 20/09 no site da prometric. Então, logue lá, e entre na opção Schedule an Appointment, vai pedir algumas coisas, e depois irá aparecer uma caixa com a certificação que vc quer fazer. A SCEA Beta JEE5 é a última opção.

A prova I deve ser feita até dia 20 de outubro, ou seja, muito pouco tempo para estudar =) E são 160 questões, e o candidato terá 4h para fazer a prova. Como a prova é beta, tem muita questão mesmo, e a cada questão tem um espaço para um comentário sobre a questão.

O prazo para a fase II começa em Novembro e termina em Dezembro juntamente com a parte III.

Então, boa sorte a quem for se aventurar. Segue abaixo alguns links, que podem ajudar nesta empreitada:

Site Oficial

Link de divulgação no JavaRanch, com algumas informações
MailGroup criado para a prova
NYCJAVA - SCEA Study Group

Se alguem souber de algum material interessante e/ou informação útil, favor postar aqui!

Valeu!

terça-feira, 11 de setembro de 2007

Clustering de Jboss - Parte 1

Há algumas semanas atrás eu estava estudando a melhor arquitetura para uma nova aplicação que estamos fazendo. Esta aplicação a princípio deveria por obrigatoriedade rodar clusterizada e distribuida, sendo ela dividida em algumas partes distintas. OK, pensei comigo mesmo, a melhor maneira de fazer isso, é com EJB mesmo, não vai ter como fugir desta vez.

Embora, EJB tenha um certo overhead na parte de lookup e tudo mais, me pareceu a melhor saida no momento mesmo. E analisando melhor a aplicação, a melhor saida ainda, era usar JMS. Devido ao Assincronismo da aplicação. Enfim, para isso tive que estudar certinho como é que o jboss trabalha com o cluster dele, e como fazer funcionar, além de ter que verificar como fazer para que os MDBs e a Fila ficassem clusterizados também.

Então, resolvi postar aqui como fazer tudo isso funcionar, pois a documentação do JBoss não é lá grandes coisas, embora tenha ajudado muito, e o material na internet não é tão abundante assim.


Colocando o Jboss em Cluster


Bom, para utilizar o Jboss em cluster, primeiro é claro você precisa de 2 máquinas ligadas em rede. Da até pra utilizar na mesma para fazer testes, mas da muito empenho, vai por mim, mas se você precisa mesmo utilizar, você precisa trocar TODAS as PORTAS que o Jboss usa, que não são poucas, e para isso precisa garimpar nos milhares de .xml que ele tem (boa sorte =]). Este post pode te ajudar em algumas, porém ele fala de Jboss rodando na configuração default, mas na all que é onde ele já tem as configurações de cluster, tem muito mais portas =).

Então temos, 2 máquinas ligadas em rede e conversando entre si. Simplesmente o que precisamos fazer para colocá-las em Cluster é levantar o jboss de uma máquina e depois de outra, utilizando a configuração all, assim:


run.bat -c all -b 10.77.6.26 (coloque o ip da maquina aqui)


Como pode se notar, o parametro -c indica qual configuração ele vai utilizar, e o parâmetro -b qual será o IP utilizado para identificar a máquina. Caso não seja passado o ip, o default assumido será 127.0.0.1.

Quando "subir" um jboss você notará nas mensagens de log que ele reconheceu que é o primeiro nó do cluster, ou que ele não conseguiu achar nenhum outro nó "no ar" para formar um cluster. Este Jboss estará rodando OK, porém sozinho esperando encontrar algum outro nó para formar o cluster. O próximo passo então, é subir o outro Jboss. Na hora que ele estiver subindo, irá mandar uma mensagem em multicast (ip=228.1.2.3 porta=45566 via UDP) o servidor que já está no ar irá receber esta mensagem, e então inicia o "handshake" e pronto, eles entram em cluster. Tudo isso será mostrado no log do seu jboss, então para isso deixe o cosole aberto e vá vendo as mensagens que vão aparecendo. Irá aparecer algo assim para o primeiro nó:

16:12:40,828 INFO [DefaultPartition] Number of cluster members: 1
16:12:40,828 INFO [DefaultPartition] Other members: 0
16:12:40,828 INFO [DefaultPartition] Fetching state (will wait for 30000 milliseconds):
16:12:40,828 INFO [DefaultPartition] State could not be retrieved (we are the first member in group)

Você pode inclusive ter vários "clusteres" em uma mesma rede, basta para isso mudar o nome do cluster (no arquivo /server/all/deploy/cluster-service.xml), que por default vem com o nome de DefaultPartition. Para verificar se os seus Jboss estão em cluster, além de ver no console que o cluster foi formado, abra o jmx-console e procure por DefaultPartition e clique nele. Lá você encontrará os IPs das máquinas que estão fazendo parte do Cluster na opção
CurrentView.

Vale a pena ressaltar que a comunicação padrão entre os nós do cluster é feita via UDP com Multicast. No meu caso, eu enfrentei problemas para que os nós se achassem, havia muita demora para formar o cluster, e o farm-deployment raras vezes acontecia. Por um problema de Windows (eu li em algum lugar alguma coisa assim), ou do elemento de rede entre os pontos (a nossa rede é uma bosta), não sei bem o que poderia ser, mas não me surpreenderia com nenhuma das possibilidades. O que me deu esta luz, foi justamente este post, ao menos ele estava tendo o mesmo problema que eu. Lembre-se disso caso esteja tendo problemas, isso pode te economizar muito tempo =)

Enfim, o que tive que fazer para funcionar foi alterar o protocolo de UDP para TCP. Fiz isso no arquivo /server/all/deploy/cluster-service.xml). Logo no começo do arquivo existe uma tag chamada < attribute name="PartitionConfig" > , e dentro desta tag tem um outro elemento chamado < Config >. O que vem habilitado (descomentado) por padrão é o UDP, e (graças a Deus) logo abaixo vem a configuração de TCP comentada. Então o que precisa fazer é descomentar um e comentar o outro. E alterar o elemento TCPPING para que ele contenha os IPs dos principais nós do seu cluster, os quais ele acha no começo, depois você pode incluir outros. Então ficaria algo mais ou menos assim:

< tcpping initial_hosts="${jboss.bind.address}[7800],10.77.6.40[7800]"

Sendo que o próprio jboss substituirá jboss.bind.address pelo seu endereço de IP, e o ip que aparece ali, é o IP do outro nó do seu cluster, ou quantos nós você tiver.


Farm Deployment

Outro aspecto interessante do JBoss, é o deployment em farm. Que nada mais é, você precisar apenas se preocupar com um dos nós, e este cuida de replicar o seu estado para os outros. Então, basta apenas você ter sua aplicação publicada em um dos nós e este copiará a todos os outros a aplicação. O mesmo acontece quando você fizer undeploy de uma aplicação em um dos nós.

Para publicar uma aplicação no farm, basta você copiá-la para o diretório /server/all/farm ao invés de copia-la para /server/all/deploy como é o padrão. Caso você copie para o diretório deploy a sua aplicação será publicada apenas na máquina em questão e o farm-deployment não será executado.

Conclusão

Eu não esperava, mas este será o primeiro de uma série de 3 posts (possivelmente), pois senão iria ficar um post muito grande, e eu não gosto de ler posts muito grandes. Então pretendo nos próximos posts falar sobre como configurar sua fila JMS no esquema de High Availability. E ainda uma aplicação de exemplo para testar este esquema. E como deixar seu Jboss mais "tunado" =)

Até!

[edited]
O Paulo Jerônimo tem um screencast bem interessante sobre como rodar mais de um jboss em cluster na mesma máquina.

quinta-feira, 16 de agosto de 2007

Photosync - Amazing!

Eu não sei quem já conhecia esta "ferramenta/tecnologia" mas pra mim isso é novo. Posso dizer que fiquei realmente impressionado, e achei bastante interessante do aspecto tecnológico... E pasmem, não é coisa da Google hehehehe a MS saiu na frente e comprou os caras =(

O que isso faz? Ele pega milhares de fotos "tagueados" com uma certa palavra e sintetiza as imagens pegando pedaços de cada uma, juntando tudo, formando assim uma imagem tridimensional. Pense nas possibilidades?! ;) cool! Agora assista o vídeo!

Vídeo da Apresentação do Photosync no TED

Quem sabe depois vc queira dar uma testadinha:
Try it - Photosync

ps: Eu não consegui testar, o programa não conseguiu carregar "a Collection...", nem com o IE funfou essa parada.

segunda-feira, 13 de agosto de 2007

Testando Servidor de Email via Telnet

As aplicações de hoje, em quase sua maioria compreendem aplicações para internet ou com alguma interação com internet, e normalmente utilizam-se de serviços que enviam emails. Como as linguagens hoje, possuem API´s para tudo que é coisa, não podia deixar de faltar API´s para envio de email. Essas API´s, já fazem muitas coisas que não nos interessa saber de como é feito. No caso de Java existe a JavaMail API, ela já faz parte da especificação e já vem como parte da espec. JEE. Mas mesmo assim existem API´s complementares para envio de email, como é o caso da Email-API da Apache. Aproveitando este post, um código simples para mandar emails é mais ou menos assim:



O que muitos desenvolvedores não sabem, é como funciona um servidor de email (smtp), principalmente como ao menos testar se ele está funcionando. Exporadicamente eu preciso testar um servidor de smtp localizado em algum servidor, e para isso eu sempre preciso pesquisar quais são os comandos exatos para fazer um teste via telnet neste servidor. Mas como um cara esperto que sou, eu anotei (depois da enézima vez que precisei) e humildemente vos posto esta maneira simples de fazê-lo, e agora vocês já sabem onde achar (e eu também) =)

telnet ipDoServidorSmtp 25
mail from: email@domain.com [enter]
rcpt to: seuemail@domain.com [enter]
data [enter]
[aqui vai o corpo do email]
. [enter]
quit
Just another Tip & Trick.
Valeu

terça-feira, 7 de agosto de 2007

The Dark Tower - Finished

Este post é um useless post.

Terminei ontem o último livro da série a Torre Negra do autor Stephen King. Foram 7 livros, mais de 4000 (Quatro mil) páginas, de uma história envolvente, muito bem bolada, que te transportava para um mundo (vários mundos) cheio de aventuras e particularidades.

Stephen King (site oficial, wikipedia) é muito conhecido por ser o mestre do Terror/Suspense, muitos dele nem tanto terror e suspense assim, diria que ele é um autor bem completo, passando por Suspense, Terror, Drama, Aventura, Épico. Mas queria deixar claro que seus filmes não são um terror do tipo "Massacre da Serra-Elétrica", ou muito menos aqueles filmes de terror de adolescentes americanos, ou como dizia um amigo (que trabalhou na Wise comigo em Curitiba) o Marcão, "filme de galerinha" =).

Algumas obras de Stephen King são muito conhecidas, alguns já clássicos, outros bem contemporâneos, como O Iluminado (The Shining com duas versões), A coisa (It), Um sonho de Liberdade (The Shawshank Redemption), À Espera de um Milagre (The Green Mile), A Mansão Marsten (Salem´s Lot), A tempestade do Século (Storm of the Century - que é continuação do Salem´s Lot), Conta comigo (Stand By Me), Cemitério Maldito (Pet Sematary), Carrie a Estranha (Carrie), Christine (Christine) esses que lembrei agora de cabeça, mas existem muitas obras mesmo, deste grande autor, muitas delas transportadas para Televisão e Cinema.

Bom, já deu pra perceber que sou um grande fã de Stephen King. Apesar de não ser fanático, este Livro A Torre Negra, é sem dúvida a grande obra dele, até mesmo reconhecida assim por ele. Um aspecto interessante de se observar nas obras de Stephen King, é que todas, mas muito mais principalmente esta, estão interligadas, ou tem algum personagem ou faz referência a outras de suas obras. Por isso não se surpreenda, caso você comece a ler esta história e achar que já viu/leu algo assim em outra história de King. Afinal, o mundo é uma roda. =)

A idéia original da história surgiu de um poema épico do século XIX de Richard Browning chamado Childe Roland A Torre Negra Chegou (Childe Roland The Dark Tower Comes). Porém sua história também foi baseada no universo Imaginário de J. R. R. Tolkien, lendas como a de Rei Arthur e seus cavaleiros, usando ainda muitas referencias atuais (ao mundo atual), e ao Faroeste.

Eu resumo esta história como uma intersecção (ou por que não mistura?) de Senhor dos Anéis e de Matrix. Se você conseguir pensar em misturar tais coisas.

O principal personagem desta história é chamado de Roland, o qual é um Pistoleiro. Os pistoleiros são uma estirpe quase extinta, e eles são, digamos assim, os guardiões do Mundo. A Torre Negra, o objeto de maior desejo e o principal objetivo deste pistoleiro, está no centro de todos os mundos, e estes mundos são sustentados por Feixes de Luz, que são interligados no centro pela Torre Negra. Os mundos são ameaçados pelo Rei Rubro (Le Roy Russe), e por seu fiel mago, que assume vários nomes e formas, durante toda a história, uma delas é o Homem de Preto. E a história da Torre Negra, é iniciada assim:

"O Homem de Preto fugia pelo deserto. E o pistoleiro ia atrás."
A partir desta singela frase, um mundo (vários mundos) tomam forma, e personagens nascem e morrem. Há muita morte (menos pra você pistoleiro), sangue, aventura, drama, tensão, amor, paixão, lealdade, aprendizado, ódio, raiva, inteligência, brincadeiras... Realmente uma história completa.

Para quem gostaria de se aventurar com esta magnífica história, eu preciso dizer antes mais umas coisinhas. O primeiro livro, foi escrito em 1970, quando o autor ainda era um estudante universitário, e o segundo livro foi sair apenas em 1987 quando o autor, já estava mais maduro. Por isso se você não gostar do primeiro livro, leia-o inteiro mesmo assim (são apenas 200 páginas), então leia o segundo, se logo no começo você não gostar da história, dai sim, você poderá desistir, mas não antes disso OK?!

Além dos livros, no começo deste ano saiu pela Marvel Comics os quadrinhos do Pistoleiro chamado A Torre Negra (claro!).

Bom, pra finalizar uma lista dos livros da série a Torre Negra:
  1. Volume I: O Pistoleiro (The Gunslinger)
  2. Volume II: A Escolha dos Três (The Drawing of the Three)
  3. Volume III: As Terras Devastadas (The Wastelands)
  4. Volume IV: Mago e Vidro (Wizard and Glass)
  5. Volume V: Lobos de Calla (Wolves of Calla)
  6. Volume VI: Canção de Susannah (Song of Susannah)
  7. Volume VII: A Torre Negra (The Dark Tower)
É... infelizmente é isso, me despeço hoje do Pistoleiro e de seu ka-tet e de sua busca (eterna). Não sei se queria mesmo que chegasse ao fim. É muito boa a história, e era bom sempre ter algo pra ler que fosse realmente agradável. Realmente, o que satisfaz é a busca e não o resultado da busca. =)

Longos dias e belas noites a todos!