Muitas vezes precisamos gerar um hash de algum tipo de dado, geralmente uma String. Aqui fiz um exemplo que utiliza o MD5 para gerar um hash e em seguida usa a biblioteca do JBoss para adequar o hash gerado no que chamamos de Base64. Assim teremos um hash mais limpo e de tamanho reduzido em relação ao MD5. Para a biblioteca do JBOSS, clique aqui! package br.com.dougpinheiro.security.hash;import java.io.IOException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import org.jboss.security.Base64Encoder;public class HashFactory { public static String hash(byte[] data_in){ String string_out = ""; try { MessageDigest md = MessageDigest.getInstance("MD5"); string_out = Base64Encoder.encode(md.digest(data_in)); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return string_out; } public static void main(String[] args) { HashFactory hf = new HashFactory(); System.out.println(hf.hash("Fulano".getBytes())); }}Abraço!Douglas Pinheiro "Cargo: Motorista. Exigencias do trabalho: Competencia profissional em conducao deveiculos leves como carros e pesados como onibus e caminhoes, onibusarticulados, bondes, metro, tratores, escavadoras e pas carregadoras,e tanques pesados atualmente em uso pelos paises da OTAN. "Habilidades em Rali e de conducao extremas sao obrigatorios!Experiencia na Formula-1 e um diferencial. Conhecimento e experiencia em reparacao de motores de pistao e rotor,transmissoes automaticas e manuais, sistemas de ignicao, computador debordo, ABS, ABD, GPS e sistemas de audio automotivo dos fabricantesconhecidos mundialmente obrigatoria! Experiencia em tarefas de pintura e funilaria de automoveis e um diferencial. Os candidatos devem ser certificados pela BMW, General Motors e Bosch,mas nao por mais de dois anos. Compensacao: R$ 15 R$ 20/hora, dependendo do resultado da entrevista. Exigencias da instrucao: Bacharel em Engenharia Mecanica."from: Computacao_Pa@googlegroups.com Neste exemplo, imprimimos um arquivo PDF direto do sistema. Para isso, basta informar uma parte ou todo o nome da impressora e indicar a localizacao do arquivo. Minha impressora e a printer001 e o meu arquivo como podem ver e o c:/teste.pdf. Deixem seus comentarios.package printpdf;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import javax.print.Doc;import javax.print.DocFlavor;import javax.print.DocPrintJob;import javax.print.PrintService;import javax.print.PrintServiceLookup;import javax.print.SimpleDoc;public class PrintPDFFactory { private static PrintService impressora; public void printPDF(File f){ try{ DocFlavor dflavor = DocFlavor.INPUT_STREAM.AUTOSENSE; PrintService[] impressoras = PrintServiceLookup.lookupPrintServices(dflavor, null); for(PrintService ps : impressoras){ System.out.println("Impressora Encontrada: "+ps.getName()); if(ps.getName().contains("printer001")){ System.out.println("Impressora Selecionada: "+ps.getName()); impressora = ps; break; } } DocPrintJob dpj = impressora.createPrintJob(); FileInputStream fis = new FileInputStream(f); byte[] buffer = new byte[fis.available()]; int buff = 0; while((buff = fis.available()) != 0){ fis.read(buffer, 0, buff); } System.out.println(new String(buffer)); InputStream stream = new ByteArrayInputStream(buffer); DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; Doc doc = new SimpleDoc(stream, flavor, null); dpj.print(doc, null); }catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { PrintPDFFactory pdffactory = new PrintPDFFactory(); pdffactory.printPDF(new File("c:/teste.pdf")); }} var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-29836297-1']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();Este post inicia uma serie de screencasts que eu pretendo fazer relacionados ao desenvolvimento de software.No primeiro screencast mostro como preparar o ambiente para se desenvolver uma aplicacao para web utilizando o JBoss SEAM. Espero que gostem! Nao esquecam de deixar suas criticas ou duvidas.Abracos,Douglas Pinheiro JBoss SEAM - Aula 01 - Preparando o ambiente de desenvolvimento. from dougpinheiro on Vimeo. Amigos,Convido