<?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>Matheus Bratfisch &#187; servidor</title>
	<atom:link href="http://www.matbra.com/tag/servidor/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.matbra.com</link>
	<description>&#34;Cogito ergo sum&#34;</description>
	<lastBuildDate>Tue, 20 Dec 2011 00:03:21 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Enviar arquivos via XML-RPC em Java.</title>
		<link>http://www.matbra.com/2009/09/17/enviar-arquivos-via-xml-rpc-em-java/</link>
		<comments>http://www.matbra.com/2009/09/17/enviar-arquivos-via-xml-rpc-em-java/#comments</comments>
		<pubDate>Thu, 17 Sep 2009 22:23:04 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[cliente]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=496</guid>
		<description><![CDATA[Olá, Hoje o Jorge me perguntou se eu sabia como enviar arquivos via XML-RPC. Pensando no assunto não me recordava como devia ser feito, resolvi dar uma rápida pesquisada para ensina-lo. Acabei me entretendo e resolvi modificar o Cliente e Servidor Java XML-RPC para fazer o mesmo. Implementei o mesmo e não foi complexo só [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Hoje o Jorge me perguntou se eu sabia como enviar arquivos via XML-RPC. Pensando no assunto não me recordava como devia ser feito, resolvi dar uma rápida pesquisada para ensina-lo. Acabei me entretendo e resolvi modificar o <a href="http://www.matbra.com/2009/05/16/cliente-e-servidor-java-xml-rpc/">Cliente e Servidor Java XML-RPC</a> para fazer o mesmo. </p>
<p>Implementei o mesmo e não foi complexo só olhei a documentação do <a href="http://ws.apache.org/xmlrpc/types.html" target="_blank">Apache XML-RPC</a> para ver como eram enviados bytes. Os mesmos eram enviados codificando o array de bytes (byte[]) em Base64. Pesquisei um pouco como fazer isso e achei uma <a href="http://iharder.net/current/java/base64/" target="_blank">Biblioteca Java de Base64 em dominio publico</a>. Também procurei por como <a href="http://www.java-tips.org/java-se-tips/java.io/reading-a-file-into-a-byte-array.html" target="_blank">pegar o array de bytes de um arquivo</a> e como <a href="http://www.velocityreviews.com/forums/t388750-write-byte-to-file.html" target="_blank">criar um novo arquivo apartir de um array de bytes</a> (byte[]). </p>
<p>Esses sites onde peguei ambos os métodos estão como comentarios no arquivo. </p>
<p><a href='http://www.matbra.com/2009/09/17/enviar-arquivos-via-xml-rpc-em-java/xml-rpc-transferencia-de-arquivo/' rel='attachment wp-att-497'>XML-RPC-Transferencia-De-Arquivo</a></p>
<p>Espero que seja útil,<br />
Matheus</p>
<p>PS: Da maneira como eu implementei qualquer arquivo do sistema que o Cliente XML-RPC pedir o Servidor irá enviar, isso criaria uma possivel brecha de segurança. </p>
<p>PS2: Caso deseja que o Cliente envie arquivos para o Servidor, o Cliente deve pegar o array de bytes do Arquivo, codifica-lo em base64 e passa-lo como parametro. O Servidor irá receber este parametro, decodificar após isso manipu-le o array de bytes como você desejar. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/09/17/enviar-arquivos-via-xml-rpc-em-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compartilhar internet com servidor na porta WAN.</title>
		<link>http://www.matbra.com/2009/05/26/compartilhar-internet-com-servidor-na-porta-wan/</link>
		<comments>http://www.matbra.com/2009/05/26/compartilhar-internet-com-servidor-na-porta-wan/#comments</comments>
		<pubDate>Tue, 26 May 2009 21:01:41 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[compartilhar]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[lan]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[roteador]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[wan]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=278</guid>
		<description><![CDATA[Boa tarde, Os ultimos dias passei instalando o servidor e com uns problemas para configurar o mesmo. Eu sabia como configurar a rede para funcionar da seguinte maneira: MODEM -> (eth0) Servidor (eth1) -> (Porta lan) Router (Portas lan) -> Computadores Porém não era essa topologia que eu desejava, pois com está eu perdia a [...]]]></description>
			<content:encoded><![CDATA[<p>Boa tarde, </p>
<p>Os ultimos dias passei instalando o servidor e com uns problemas para configurar o mesmo. Eu sabia como configurar a rede para funcionar da seguinte maneira: </p>
<blockquote><p>MODEM -> (eth0) Servidor (eth1) -> (Porta lan) Router (Portas lan) -> Computadores</p></blockquote>
<p>Porém não era essa topologia que eu desejava, pois com está eu perdia a porta WAN do meu roteador. Então decidi fazer a seguinte:</p>
<blockquote><p>MODEM -> (eth0) Servidor (eth1) -> (Porta WAN) Router (Portas LAN) -> Computadores</p></blockquote>
<p>Inicialmente, deixei meu servidor ligado somente ao modem e testei se o mesmo conseguia pingar a internet. Até o momento tudo ok. </p>
<p>Acessei o arquivo &#8220;/etc/network/interfaces&#8221;  e configurei a eth1 manualmente da seguinte maneira:</p>
<blockquote><p>auto eth1<br />
iface eth1 inet static<br />
address 192.168.100.254<br />
netmask 255.255.255.0<br />
network 192.168.100.0<br />
broadcast 192.168.100.255</p></blockquote>
<p>Logo em seguida adicionei as regras de iptables:</p>
<blockquote><p>sysctl net.ipv4.ip_forward=1<br />
iptables -t nat -A POSTROUTING &#8211;out-interface eth0 -j MASQUERADE<br />
iptables -A FORWARD &#8211;in-interface eth0 -j ACCEPT</p></blockquote>
<p>Teoricamente o compartilhamento de internet já devia estar funcionando. Mas não foi isso que aconteceu. Resolvi acessar o meu Roteador pela Lan e configura-lo manualmente da seguinte maneira: </p>
<blockquote><p>IP Address : 192.168.100.1<br />
Subnet Mask : 255.255.255.0<br />
ISP Gateway Address : 192.168.100.254<br />
Primary DNS Address : 200.247.141.11 (DNS VIRTUA SC)<br />
Secondary DNS Address : 200.247.141.12 (DNS VIRTUA SC)</p></blockquote>
<p>Salvei as modificações, esperei o mesmo ser reiniciado e pronto. Conexão funcionando. </p>
<p>Eu sei que isso não ficou como um tutorial, ficou um &#8220;relato&#8221; mas este relato pode lhe ajudar a configurar se você seguir os mesmos passos que eu. Lembre-se também que as regras de iptables devem ser executadas sempre na inicialização do servidor. <a href="http://www.matbra.com/2009/05/19/executar-script-ao-iniciar-computador/">Saiba mais sobre Executar scripts ao iniciar computador</a>. </p>
<p>Demorei bastante tempo e testei várias configurações para que conseguisse tudo funcionando mas acredito que o meu maior problema foi ter usado a mesma Classe de IPS para a rede interna (atrás do roteador) e a &#8220;externa&#8221; (comunicação entre o roteador e servidor). </p>
<p>Qualquer problema com Compartilhamento ou coisas do tipo, não hesite em perguntar.</p>
<p>Espero que este artigo seja de grande ajuda,<br />
Matheus</p>
<p>Agradecimentos ao <a href="http://ubuntuforum-br.org/index.php/topic,51113.0.html" target="_blank">Ubuntu Forum</a> que me deu uma ajuda.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/05/26/compartilhar-internet-com-servidor-na-porta-wan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cliente e Servidor, Java XML-RPC</title>
		<link>http://www.matbra.com/2009/05/16/cliente-e-servidor-java-xml-rpc/</link>
		<comments>http://www.matbra.com/2009/05/16/cliente-e-servidor-java-xml-rpc/#comments</comments>
		<pubDate>Sat, 16 May 2009 03:42:14 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[cliente]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[xmlrpc]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=245</guid>
		<description><![CDATA[Boa noite, Como havia comentado a algum tempo atrás, estava trabalhando com um cliente XML-RPC em Java, durante a fase de desenvolvimento do mesmo tive que criar um servidor XML-RPC hipotetico para testar as funcionalidades do cliente, enquanto o servidor certo ainda não estava disponivel para minha pessoa. Resumidamente para você que não conhece XML-RPC [...]]]></description>
			<content:encoded><![CDATA[<p>Boa noite, </p>
<p>Como havia comentado a algum tempo atrás, estava trabalhando com um cliente XML-RPC em Java, durante a fase de desenvolvimento do mesmo tive que criar um servidor XML-RPC hipotetico para testar as funcionalidades do cliente, enquanto o servidor certo ainda não estava disponivel para minha pessoa.</p>
<p>Resumidamente para você que não conhece XML-RPC ele é um &#8220;formato&#8221; , um &#8220;jeito&#8221;, não sei ao certo a palavra certa para definir agora, onde você cria um servidor e o mesmo quando requisitado faz as operações necessarias e retorna um resultado. Um exemplo seria, você tem um código de criptografia que funciona MUITO bem em C, mas seu sistema é todo em Java, você poderia criar um Cliente JAVA e um Servidor C onde o Java faria requisição para Criptografar as coisas. Talvez utilizar XML-RPC de Java para Java possa ser meio estranho, mas quando os serviços estão distantes, pode ser algo util. </p>
<p>Para começar a mexer com o XML-RPC no Java eu utilizei o <a href="http://www.apache.org/dyn/closer.cgi/ws/xmlrpc/" target="_blank">apache xml-rpc</a>. Após isso apenas desenvolvi.</p>
<p>Baixe os <a href="http://www.matbra.com/?attachment_id=247">exemplos cliente e servidor xml-rpc em java</a>.</p>
<p>Servidor: </p>
<blockquote><p>package xmlrpc;</p>
<p>import org.apache.xmlrpc.server.PropertyHandlerMapping;<br />
import org.apache.xmlrpc.server.XmlRpcServer;<br />
import org.apache.xmlrpc.webserver.WebServer;</p>
<p>public class ServidorXMLRPCParaTestes {</p>
<p>	private static ServidorXMLRPCParaTestes euMesmo = null;</p>
<p>	private ServidorXMLRPCParaTestes() {<br />
		try {<br />
			WebServer server = new WebServer(8185); // Cria um servidor na porta 8185<br />
			XmlRpcServer servidor = server.getXmlRpcServer(); // Pega o servidor XmlRpc<br />
			PropertyHandlerMapping phm = new PropertyHandlerMapping();<br />
			phm.addHandler(&#8220;Calc&#8221;, Calculadora.class); // Adiciona um novo &#8220;handler&#8221; ao PHM<br />
			servidor.setHandlerMapping(phm); // Define o handler no servidor<br />
			server.start(); // inicia o servidor.<br />
		} catch (Exception exception) {<br />
			System.err.println(&#8220;JavaServer: &#8221; + exception);<br />
		}<br />
	}</p>
<p>	public static ServidorXMLRPCParaTestes obterInstÃ¢ncia() {<br />
		if (euMesmo == null)<br />
			euMesmo = new ServidorXMLRPCParaTestes();<br />
		return euMesmo;<br />
	}<br />
}
</p></blockquote>
<p>- Eu utilizeo o obterInstancia para não poder existir mais de um ServidorXMLRPC <img src='http://www.matbra.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
- O handler faz o seguinte, quando for chamado Calc.METODO no servidor ele irá buscar dentro do Calculadora.class </p>
<p><span id="more-245"></span></p>
<p>Handler Calculadora: </p>
<blockquote><p>package xmlrpc;</p>
<p>public class Calculadora {</p>
<p>	public int soma(int x, int y) {<br />
		return x + y;<br />
	}<br />
	public int subtracao(int x, int y) {<br />
		return x &#8211; y;<br />
	}</p>
<p>}</p></blockquote>
<p>Cliente XML-RPC generico:</p>
<blockquote><p>package xmlrpc;</p>
<p>import java.net.URL;<br />
import org.apache.xmlrpc.*;<br />
import org.apache.xmlrpc.client.XmlRpcClient;<br />
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;</p>
<p>public class ClienteXmlRpc {</p>
<p>	private static final String urlServidor = &#8220;http://localhost:8185&#8243;; //DEFINE A URL DO SERVIDOR<br />
	private XmlRpcClient xmlrpc;</p>
<p>    public ClienteXmlRpc() {<br />
    	try {<br />
    		XmlRpcClientConfigImpl configuraÃ§Ã£oCliente = new XmlRpcClientConfigImpl();<br />
    		configuraÃ§Ã£oCliente.setServerURL(new URL(urlServidor)); </p>
<p>    		xmlrpc = new XmlRpcClient();<br />
    		xmlrpc.setConfig(configuraÃ§Ã£oCliente);</p>
<p>    	} catch (Exception exception) {<br />
    		exception.printStackTrace();<br />
    	}<br />
    }</p>
<p>    public Object executar(String comando, Object[] parametros) {<br />
    	try {<br />
			Object resposta = xmlrpc.execute(comando, parametros);<br />
			return resposta;<br />
		} catch (XmlRpcException e) {<br />
			e.printStackTrace();<br />
			return null;<br />
		}<br />
    }</p>
<p>}</p></blockquote>
<p>- Acredito que o Cliente XML-RPC e o Cliente são auto-explicativos. Qualquer duvida entre em contato. </p>
<p>CalculadoraCliente: </p>
<blockquote><p>package cliente;</p>
<p>import xmlrpc.ClienteXmlRpc;</p>
<p>public class CalculadoraCliente {<br />
	private ClienteXmlRpc cliente;</p>
<p>	public CalculadoraCliente() {<br />
		cliente = new ClienteXmlRpc();<br />
	}</p>
<p>	public int soma(int x, int y) {<br />
		Object[] parametros = new Object[]{new Integer(x), new Integer(y)};<br />
		Integer resultado = (Integer) cliente.executar(&#8220;Calc.soma&#8221;, parametros);<br />
		return resultado;<br />
	}</p>
<p>	public int subtracao(int x, int y) {<br />
		Object[] parametros = new Object[]{new Integer(x), new Integer(y)};<br />
		Integer resultado = (Integer) cliente.executar(&#8220;Calc.subtracao&#8221;, parametros);<br />
		return resultado;<br />
	}<br />
}
</p></blockquote>
<p>Para rodar os mesmos e testar gerei 2 classes com main e executei as mesmas (executando primeiro o servidor é claro)</p>
<p>RodarServidor:</p>
<blockquote><p>import xmlrpc.ServidorXMLRPCParaTestes;</p>
<p>public class RodarServidor {</p>
<p>	/**<br />
	 * @param args<br />
	 */<br />
	public static void main(String[] args) {<br />
		// TODO Auto-generated method stub<br />
		ServidorXMLRPCParaTestes Servidor = ServidorXMLRPCParaTestes.obterInstÃ¢ncia();<br />
	}</p>
<p>}
</p></blockquote>
<p>RequisicaoCliente:</p>
<blockquote><p>import cliente.CalculadoraCliente;</p>
<p>public class RequisicaoCliente {</p>
<p>	/**<br />
	 * @param args<br />
	 */<br />
	public static void main(String[] args) {<br />
		CalculadoraCliente x = new CalculadoraCliente();<br />
		System.out.println(x.soma(1, 1));<br />
	}</p>
<p>}
</p></blockquote>
<p>Abraços,<br />
Matheus</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/05/16/cliente-e-servidor-java-xml-rpc/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

