<?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; java</title>
	<atom:link href="http://www.matbra.com/tag/java/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>Um exemplo da utilização de CORBA</title>
		<link>http://www.matbra.com/2010/09/21/um-exemplo-da-utilizacao-de-corba/</link>
		<comments>http://www.matbra.com/2010/09/21/um-exemplo-da-utilizacao-de-corba/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 22:46:54 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[CORBA]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=925</guid>
		<description><![CDATA[Olá, CORBA (Common Object Request Broker Architecture) é um padrão definido pelo grupo OMG (Object Management Group), este permite a interação entre Objetos Distribuídos, em diferentes linguagens e sistemas. Ele também proporciona total transparência na comunicação entre os objetos distribuídos. A localização de objetos é feito via suas referências, que são resolvidas pelo ORB. A [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>CORBA (Common Object Request Broker Architecture) é um padrão definido pelo grupo OMG (Object Management Group), este permite a interação entre Objetos Distribuídos, em diferentes linguagens e sistemas.  Ele também proporciona total transparência na comunicação entre os objetos distribuídos. A localização de objetos é feito via suas referências, que são resolvidas pelo ORB. A linguagem IDL (Interface Definition Language) é a tecnologia utilizada para descrever as interfaces dos objetos. Esta é uma linguagem puramente declarativa. Ela possui seus próprios tipos de dados, que são mapeados para tipos de dados nas linguagens suportadas. Existe o Compilador IDL que gera os códigos responsáveis pela comunicação entre objetos, mapeia os tipos de dados, se encarrega de fazer a serialização dos dados. </p>
<p>Mas na prática como funciona? Bom, possuimos as definições em um arquivo .idl, neste caso o arquivo <a href='http://www.matbra.com/wp-content/uploads/Bank-idl.txt'>Bank-idl</a> (lembre-se de renomea-lo para bank.idl).</p>
<p><span id="more-925"></span></p>
<p>Acessando esse arquivo vocês verão diversas definições como: </p>
<p>Definição do modulo</p>
<blockquote><p>
module banco {
</p></blockquote>
<p>Definição do tipo valor</p>
<blockquote><p>  typedef double valor; </p></blockquote>
<p>  Definição da estrutura de dados Transação</p>
<blockquote><p>struct transacao {<br />
    unsigned long data; // Formato: ddmmyyyy<br />
    string<12>    descricao;<br />
    valor         quantia;<br />
  };</p></blockquote>
<p>Definição da interface, seus métodos, variaveis, excessões</p>
<blockquote><p>interface auto_atendimento {<br />
    readonly attribute string boas_vindas;<br />
    valor saldo ( in conta c )<br />
    raises ( conta_inval );<br />
   void extrato ( in conta c,<br />
    out transacoes t, out valor saldo )<br />
    raises ( conta_inval );<br />
    void transferencia ( in conta origem,<br />
    in conta destino, in valor v )<br />
    raises ( conta_inval, saldo_insuf );<br />
    void investimento ( in conta c,<br />
    in aplicacao apl, in valor v )<br />
    raises ( conta_inval, saldo_insuf );<br />
  };</p></blockquote>
<p>Com este arquivo, você pode criar as diversas interfaces com diferentes compiladores para diferentes linguagens. Para gerar as interfaces utilize </p>
<blockquote><p>idlj -fall bank.idl</p></blockquote>
<p>O mesmo irá gerar diversos arquivos dentro da pasta banco, com arquivos .java, com interfaces, métodos e exceções. Os mesmos devem ser ainda implementados para funcionar como você desejar. </p>
<p><a href='http://www.matbra.com/wp-content/uploads/CORBA.tar.gz'>Um exemplo de implementação de um Servidor de Banco e um Cliente em Java, utilizando CORBA com IDL</a></p>
<p>Matheus</p>
<p>PS: Isto foi apenas uma breve introdução. O CORBA utiliza diversas outras definições como o OMA e outras.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2010/09/21/um-exemplo-da-utilizacao-de-corba/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>MD5 &#8220;Decrypter&#8221;, Java</title>
		<link>http://www.matbra.com/2009/06/23/md5-decrypter-java/</link>
		<comments>http://www.matbra.com/2009/06/23/md5-decrypter-java/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 01:00:57 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Programação Concorrente]]></category>
		<category><![CDATA[brute force]]></category>
		<category><![CDATA[computação distribuida]]></category>
		<category><![CDATA[exercicios]]></category>
		<category><![CDATA[força bruta]]></category>
		<category><![CDATA[md5]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=331</guid>
		<description><![CDATA[Boa noite, Nas aulas de programação concorrente o professor passou uma introdução de Programação Distribuida e pediu que nós criassemos algo que utilizasse ela. Então eu sugeri ao meu colega Olav para implementarmos um &#8220;quebrador&#8221; de senha por força bruta. O mesmo funciona da seguinte maneira, existe um master onde os slaves se conectam, o [...]]]></description>
			<content:encoded><![CDATA[<p>Boa noite, </p>
<p>Nas aulas de programação concorrente o professor passou uma introdução de Programação Distribuida e pediu que nós criassemos algo que utilizasse ela. Então eu sugeri ao meu colega Olav para implementarmos um &#8220;quebrador&#8221; de senha por força bruta. O mesmo funciona da seguinte maneira, existe um master onde os slaves se conectam, o master informa a string a ser quebrada e qual faixa de caracteres o slave deve tentar. Após terminar aquela faixa caso ele não obtenha sucesso o slave recebe uma nova faixa, caso ele encontre, ele informa o master qual a string utilizada para gerar tal MD5. </p>
<p><a href="http://www.matbra.com/?attachment_id=330">Implementação do &#8220;MD5 Decrypter&#8221;<br />
</a></p>
<p>Existem muitas coisas que ainda podem ser aperfeiçoadas nesse programa como:<br />
- Não precisar um número fixo de Slaves. Aceitar todos que forem se conectando em tempo real.<br />
- Melhor distribuição de faixas. </p>
<p>Ele pode ser praticamente o inicio de um programa de Força Bruta Distribuida, que já devem existir vários por ai.</p>
<p>Espero que goste,<br />
Matheus</p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/06/23/md5-decrypter-java/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>
		<item>
		<title>Ubuntu 9.04, 64 Bits com Java.</title>
		<link>http://www.matbra.com/2009/04/26/ubuntu-904-64-bits-com-java/</link>
		<comments>http://www.matbra.com/2009/04/26/ubuntu-904-64-bits-com-java/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 23:00:08 +0000</pubDate>
		<dc:creator>Matheus (X-warrior) Bratfisch</dc:creator>
				<category><![CDATA[Aprendendo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software Livre]]></category>
		<category><![CDATA[64bits]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.matbra.com/?p=114</guid>
		<description><![CDATA[Boa noite, Estava tentando acessar minha conta do banco e não conseguia por problemas do java. Conversando com um amigo ele me ensinou o que devia ser instalado para conseguir utilizar o mesmo. Para conseguir utilizar o java no ubuntu 64bits você deve utilizar o sun-java-plugin. Para instalar o mesmo você pode utilizar o seguinte [...]]]></description>
			<content:encoded><![CDATA[<p>Boa noite, </p>
<p>Estava tentando acessar minha conta do banco e não conseguia por problemas do java. Conversando com um amigo ele me ensinou o que devia ser instalado para conseguir utilizar o mesmo. Para conseguir utilizar o java no ubuntu 64bits você deve utilizar o sun-java-plugin. Para instalar o mesmo você pode utilizar o seguinte comando: </p>
<p>sudo apt-get install sun-java6-plugin</p>
<p>Abraços,<br />
Matheus</p>
<p><a href="http://matbra.com/en/2009/05/18/ubuntu-64bits-with-java/">English Version</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.matbra.com/2009/04/26/ubuntu-904-64-bits-com-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

