<?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>mcorp. &#187; framework</title>
	<atom:link href="http://www.mcorp.com.br/tag/framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mcorp.com.br</link>
	<description>tecnologia e informações inúteis de utilidade pública</description>
	<lastBuildDate>Mon, 14 Nov 2011 15:10:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Instalando o WSO2 Web Services Framework for PHP (2.0.0)</title>
		<link>http://www.mcorp.com.br/2010/04/instalando-o-wso2-web-services-framework-for-php-2-0-0/</link>
		<comments>http://www.mcorp.com.br/2010/04/instalando-o-wso2-web-services-framework-for-php-2-0-0/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 00:47:45 +0000</pubDate>
		<dc:creator>Leonardo Saraiva</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[dll]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[libxml2]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nusoap]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[wsf]]></category>
		<category><![CDATA[wso2]]></category>

		<guid isPermaLink="false">http://www.mcorp.com.br/?p=372</guid>
		<description><![CDATA[Como eu disse anteriormente, em Consumindo um serviço seguro utilizando PHP, vou mostrar uma das maneiras para instalar o framework que o pessoal do WSO2 disponibiliza para criação e consumo de serviços em PHP, conhecido como: WSO2 Web Services Framework &#8230; <a href="http://www.mcorp.com.br/2010/04/instalando-o-wso2-web-services-framework-for-php-2-0-0/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-378" title="WSO2 Web Services Framework for PHP" src="http://www.mcorp.com.br/wp-content/uploads/2010/04/wsf-php.gif" alt="" width="249" height="23" />Como eu disse anteriormente, em <a href="http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/" target="_blank">Consumindo um serviço seguro utilizando PHP</a>, vou mostrar uma das maneiras para instalar o framework que o pessoal do WSO2 disponibiliza para criação e consumo de serviços em PHP, conhecido como: <a href="http://wso2.org/downloads/wsf/php" target="_blank">WSO2 Web Services Framework <em>for PHP</em></a>.</p>
<p>Na página de <a href="http://wso2.org/downloads/wsf/php" target="_blank">downloads do WSO2 Web Services Framework <em>for PHP</em></a>, é possível escolher entre 3 opções de instalação, então exemplificar a fundo apenas uma e colocar uma breve descrição das outras.</p>
<h2>Binary Distribution</h2>
<p>É o framework já compilado e com a DLL dentro que serve para as pessoas que a utilizarão em ambientes Windows, não terá muito trabalho, apenas colocar a DLL na pasta correta e configurar o seu <em>php.ini</em>. Essa é a opção mais prática &#8211; na minha opinião &#8211; para Windows (deixarei essa para uma próxima, não tenho ambiente para isso &#8211; ainda).</p>
<h2>PECL Distribution</h2>
<p>Em teoria é a mais fácil de todas. Mas por que &#8220;em teoria&#8221;? Passei dois dias realizando diversas configurações na minha máquina para que isso funcionasse corretamente, perguntei no <a href="http://wso2.org/forum/thread/9553" target="_blank">fórum</a> se alguém poderia me ajudar a solucionar, mas desisti. Parti para a maneira &#8220;clássica&#8221;, o famoso <a href="/glossario/#CMM">CMM</a>, que descrevo abaixo.</p>
<h2>Source Distribution</h2>
<p>Essa versão é o <a href="https://wso2.org/repos/wso2/trunk/wsf/php/" target="_blank">código-fonte do WSO2 Web Services Framework <em>for PHP</em></a> (aberto, hein!) e aqui temos duas opções de download, com apenas uma diferença mínima: o compactador. Uma foi compactada utilizando ZIP e outra TAR/GZ. E ambas será necessário compilação, com os bons e velhos comandos: <em>./configure</em>, <em>make &amp;&amp; make install</em>.</p>
<p>Mas, chega de papo, vamos por a mão na &#8220;massa&#8221;.</p>
<h3>Instalando as dependências</h3>
<p>As dependências para funcionamento do framework, não são muitas:</p>
<ul>
<li><a href="http://wso2.org/downloads/wsf/c" target="_blank">WSO2 Web Services Framework <em>for C</em></a></li>
<li>PHP 5.1.1 ou superior</li>
<li>Bibliotecas libxml2 e OpenSSL</li>
</ul>
<h3>WSO2 Web Services Framework <em>for C</em></h3>
<p>Para quem tá acostumado, são os velhos conhecidos, bastando baixar a última versão (no meu caso a 2.0.0):</p>
<pre class="brush: shell">wget http://dist.wso2.org/products/wsf/c/2.0.0/wso2-wsf-c-src-2.0.0.tar.gz
tar xfvz wso2-wsf-c-src-2.0.0.tar.gz
cd wso2-wsf-c-src-2.0.0
./configure
make
sudo make install</pre>
<h3>PHP 5.1.1 ou superior</h3>
<p>Não vou entrar nos méritos de instalação do PHP, pois imagino que isso esteja mais do que documentado na internet por aí a fora (para os preguiçosos &#8211; google: <a href="http://www.google.com.br/#hl=pt-BR&amp;source=hp&amp;q=instala%C3%A7%C3%A3o+do+php+no+ubuntu&amp;btnG=Pesquisa+Google&amp;meta=&amp;aq=f&amp;aqi=&amp;aql=&amp;oq=instala%C3%A7%C3%A3o+do+php+no+ubuntu&amp;gs_rfai=&amp;fp=fbe0f18c81cbb156" target="_blank">instalação do php no ubuntu</a>).</p>
<h3>Bibliotecas libxml2 e OpenSSL</h3>
<p>O comando para instalar as dependências é:</p>
<pre class="brush: shell">sudo apt-get install libxml2 openssl</pre>
<p>E com todas as dependências já instaladas e funcionando, podemos utilizar um <em>phpinfo()</em>; para conferir:</p>
<p style="text-align: center;"><a href="http://www.mcorp.com.br/wp-content/uploads/2010/04/config-php-libxml2-openssl.png" rel="lightbox[372]"><img class="alignnone size-medium wp-image-376" title="config-php-libxml2-openssl" src="http://www.mcorp.com.br/wp-content/uploads/2010/04/config-php-libxml2-openssl-300x187.png" alt="" width="300" height="187" /></a></p>
<h3>Compilação do WSF/PHP</h3>
<h4>CMM</h4>
<p>E agora, a instalação propriamente dita, utilizando novamente os pacotes da versão 2.0.0:</p>
<pre class="brush: shell">wget http://dist.wso2.org/products/wsf/php/2.0.0/wso2-wsf-php-src-2.0.0.tar.gz
./configure
make
sudo make install</pre>
<h4>1, 2, 3, testando&#8230;</h4>
<p>Estamos quase chegando lá&#8230;</p>
<p>Vamos copiar dois arquivos do diretório <em>samples</em> (um cliente e um servidor) para o diretório do servidor web (no meu caso: <em>/var/www/samples</em>) e ver se tudo funcionou:</p>
<pre class="brush: shell">sudo mkdir -p /var/www/samples/
sudo cp samples/math_* /var/www/samples/.</pre>
<p>Indo ao navegador, basta abrir o endereço <a href="http://localhost/samples/math_client.php" target="_blank">http://localhost/samples/math_client.php</a> e conferir tudo funcionando:</p>
<p style="text-align: center;"><a href="http://www.mcorp.com.br/wp-content/uploads/2010/04/wsf-php-sample-math.png" rel="lightbox[372]"><img class="size-medium wp-image-386" title="WSO2 Web Services Framework for PHP: sample math running" src="http://www.mcorp.com.br/wp-content/uploads/2010/04/wsf-php-sample-math-300x176.png" alt="" width="300" height="176" /></a></p>
<h3>Conclusão</h3>
<p>Ainda não consigo avaliar até onde é válido ou interessante utilizar esse framework, não pesquisei a fundo ainda o funcionamento e as vantagens dele sobre as implementações como <a href="http://www.php.net/soap" target="_blank">SOAP</a> (nativa do PHP) <a href="http://nusoap.sourceforge.net/" target="_blank">NuSOAP</a>.</p>
<p>Mas o fato de ser uma instalação que não pode ser feita em &#8220;qualquer&#8221; servidor, ainda mais no Brasil onde as empresas de hospedagens normalmente não instalam extensões de terceiros e o preço para ter um servidor próprio não é tão acessível, pode acabar ficando inviável.</p>
<p>Realizarei testes mais profundos para verificar as verdadeiras vantagens dessa abordagem na implementação dos serviços, só que &#8211; novamente &#8211; ficará para um outro post.</p>
<h3  class="related_post_title">Posts relacionados</h3><ul class="related_post"><li><a href="http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/" title="Consumindo um serviço seguro utilizando PHP">Consumindo um serviço seguro utilizando PHP</a></li><li><a href="http://www.mcorp.com.br/2010/06/compilando-o-wso2-carbon-3-0-0-e-corrigindo-o-wso2-data-services-server-2-5-0/" title="Compilando o WSO2 Carbon 3.0.0 e corrigindo o WSO2 Data  Services Server 2.5.0">Compilando o WSO2 Carbon 3.0.0 e corrigindo o WSO2 Data  Services Server 2.5.0</a></li><li><a href="http://www.mcorp.com.br/2009/12/instalando-wso2-enterprise-service-bus-eclipse-tools-no-ubuntu-karmic-koala-9-10/" title="Instalando WSO2 Enterprise Service Bus Eclipse Tools no Ubuntu Karmic Koala (9.10)">Instalando WSO2 Enterprise Service Bus Eclipse Tools no Ubuntu Karmic Koala (9.10)</a></li><li><a href="http://www.mcorp.com.br/2011/11/wso2-soa-workshop-em-sao-paulo/" title="WSO2: SOA Workshop em São Paulo">WSO2: SOA Workshop em São Paulo</a></li><li><a href="http://www.mcorp.com.br/2011/10/soap-vs-rest/" title="SOAP vs REST">SOAP vs REST</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.mcorp.com.br/2010/04/instalando-o-wso2-web-services-framework-for-php-2-0-0/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Consumindo um serviço seguro utilizando PHP</title>
		<link>http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/</link>
		<comments>http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 23:03:58 +0000</pubDate>
		<dc:creator>Leonardo Saraiva</dc:creator>
				<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[data services]]></category>
		<category><![CDATA[dss]]></category>
		<category><![CDATA[esb]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ws-security]]></category>
		<category><![CDATA[wso2]]></category>

		<guid isPermaLink="false">http://www.mcorp.com.br/?p=256</guid>
		<description><![CDATA[Dia desses precisei colocar autenticação em um serviço que desenvolvi e passeando pelas opções da interface administrativa da WSO2 Enterprise Service Bus encontrei facilmente minha solução. Um pouco depois, li no twitter do @WSO2 um comentário sobre um novo artigo &#8230; <a href="http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dia desses precisei colocar autenticação em um serviço que desenvolvi e passeando pelas opções da interface administrativa da <a href="http://wso2.org/downloads/esb" target="_blank">WSO2 Enterprise Service Bus</a> encontrei facilmente minha solução. Um pouco depois, li no twitter do @<a href="http://twitter.com/wso2" target="_blank">WSO2</a> um comentário sobre um novo artigo publicado sobre segurança nos <a href="/glossario/#DataServices">Data Services</a>, onde ensinava a fazer toda a parte de configuração: <a href="http://wso2.org/library/articles/content-filtering-data-services-user-roles" target="_blank">Content Filtering in Data Services with User Roles</a>.</p>
<p>Só que pouco tempo depois de configurar e entregar ao cliente o serviço, veio o problema: como consumir em <a href="http://www.php.net/" target="_blank">PHP</a> o serviço? No artigo a solução entregue por eles para consumo é em <a href="http://java.sun.com/" target="_blank">Java</a>, como a capacidade do cliente deixa a desejar, fiquei de fazer e enviar um exemplo de consumo do serviço desenvolvido.</p>
<p>Então&#8230; mãos na massa!</p>
<h2>Configurando a ESB</h2>
<p>Nesse ponto não irei escrever passo-a-passo a configuração que deve ser feita, o trabalho realizado pelo pessoal do WSO2 está muito bem feito nessa parte do artigo: <a href="http://wso2.org/library/articles/content-filtering-data-services-user-roles#step_4" target="_blank">Step 4 – Enable User Authentication for the Data Service</a>.</p>
<h2>Consumo sem segurança</h2>
<p>Um pequeno trecho de PHP que mostra como consumir o serviço sem nenhum tipo de segurança. Código pequeno, limpo e objetivo.</p>
<pre class="brush: php">
$client = new SoapClient(&quot;http://localhost:8280/services/Tutorial?wsdl&quot;);
try {
$obj = $client-&gt;searchProductsByGroupId(array(&quot;group_id&quot; =&gt; 1));
print_r($obj);

} catch (Exception $e) {
echo &quot;ERRO: &quot; . $e-&gt;getMessage();
}</pre>
<p>Mas mesmo com toda essa objetividade, o problema do cliente não estava resolvido e eu recebia o seguinte erro:</p>
<pre class="brush: php">ERRO: SOAP header missing</pre>
<p>E, para resolver, faltava adicionar o cabeçalho com os dados de segurança.</p>
<h2>Consumo com segurança</h2>
<p>Agora um não-tão-pequeno trecho em PHP.</p>
<pre class="brush: php">// configurações de conexão
$username = &quot;admin&quot;;
$password = &quot;admin&quot;;
$created = date (&quot;Y-m-d\TH:i:s&quot;, mktime (date(&quot;H&quot;), date(&quot;i&quot;), date(&quot;s&quot;), date(&quot;m&quot;), date(&quot;d&quot;), date(&quot;Y&quot;))).&quot;Z&quot;;

// definição de namespaces
$ns = &#039;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&#039;;
$wsu = &#039;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&#039;;

// criando elemento UsernameToken
$token = new stdClass;
$token-&gt;Username = new SOAPVar($username, XSD_STRING, null, null, null, $ns);
$token-&gt;Password = new SOAPVar($password, XSD_STRING, null, null, null, $ns);

// criando elemento Timestamp
$timestamp = new stdClass;
$timestamp-&gt;Created = new SOAPVar($created, XSD_STRING, null, null, null, $wsu);

// criando elemento Security
$wsec = new stdClass;
$wsec-&gt;UsernameToken = new SoapVar($token,     SOAP_ENC_OBJECT, null, null, null, $ns);
$wsec-&gt;Timestamp     = new SoapVar($timestamp, SOAP_ENC_OBJECT, null, null, null, $wsu);

// criando header
$headers = new SOAPHeader($ns, &#039;Security&#039;, $wsec);

// construtor do web-service (com cabeçalho) passando o endereço do WSDL
$client = new SoapClient(&quot;http://localhost:8280/services/Tutorial?wsdl&quot;);
$client-&gt;__setSOAPHeaders($headers);

// chamada do método
try {
$obj = $client-&gt;searchProductsByGroupId(array(&quot;group_id&quot; =&gt; 1));
print_r($obj);

} catch (Exception $e) {
echo &quot;ERRO: &quot; . $e-&gt;getMessage();
}</pre>
<p>E tudo rodou normalmente, sem problemas, o cliente ficou feliz e eu matei um pouco da saudade de programar em PHP.</p>
<p>Na pesquisa por soluções, tentei utilizar o <a href="http://wso2.org/projects/wsf/php" target="_blank">WSO2 Web Services Framework <em>for PHP</em></a> mas descobri que depende de instalação de módulo no <a href="http://httpd.apache.org" target="_blank">Apache</a> e não servia para meu cliente, mas anotei na pauta para testá-lo em outro momento.</p>
<h3  class="related_post_title">Posts relacionados</h3><ul class="related_post"><li><a href="http://www.mcorp.com.br/2011/06/novidades-wso2-data-services-server-2-6-x/" title="Novidades WSO2 Data Services Server (2.6.x)">Novidades WSO2 Data Services Server (2.6.x)</a></li><li><a href="http://www.mcorp.com.br/2011/02/seguranca-de-informacoes-atraves-de-filtragem-de-dados-no-wso2-data-services/" title=" Segurança de informações através de filtragem de dados no WSO2 Data Services"> Segurança de informações através de filtragem de dados no WSO2 Data Services</a></li><li><a href="http://www.mcorp.com.br/2010/06/compilando-o-wso2-carbon-3-0-0-e-corrigindo-o-wso2-data-services-server-2-5-0/" title="Compilando o WSO2 Carbon 3.0.0 e corrigindo o WSO2 Data  Services Server 2.5.0">Compilando o WSO2 Carbon 3.0.0 e corrigindo o WSO2 Data  Services Server 2.5.0</a></li><li><a href="http://www.mcorp.com.br/2009/11/novidades-nos-lancamentos-nov2009-da-plataforma-wso2/" title="Novidades nos lançamentos (nov/2009) da plataforma WSO2">Novidades nos lançamentos (nov/2009) da plataforma WSO2</a></li><li><a href="http://www.mcorp.com.br/2009/11/wso2-e-a-quinta-feira-agitada-muitos-lancamentos/" title="WSO2 e a quinta-feira agitada: muitos lançamentos">WSO2 e a quinta-feira agitada: muitos lançamentos</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.mcorp.com.br/2010/03/consumindo-um-servico-seguro-utilizando-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

