<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bruno Pereira &#187; atompub</title>
	<atom:link href="http://brunopereira.org/tag/atompub/feed/" rel="self" type="application/rss+xml" />
	<link>http://brunopereira.org</link>
	<description>Open source, Java, web, python, client-side e outros hobbies :)</description>
	<lastBuildDate>Thu, 20 Oct 2011 00:47:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>RESTFul Registry update</title>
		<link>http://brunopereira.org/2008/09/23/restful-registry-update/</link>
		<comments>http://brunopereira.org/2008/09/23/restful-registry-update/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 02:25:54 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[dan diephouse]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[mule]]></category>
		<category><![CDATA[mule galaxy]]></category>
		<category><![CDATA[mulesource]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[wso2]]></category>
		<category><![CDATA[wso2 registry]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=212</guid>
		<description><![CDATA[Well, as I said recently, we want to use a registry to keep URIs of our services and also some configurations that are currently in properties files.
After looking better at WSO2 Registry, I figured out how to do what I need with the product. I had a very short time to evaluate properly WSO2 Registry [...]]]></description>
			<content:encoded><![CDATA[<p>Well, as <a href="http://brunopereira.org/2008/09/08/restful-services-registry/" target="_self">I said recently</a>, we want to use a registry to keep URIs of our services and also some configurations that are currently in properties files.</p>
<p>After looking better at <a href="http://wso2.org/projects/registry" target="_blank">WSO2 Registry</a>, I figured out how to do what I need with the product. I had a very short time to evaluate properly WSO2 Registry and <a href="http://www.mulesource.org/display/GALAXY/Home" target="_blank">Mule Galaxy</a> before my last post, but after another evaluation of them, I concluded I can use them in this case.</p>
<p>Last week I developed a Java client to consume my publications from WSO2 Registry. It wasn&#8217;t much fun to develop, because I had to make it compatible with JDK 1.4. This prevented me from using their client API, which runs only on JDK 1.5 and above.</p>
<p>Since I had to use JDK 1.4, I used <a href="http://xstream.codehaus.org/" target="_blank">XStream</a> for my Java &lt;-&gt; XML mappings. Not being able to use the Registry&#8217;s Java client, I also had to consume data from their <a href="http://www.atompub.org/" target="_blank">AtomPub</a> API. I used <a href="http://incubator.apache.org/abdera/" target="_blank">Apache Abdera</a> 0.3 for this task, which was their last version supporting JDK 1.4 (through retroweaver).</p>
<p>So far so good. Last week I had a prototype client consuming stuff from the Registry, so I moved on to some other tasks. Well, today I started integrating the Registry in my application. That meant moving from Tomcat 6 to JBoss 4.0.5. And that&#8217;s when I got in trouble.</p>
<p>Unfortunately I hadn&#8217;t seen <a href="http://wso2.org/wiki/display/registry/Registry+1.1" target="_blank">this page</a> before. It turns out that the only application server they have tested enough is Tomcat. And not any Tomcat, only Tomcat 6. Since their distribution format is a .war file, I never would think they support only Tomcat. In their <a href="http://wso2.org/downloads/registry/" target="_blank">download page</a> it says: <strong>&#8220;This distribution includes the Webapp module with relevant JAR files and other resources to be deployed in the servlet container, providing a Web UI and an APP interface.&#8221;</strong></p>
<p>Well, I&#8217;m probably just dumb. They didn&#8217;t say &#8220;<strong>a servlet container</strong>&#8220;. They said &#8220;<strong>the servlet container</strong>&#8220;. This certainly means &#8220;the servlet container we support, which is Tomcat 6&#8243;. But this is not written there, so dumb people like me will be subject to mistakes.</p>
<p>&#8220;Heck, this is open source, I&#8217;m gonna make it work on JBoss!&#8221;. This was my first thought. And then I started setting up the Registry in JBoss, right after lunch today.</p>
<p>The first thing I noticed is that the Registry packs a newer version (1.2.13) of log4j than the one present in JBoss (1.2.8). This shouldn&#8217;t be a problem, but anyone who has experienced some of the JBoss Classloader Hell knows that it&#8217;s not a wise decision to bring a newer version of log4j inside your application if you&#8217;re going to run on JBoss. This is not a Registry fault, so I gladly fixed the problem by removing the log4j they had packed inside the .war file.</p>
<p>After fixing this, I was gettings errors trying to open the Registry&#8217;s index page on JBoss. I quickly found out that their jsps had scriptlets using JDK 1.5 code, and JBoss was not able to compile the jsps. This was easy to fix by uncommenting a init-param in the web.xml in the Tomcat module inside JBoss. However, the amount of scriplets inside their pages was the first symptom that something didn&#8217;t smell right.</p>
<p>After fixing the jsp problem, I configured the Registry to connect to MySql through a JBoss datasource. I then could open their index page and even use some features. However, when I started checking the server logs I was shocked. A huge amount of errors in jdbc operations. I had no clue of what was going wrong, because the UI was apparently working normally and the database was being manipulated.</p>
<p>Well, since it&#8217;s an open source product, I promptly checked out their code and started looking for problems. Most errors occured in simple jdbc operations like the creation of a prepared statement. The application logs were not very helpful, and I couldn&#8217;t figure out where the problem was.</p>
<p>However, something scared me a lot. Between the zillions of jdbc errors, I saw JBoss screaming for help, saying that the PreparedStatements were left open. I went to look at their jdbc code, and it definitely needs care. There were a LOT of jdbc operations inside <strong>try/catch</strong> blocks, where they treated SQLExceptions. I didn&#8217;t see the <strong>finally</strong> blocks closing the PreparedStatements and the ResultSets. This explains JBoss&#8217;s complaints about the PreparedStatements.</p>
<p>After several hours trying to use WSO2 Registry inside JBoss and looking at their code, I must say I am VERY discouraged to put anything in production right now using the product.</p>
<p>I just downloaded Mule Galaxy and now I&#8217;m gonna try to integrate it in my application. A very good sign is that they say I can use it with ANY servlet container, including Tomcat and Jetty. I think it&#8217;ll be a successful effort, but it&#8217;s hard to say anything after my problems with WSO2 Registry today.</p>
<p>But knowing <a href="http://netzooid.com/blog/" target="_blank">Dan Diephouse</a>&#8217;s work for several years, I&#8217;m pretty confident in this new attempt. I&#8217;ll post the results later this week.</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/09/23/restful-registry-update/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Projetando APIs e protocolos</title>
		<link>http://brunopereira.org/2008/06/14/projetando-apis-e-protocolos/</link>
		<comments>http://brunopereira.org/2008/06/14/projetando-apis-e-protocolos/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 01:25:11 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[bill de hora]]></category>
		<category><![CDATA[globo.com]]></category>
		<category><![CDATA[joe gregorio]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://brunopereira.org/?p=184</guid>
		<description><![CDATA[O Bill de hÓra publicou um post sobre um assunto que me interessa enormemente. Ele comentou sobre a dificuldade de se projetar boas APIs e protocolos.
Para quem não o conhece, o Bill de hÓra foi o co-editor da RFC do AtomPub, o protocolo de publicação do formato Atom. No post ele comentou sobre a dificuldade [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://dehora.net/journal" target="_blank">Bill de hÓra</a> <a href="http://www.dehora.net/journal/2008/06/11/4-years-ago/" target="_blank">publicou um post</a> sobre um assunto que me interessa enormemente. Ele comentou sobre a dificuldade de se projetar boas APIs e protocolos.</p>
<p>Para quem não o conhece, o Bill de hÓra foi o co-editor da <a href="http://tools.ietf.org/html/rfc5023" target="_blank">RFC do AtomPub</a>, o protocolo de publicação do formato <a href="http://brunopereira.org/2008/03/03/atom-one-format-to-rule-them-all/" target="_self">Atom</a>. No post ele comentou sobre a dificuldade de elaborar um bom protocolo de comunicação (no caso o AtomPub). O trabalho demorou mais de 2 anos para ser concluído, e neste 2 anos não contam o tempo no qual o <a href="http://bitworking.org/news/" target="_blank">Joe Gregorio</a> (o outro editor da RFC) já estava trabalhando no protocolo antes.</p>
<p>Uma observação que ele faz é que é difícil encontrar indivíduos capazes de projetar boas APIs, e bem mais difícil é encontrar indivíduos capazes de projetar bons protocolos de comunicação. Algumas pessoas dizem que essas habilidades (projetar APIs e projetar protocolos) são de certa forma opostas, o que implica que seria especialmente difícil encontrar pessoas com habilidade nas 2 coisas.</p>
<p>Ler esse post foi motivante e inspirador para mim.  Neste exato momento eu estou fazendo as duas coisas simultaneamente. Meu time é responsável pelo sistema de cadastro de usuários e autenticação da <a href="http://www.globo.com" target="_blank">Globo.com</a>, entre outras coisas. Esse sistema é provavelmente o que possui mais clientes internos na empresa. A implementação original utilizava EJBs para comunicação remota entre clientes e o servidor, e permitia apenas clientes Java.</p>
<p>Estamos progressivamente saindo dessa estrutura. Estamos implementando novas interfaces e clientes que usam serviços REST na comunicação, em vez dos EJBs. Isto está sendo feito de forma progressiva porque nenhum Product Owner daria alto valor de negócio para uma migração dessas, exceto em situações extremas (que não são nosso caso).</p>
<p>Pois bem, nesta migração eu estou atuando nas 2 frentes que o Bill de hÓra classificou como desafiadoras. Estamos modelando os serviços REST e o novo protocolo de comunicação. E estamos também implementando uma API Java para realizar as operações através deste novo protocolo.</p>
<p>Sem dúvida esta migração é desafiadora. De fato não é fácil elaborar um bom protocolo e uma boa API. Porém, isto também motiva demais. Quem acompanha o meu blog já sabe do meu apreço por serviços REST. Assim, este trabalho atual tem sido ótimo para conseguir explorar inúmeras situações envolvidas neste tipo de comunicação.</p>
<p>Para minha sorte, pude contar com alguns pontos facilitadores. Na elaboração do protocolo, o conhecimento do AtomPub ajuda muito. Eu já conheço bem esse protocolo e tinha desenvolvido serviços REST em alguns projetos, então essa parte da empreitada ficou muito facilitada.</p>
<p>Além disso, o conhecimento da API Java anterior do projeto traz várias idéias que podemos explorar. Algumas decisões na API anterior foram muito boas, e outras trouxeram alguns problemas. Eu não participei da implementação original do projeto (isso foi em 2004), mas após trabalhar no projeto por bastante tempo, consegui vivenciar bem os problemas dela. O principal era o alto acoplamento entre o servidor e os clientes, então isso é o principal ganho que pretendemos ter com essa nova implementação baseada em REST.</p>
<p>O outro ponto facilitador é estar no mesmo time que o Silvano, certamente um dos melhores caras que já conheci tecnicamente. Nós temos visões complementares sobre a arquitetura e a implementação. As idéias que colocamos na prática após as freqüentes discussões são muito superiores às que eu ou ele seríamos capazes de desenvolver individualmente. Com a liberdade de decisões técnicas que temos na Globo (principalmente após a adoção do Scrum), conseguimos evoluir nossas aplicações progressivamente, sempre avaliando pontos positivos e negativos das decisões anteriores.</p>
<p>Após ler esse post do Bill, tive uma dimensão melhor da grandeza do desafio que estamos tendo agora. Isto traz ainda mais motivação, e não abala a confiança. Tenho a mesma sensação que Isaac Newton teve ao dizer que &#8220;se ele pôde enxergar mais longe foi porque se apoiou nos ombros de gigantes&#8221;.</p>
<p>Quando estamos trabalhando freqüentemente com padrões e tecnologias abertas, temos sempre essa vantagem. Viver no mundo open source é se apoiar sempre nos ombros de gigantes, e então qualquer desafio fica muito mais suave e a nossa confiança aumenta. É por isso que eu amo o que faço <img src='http://brunopereira.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/06/14/projetando-apis-e-protocolos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Java Magazine 57</title>
		<link>http://brunopereira.org/2008/05/27/java-magazine-57/</link>
		<comments>http://brunopereira.org/2008/05/27/java-magazine-57/#comments</comments>
		<pubDate>Wed, 28 May 2008 00:19:15 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[java magazine]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=183</guid>
		<description><![CDATA[Já está nas bancas a edição 57 da Java Magazine. Nesta edição saem 2 artigos meus sobre o formato Atom.
O artigo maior apresenta o formato Atom e o seu protocolo de publicação, o AtomPub. Além desta apresentação, tentei indicar alguns pontos importantes que tornam interessante a sua adoção no desenvolvimento de serviços REST.
O artigo pequeno [...]]]></description>
			<content:encoded><![CDATA[<p>Já está nas bancas a <a href="http://www.devmedia.com.br/resumo/default.asp?ed=57&amp;site=6" target="_blank">edição 57 da Java Magazine</a>. Nesta edição saem 2 artigos meus sobre o formato <a href="http://en.wikipedia.org/wiki/Atom_%28standard%29" target="_blank">Atom</a>.</p>
<p>O artigo maior apresenta o formato Atom e o seu protocolo de publicação, o AtomPub. Além desta apresentação, tentei indicar alguns pontos importantes que tornam interessante a sua adoção no desenvolvimento de serviços REST.</p>
<p>O artigo pequeno é no formato “Quick Update” da revista. Nele eu analiso a adoção do formato Atom em serviços REST e destaco os principais aspectos a serem considerados para se decidir pelo uso ou não do Atom.</p>
<p>O Atom e o AtomPub são muito interessantes, e mesmo que você não use diretamente o formato, tenho certeza de que ele te trará boas idéias para a implementação de serviços REST. Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/05/27/java-magazine-57/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microsoft também adere ao formato Atom para suas APIs</title>
		<link>http://brunopereira.org/2008/02/28/microsoft-tambem-adere-ao-formato-atom-para-suas-apis/</link>
		<comments>http://brunopereira.org/2008/02/28/microsoft-tambem-adere-ao-formato-atom-para-suas-apis/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 01:31:40 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[posts em português]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[windows live]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=91</guid>
		<description><![CDATA[Depois de o Google passar a usar APIs RESTful com o formato Atom, agora é a vez da Microsoft começar a usar este formato. Ontem a empresa anunciou que as APIs do Windows Live serão RESTful e farão uso do formato Atom.
Após alguns anos investindo pesadamente em web services WS-*, parece que a gigante de [...]]]></description>
			<content:encoded><![CDATA[<p>Depois de o Google passar a usar APIs RESTful com o formato Atom, agora é a vez da Microsoft começar a usar este formato. Ontem a empresa <a href="http://dev.live.com/blogs/devlive/archive/2008/02/27/213.aspx" target="_blank">anunciou</a> que as APIs do Windows Live serão RESTful e farão uso do formato Atom.</p>
<p>Após alguns anos investindo pesadamente em web services WS-*, parece que a gigante de Redmond está lentamente mudando sua forma de pensar em serviços web. É claro que durante um bom tempo eles ainda vão defender ferrenhamente o uso da pilha WS-*, pois eles não querem jogar fora os investimentos nessa área para a plataforma .NET. Contudo, é sem dúvida interessante ver que talvez o maior defensor de WS-* está mudando de direção, embora ainda não de forma integral.</p>
<p>Como eu já havia comentado algumas vezes, parece que a adoção de web services REST para diversos fins vai mesmo crescer rapidamente e ocupar um bom pedaço do espaço anteriormente ocupado por WS-*. E mais, eu acredito que os serviços REST vão crescer muito como mecanismo de integração de sistemas e plataformas. É bastante provável que o uso de integrações com EJBs e outras tecnologias que te prendem a uma plataforma específica caia de adoção. Especialmente em aplicações de internet, tenho convicção de que veremos um espaço cada vez maior sendo ocupado pelos serviços RESTful e que esta passe a ser a forma número 1 de comunicação entre diferentes aplicações.</p>
<p>O formato Atom tem muito a ver com esse crescimento, pois além do formato ser excelente para manipular conteúdo web, o protocolo AtomPub é um belo blueprint de implementação REST. Sempre que eu estou tentando definir um protocolo de comunicação REST e fico um pouco em dúvida sobre a melhor forma de fazer alguma coisa, minha primeira referência é o AtomPub. Estudar como eles resolvem problemas comuns no desenvolvimento REST te dá uma visão muito boa das opções disponíveis. Você já começa de um ponto de partida muito bom, e fica bem mais fácil elaborar um protocolo conciso e coerente depois que você conhece o AtomPub.</p>
<p>A propósito, quem quiser conhecer mais sobre implementação de serviços REST, recomendo fortemente a Java Magazine de Abril. Um certo sujeito vai publicar um artigo prático bem interessante sobre implementação destes serviços <img src='http://brunopereira.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/02/28/microsoft-tambem-adere-ao-formato-atom-para-suas-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diversidade de tecnologias</title>
		<link>http://brunopereira.org/2008/02/11/diversidade-de-tecnologias/</link>
		<comments>http://brunopereira.org/2008/02/11/diversidade-de-tecnologias/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 00:00:54 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache abdera]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=83</guid>
		<description><![CDATA[Eu tenho postado com alguma freqüência sobre o que vem acontecendo no desenvolvimento das tecnologias dos web services Restful.
Este fim de semana o James Snell implementou um adapter do Apache Abdera para o CouchDB. Este adapter permite que se consiga facilmente implementar um armazenamento de dados no formato Atom com uso de uma instância do [...]]]></description>
			<content:encoded><![CDATA[<p>Eu tenho postado com alguma freqüência sobre o que vem acontecendo no desenvolvimento das tecnologias dos web services Restful.</p>
<p>Este fim de semana o <a href="http://www.snellspace.com/wp/?p=880" target="_blank">James Snell</a> implementou um adapter do <a href="http://incubator.apache.org/abdera/" target="_blank">Apache Abdera</a> para o <a href="http://en.wikipedia.org/wiki/CouchDB" target="_blank">CouchDB</a>. Este adapter permite que se consiga facilmente implementar um armazenamento de dados no formato Atom com uso de uma instância do CouchDB.</p>
<p>Como eu já mencionei <a href="http://brunopereira.org/2008/02/06/jersey-meets-abdera/" target="_blank">anteriormente</a>, o Abdera oferece uma API para manipulação de conteúdo no formato Atom e a realização de operações do Atom Publishing Protocol. Já o CouchDB é um banco de dados orientado a documentos que é escrito em <a href="http://en.wikipedia.org/wiki/Erlang_(programming_language)" target="_blank">Erlang</a> e foi projetado para extrema escalabilidade e permite fácil instalação em servidores com múltiplos núcleos ou em clusters de máquinas.</p>
<p>Em vez de utilizar tabelas com colunas (como os bancos de dados relacionais), o CouchDB armazena os documentos em formato JSON e disponibiliza como interface uma API Restful, com clientes já implementados em várias linguagens, como Javascript, Java, PHP, Ruby e Python.</p>
<p>Acho que isto expressa muito bem o horizonte que vem se formando. Em vez de pilha de tecnologias e protocolos proprietários, temos diversas tecnologias e plataformas diferentes conseguindo se comunicar através de HTTP. Um projeto open source Java que manipula conteúdo Atom já disponibiliza com facilidade um mecanismo de integração com serviços REST que manipulam dados em formato JSON.</p>
<p>É impressão minha ou estamos de fato vendo rapidamente uma mudança radical de abordagem na vanguarda da tecnologia? A mesma IBM que antigamente dominava de forma absoluta todo o mercado de hardware e software com soluções proprietárias agora patrocina diversos projetos open source e mantém sua elite intelectual trabalhando nestes projetos.</p>
<p>Soluções open source estão liderando várias frentes de desenvolvimento e com isso rapidamente surgem integrações entre componentes feitos em diferentes linguagens e plataformas. O conhecimento não está mais guardado a 7 chaves, e sim discutido abertamente por uma comunidade que aceita qualquer um com capacidade para agregar idéias boas.</p>
<p>A criatividade e a iniciativa individual nunca tiveram tanto poder, e isto é fabuloso. Com isso, claro que a versatilidade e o conhecimento diversificado ficam muito valiosos.</p>
<p>Hum&#8230; maybe it&#8217;s time for me to fight my disgust for Javascript and start developing something nice including JSON <img src='http://brunopereira.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/02/11/diversidade-de-tecnologias/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jersey meets Abdera</title>
		<link>http://brunopereira.org/2008/02/06/jersey-meets-abdera/</link>
		<comments>http://brunopereira.org/2008/02/06/jersey-meets-abdera/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 03:19:53 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[abdera]]></category>
		<category><![CDATA[apache abdera]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atom publishing protocol]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[jersey]]></category>
		<category><![CDATA[mulesource]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=79</guid>
		<description><![CDATA[Talvez os dois mais promissores projetos atualmente sendo desenvolvidos na área de web services Rest são o Apache Abdera e o Jersey. O Apache Abdera oferece uma API para manipulação de conteúdo no formato Atom, e é bastante útil para implementações baseadas no Atom Publishing Protocol. Já o Jersey é a implementação de referência da [...]]]></description>
			<content:encoded><![CDATA[<p>Talvez os dois mais promissores projetos atualmente sendo desenvolvidos na área de web services Rest são o <a href="http://incubator.apache.org/abdera/" target="_blank">Apache Abdera</a> e o <a href="https://jersey.dev.java.net/" target="_blank">Jersey</a>. O Apache Abdera oferece uma API para manipulação de conteúdo no formato Atom, e é bastante útil para implementações baseadas no Atom Publishing Protocol. Já o Jersey é a implementação de referência da <a href="http://jcp.org/en/jsr/detail?id=311" target="_blank">JSR-311</a>, que mencionei num <a href="http://brunopereira.org/2008/01/31/jsr-311-java-api-for-restful-web-services/" target="_blank">post recente</a> aqui no blog.</p>
<p>Os 2 projetos são complementares, já que as funcionalidades de ambos não tem muitas interseções. Ontem o Marc Hadley, um dos principais desenvolvedores do Jersey <a href="http://weblogs.java.net/blog/mhadley/archive/2008/02/integrating_jer_2.html" target="_blank">postou</a> sobre um desenvolvimento que ele está fazendo, usando o Jersey e o Abdera em um projeto de web services Restful. No post do Marc Hadley ele menciona que utilizou os recursos HTTP do Jersey (como mapeamento de URIs em classes e métodos e a capacidade de manipular diversos content-types) juntamente com as funcionalidades do Abdera de manipulação de recursos Atom.</p>
<p>Esta iniciativa foi muito bem recebida pelo <a href="http://www.snellspace.com/wp/" target="_blank">James Snell</a> e pelo <a href="http://netzooid.com/blog/" target="_blank">Dan Diephouse </a>(fundador do XFire), que são os principais desenvolvedores do Apache Abdera. O desenvolvimento destes dois projetos vem trazendo enorme amadurecimento aos web services REST e hoje já é possível desenvolver web services neste formato com grande produtividade e poder.</p>
<p>Claro que os projetos ainda estão em um estágio intermediário de desenvolvimento, mas é deles que virá a adoção mainstream com maturidade desta linha de serviços. Estou acompanhando continuamente o que está sendo feito nesta área, e o que já pude ver até agora é fascinante.</p>
<p>A propósito, os dois projetos são open source e os principais envolvidos fazem parte de empresas como a IBM, Sun, Mulesource, entre outras. O desenvolvimento de software open source é hoje em dia a principal forma de desenvolvimento da vanguarda da tecnologia mundial. As empresas já perceberam o sucesso do movimento e estão apoiando firmemente o mesmo. Não posso deixar de registrar minha profunda satisfação com isso. <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/02/06/jersey-meets-abdera/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Atom feeds for enterprise application messaging</title>
		<link>http://brunopereira.org/2008/01/27/atom-feeds-for-enterprise-application-messaging/</link>
		<comments>http://brunopereira.org/2008/01/27/atom-feeds-for-enterprise-application-messaging/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 16:12:59 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[open source]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atom publishing protocol]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[bugzilla]]></category>
		<category><![CDATA[enterprise messaging]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[restful]]></category>
		<category><![CDATA[restful web services]]></category>
		<category><![CDATA[soa]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/?p=75</guid>
		<description><![CDATA[In the last months I have studied and worked a lot with web services in general, and more specifically the RESTful ones. I believe we are going through a fast maturation process in this area, and RESTful web services are becoming the preferred choice for many new implementations. Right in the thick of things in [...]]]></description>
			<content:encoded><![CDATA[<p>In the last months I have studied and worked a lot with web services in general, and more specifically the RESTful ones. I believe we are going through a fast maturation process in this area, and RESTful web services are becoming the preferred choice for many new implementations. Right in the thick of things in this field is the Atom Publishing Protocol. This is the blueprint solution for RESTful web services, and its adoption is growing fast, reaching much broader scope than just blog applications using the <a href="http://en.wikipedia.org/wiki/Atom_(standard)" target="_blank">Atom Format</a>.The Atom format and AtomPub protocol can both be used for many interesting purposes. This year I&#8217;m working on a big refactoring (actually a new implementation) of a widely used <a href="http://www.globo.com" target="_blank">Globo.com</a> application. This application (let&#8217;s call it Register) is responsible for the creation of new users and provisioning new services to them, among other features.</p>
<p>A nice concept present in the original development is the use of Application Connectors. Through these connectors, other applications get notified of events that happened in the Register application. An example is: when a new subscriber (a paying user) is created, a connector sends the notification to another application in order to create the subscriber&#8217;s mailbox in the company&#8217;s external mail provider. Another example is: when a user gets provisioned in the blogging service, another connector sends a notification to the blogger application, that does what it needs in order to create the user&#8217;s directory and quota on the file server.</p>
<p>Although i like this concept, it currently has some problems. This connector&#8217;s invocation is done explicitly by the Register application. The Register application knows that a new subscriber must receive a new mailbox, and it needs to call a given connector to do this. This is my biggest concern with the current implementation. I strongly believe that an application that creates users must not know anything about mailboxes. In the current structure, when a new application ABC must be notified of events in application XYZ, application XYZ must be modified to invoke a new connector. This doesn&#8217;t please me at all. Let me explain a solution that pleases me more <img src='http://brunopereira.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>To explain my idea, I&#8217;ll propose some examples involving Google and its services. As we all know, Google offers several different services, all of which can be accessed using the same Google account. When you register at Google, you receive a mail account. Let&#8217;s suppose that Google Register application sends a new entry to an Atom feed every time a new user is created. This way, every user creation is present on the Atom Feed. If an application (for example Google Mail) needs to be notified of the creation of new users, it just needs to subscribe to the Register&#8217;s Atom feed.</p>
<p>Let me propose a richer example now. Let&#8217;s say Google starts to offer some super cool software development services. If you&#8217;re a developer, you can ask them to give you a &#8220;development account&#8221;. This development account would give you access to a Subversion repository, a Bugzilla project and a MySql database. Each of these would be an independent service offered by them, subject to change at any given time. The activation of &#8220;development accounts&#8221; could also populate an Atom feed.</p>
<p>This way the Subversion, Bugzilla and MySql services could be subscribers of the feed, doing everything they need when a new development account is activated, in asynchronous manner. The application that activates the development account has no knowledge of any other services. If Google wants to offer new services such as a Maven repository or a Continuous Integration environment, no problem. The new services would just subscribe to the Atom feed and do whatever they need when a new account is activated.</p>
<p>If Google wants to offer a free development account and a non-free account with better features, there could be another Atom feed for the activation of the paying accounts or maybe updates to the same existing feed. The Register application would know only about registrations, and other components could be easily plugged and unplugged from this process, without modifications on the Register application. Ah, and worth mentioning&#8230; totally decoupled from any specific platform. I don&#8217;t know how to implement any kind of messaging more decoupled than that.</p>
<p>This is much much better than the way our Register application sends notifications currently. And I&#8217;ll be pretty happy once we manage to do this, it&#8217;ll be so cool!</p>
<p>By the way, these Google&#8217;s software development services would be awesome. My friend <a href="http://neobject.wordpress.com" target="_blank">Bairos</a> kindly provides me Subversion and Trac services, but he doesn&#8217;t have Google&#8217;s bandwidth <img src='http://brunopereira.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Let&#8217;s hope Google gets to know about this and starts offering these services. It&#8217;d be amazing!</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2008/01/27/atom-feeds-for-enterprise-application-messaging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>REST e AtomPub</title>
		<link>http://brunopereira.org/2007/11/26/rest-e-atompub/</link>
		<comments>http://brunopereira.org/2007/11/26/rest-e-atompub/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 17:32:04 +0000</pubDate>
		<dc:creator>blpsilva</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[posts em português]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache abdera]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[atompub]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://blpsilva.wordpress.com/2007/11/26/rest-e-atompub/</guid>
		<description><![CDATA[Este fim de semana estudei mais um pouco de REST e Atom. O Atom Publishing Protocol é um protocolo de publicação de posts e feeds de blogs, que utiliza publicações no formato Atom (uma alternativa mais nova e mais rica do que o RSS)O motivo que me levou a estudar o Atom e o AtomPub [...]]]></description>
			<content:encoded><![CDATA[<p>Este fim de semana estudei mais um pouco de REST e Atom. O Atom Publishing Protocol é um protocolo de publicação de posts e feeds de blogs, que utiliza publicações no formato Atom (uma alternativa mais nova e mais rica do que o RSS)O motivo que me levou a estudar o Atom e o AtomPub é que o AtomPub está começando a ser usado como &#8220;implementação de referência&#8221; de web services REST. Não é que o protocolo do AtomPub em si seja voltado para web services em geral, mas ele é uma implementação muito inteligente e eficiente de web services REST para publicação em blogs, e então as idéias aplicadas para este tipo de aplicação estão começando a ser utilizadas de uma forma mais geral.</p>
<p>Embora não seja a mesma coisa, de certa forma podemos dizer que o AtomPub está para os web services REST assim como um framework como o Struts está para o desenvolvimento web. A comparação não é tão boa porque o AtomPub ainda é mais uma &#8220;inspiração&#8221; de implementação, um exemplo bem-sucedido de web services REST, enquanto o Struts é um framework para desenvolvimento web, no qual muitas aplicações estão baseadas e foram construídas por cima.</p>
<p>O AtomPub chega em ótimo momento, pois os web services REST vêm se firmando como uma ótima opção de implementação em boa parte dos casos, comparando com SOAP. Entretanto, REST é apenas um estilo de arquitetura, que permite uma enorme flexibilidade em termos de implementação. Como as idéias propostas pela arquitetura REST são abstratas em alguns aspectos, analisar como o AtomPub foi implementado é muito interessante e esclarecedor.</p>
<p>Um projeto open source que oferece uma API para criar, editar, ler e remover posts e feeds no formato Atom utilizando o Atom Publishing Protocol é o Apache Abdera. Este projeto ainda está incubado na Apache e ainda não está nem em beta, mas as releases atuais de desenvolvimento já permitem fazer algumas coisas interessantes e o projeto promete crescer, pois o Mule já está o utilizando como componente para implementação de web services REST no ESB deles.</p>
<p>Eu já consegui fazer uns exemplos legais com o Abdera, publicando através da API deles uns posts no blogger do Google e criando eventos no Google Calendar. Ainda estou estudando e conhecendo melhor o AtomPub, e o Abdera, mas tenho certeza de que veremos coisas boas daí, e penso que este é o caminho mais promissor de web services atualmente. Can&#8217;t wait to get to know it even better!</p>
<p>Quando souber de mais coisas interessantes nesse assunto, publicarei aqui!</p>
]]></content:encoded>
			<wfw:commentRss>http://brunopereira.org/2007/11/26/rest-e-atompub/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

