Dúvidas sobre Computação ?
Vamos tentar tirar dúvidas e trocar conhecimento com todos, sobre qualquer assunto relacionado a computação

terça-feira, 24 de agosto de 2010

Acesso a informações da máquina cliente com Applet

1 – uso de PrivilegedAction (o método abaixo cria um arquivo no lado cliente de uma aplicação para executá-lo e capturar a informação do serial do HD)


public static String getHDSerial() {
        String retorno = (String) AccessController.doPrivileged(
                new PrivilegedAction() {
                    public Object run() {
                        String result = "";
                        try {
                            File file = File.createTempFile("tmp", ".vbs");
                            file.deleteOnExit();
                            FileWriter fw = new java.io.FileWriter(file);
                            String vbs = "Set objFSO = CreateObject(\"Scripting.FileSystemObject\")\n" + "Set colDrives = objFSO.Drives\n" + "Set objDrive = colDrives.item(\"" + IdentificadorApplet.drive + "\")\n" + "Wscript.Echo objDrive.SerialNumber";
                            fw.write(vbs);
                            fw.close();
                            Process p = Runtime.getRuntime().exec("cscript //NoLogo " + file.getPath());
                            BufferedReader input =
                                    new BufferedReader(new InputStreamReader(p.getInputStream()));
                            String line;
                            while ((line = input.readLine()) != null) {
                                result += line;
                            }
                            input.close();
                        } catch (Exception e) {
                            result = e.getMessage();
                        }
                        if (result.trim().length() < 1 || result == null) {
                            result = "NO_DISK_ID";
                        }
                        return result.trim();
                    }
                });
        return retorno;
    }



2 – O Applet deve está assinado para que seja possível a execução.(Uma maneira muito simples para isso é o uso de KeyToolUI)


2.1 – Crie um JKS para assinar o Applet, isso é possível com KeyToolUI.
2.2 – Assine o arquivo .jar gerado, referente ao Applet.

segunda-feira, 23 de agosto de 2010

Lendo Arquivo OFX com ofx4j

Neste post vamos aprender a ler OFX (Open Financial Exchange, que é uma especificação unificada para a troca eletrônica de dados financeiros entre as instituições financeiras, empresas e consumidores através da Internet) utilizando a biblioteca ofx4j disponibilizada aqui.


Após transformar o ofx em objeto no java você pode navegar nas tags do arquivo, porém, achei uma falha na biblioteca, não consigo acessar diretamente a tag e o resto de sua hierarquia, mas é justamente dentro dessa tag que está as transações (que, teoricamente é o que importa para nós), desse modo tive que "pegar no braço" esse objeto com a lista de transações.


Abaixo o código exemplo:


import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
import net.sf.ofx4j.domain.data.MessageSetType;
import net.sf.ofx4j.domain.data.ResponseEnvelope;
import net.sf.ofx4j.domain.data.ResponseMessageSet;
import net.sf.ofx4j.domain.data.banking.BankStatementResponse;
import net.sf.ofx4j.domain.data.banking.BankStatementResponseTransaction;
import net.sf.ofx4j.domain.data.banking.BankingResponseMessageSet;
import net.sf.ofx4j.domain.data.common.Transaction;
import net.sf.ofx4j.domain.data.signon.SignonResponse;
import net.sf.ofx4j.io.AggregateUnmarshaller;
import net.sf.ofx4j.io.OFXParseException;

public class Main {

public static void main(String[] args) throws IOException, OFXParseException {
AggregateUnmarshaller a = new AggregateUnmarshaller(ResponseEnvelope.class);
ResponseEnvelope re = a.unmarshal(new FileInputStream(new File(System.getProperty("user.home") + "/Desktop/teste.ofx")));

//objeto contendo informações como instituição financeira, idioma, data da conta.
SignonResponse sr = re.getSignonResponse();

//como não existe esse get "BankStatementResponse bsr = re.getBankStatementResponse();"
//fiz esse codigo para capturar a lista de transações
MessageSetType type = MessageSetType.banking;
ResponseMessageSet message = re.getMessageSet(type);

if (message != null) {
List bank = ((BankingResponseMessageSet) message).getStatementResponses();
for (BankStatementResponseTransaction b : bank) {
System.out.println("cc: " + b.getMessage().getAccount().getAccountNumber());
System.out.println("ag: " + b.getMessage().getAccount().getBranchId());
System.out.println("balanço final: " + b.getMessage().getLedgerBalance().getAmount());
System.out.println("dataDoArquivo: " + b.getMessage().getLedgerBalance().getAsOfDate());
List list = b.getMessage().getTransactionList().getTransactions();
System.out.println("TRANSAÇÕES\n");
for (Transaction transaction : list) {
System.out.println("tipo: " + transaction.getTransactionType().name());
System.out.println("id: " + transaction.getId());
System.out.println("data: " + transaction.getDatePosted());
System.out.println("valor: " + transaction.getAmount());
System.out.println("descricao: " + transaction.getMemo());
System.out.println("");
}
}
}
}
}

dependências: nanoxml.jar, commons-logging.


e é isso, até a próxima.

quinta-feira, 12 de agosto de 2010

Aumentando memoria do Tomcat no Windows

Para aumentar a memoria do tomcat no windows é preciso editar o arquivo catalina.bat que fica localizado dentro do diretorio /bin.
Basta inserir a seguinte linha de codigo logo após os comentarios iniciais do arquivo:
set JAVA_OPTS="-Xms512m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=512m -XX:MaxPermSize=512m"