quarta-feira, março 18, 2009

Proxy AJP + No-Ip = Felicidade (ou Quase Isso)

Agora são 3:42AM, e não fui dormir ainda porque fiquei o dia inteiro atrás da porcaria da integração Yahoo Pipes ao nosso componente REST para o Google Calendar.

O problema começou porque o componente WebServices do Pipes não usa um MediaContent simples como "application/xml" ou "application/json". Ele insiste em usar algo mais exótico, como "application/x-www-form-urlencoded".

E aí a vaca vai pro brejo, pois os providers nativos do RestEasy não interpretam esse tipo de conteúdo, uma vez que ele é codificado.

Então, tive que partir para a criação de um provider customizado...

XStream

Mas pra variar, o Jettison parece não escrever Json com esse tipo de codificação, e então tive que apelar para o XStream, também lá da CodeHaus.

Ao juntar os dois, consegui parsear o Json e produzir meus objetos Java a partir do stream HTTP gerado pelo Yahoo Pipes. E fiquei quase feliz. Eu disse quase.

Trabalho x Casa

No trabalho, os meus Pipes do Yahoo apontam para nosso endereço http://jboss.lm2.com.br/xxx, qual é válido na Internet (ou seja, para os Pipes do Yahoo acessarem).

Mas em casa, a coisa é diferente. E tive que configurar meu Wireless e meu Modem ADSL para expor meu Tomcatezinho para Web.

Porém, o SpeedStream aqui da GVT me deu uma dor de cabeça do (...) e parece que os Forward das portas não funcionavam.

Cansado, apelei para o Putty, e acessando de um IP externo, percebi que meu Tomcatezinho realmente estava publicando as portas para a Web.

E fique um pouco mais quase feliz.

AJP + NO-IP = Felicidade (Quase)

A dúvida então era: Como manter uma URL única nos meus WebServices dos Pipes do Yahoo, tanto quanto eu estivesse desenvolvendo no ambiente de trabalho, ou em casa ou... em qualquer outro lugar?

A resposta veio com a duplinha AJP e No-Ip.

Via putty, configurei nosso servidor Apache para montar um balanceador, formado pela minha máquina enquanto eu estivesse dentro da rede da empresa, e outro nodo formado pelo... meu mesmo note, quando eu tivesse em casa ou em qualquer outro lugar.

Fiz isso usando o DNS do No-Ip, apontando para meu link pessoal. Veja abaixo como ficou:


BalancerMember ajp://192.168.20.233:8010 route=jvm1
BalancerMember ajp://mmrack.no-ip.info:8010 route=jvm1


Testei e funcionou, e fique quase feliz.

E por que quase? Porque agora são 04:00AM, e quando eu chegar atrasado no trabalho vão reclamar de mim, e ainda por cima, terei que validar meu processo de Json x Java para ver se tudo realmente está Ok.

Uma hora dessas eu canso.

0 comentários: