Gregui Shigunov


Função para criptografar com MD5 (Java)

Enviado em Informação, JAVA, Programação, Técnologia, dicas, internet por Gregui Shigunov no 17 17UTC Dezembro 17UTC 2007
Tags: , , , ,

    /**
* criptografa usando MD5
*
* @param valor
* @return
* @throws NoSuchAlgorithmException
*/

    public static String md5 (String valor) throws Exception {
MessageDigest md = MessageDigest.getInstance(“MD5″);
BigInteger hash = new BigInteger(1, md.digest(valor.getBytes()));
String s = hash.toString(16);
if (s.length() %2 != 0)
s = “0″ + s;
return s;
}

Executando programa externo e recuperando a saída (Java)

Enviado em Informação, JAVA, Programação, Técnologia, internet por Gregui Shigunov no 17 17UTC Dezembro 17UTC 2007
Tags: , , , , , , ,

import java.io.*;
public class Executar {

public static void main(String argv[]) {
try {
String line;
Process p = Runtime.getRuntime().exec (“dir c:“);
BufferedReader input =
new BufferedReader
(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
}
catch (Exception err) {
err.printStackTrace();
}
}
}

Exemplo de envio de e-email com Java

Enviado em JAVA, Programação, Técnologia, dicas, internet por Gregui Shigunov no 17 17UTC Dezembro 17UTC 2007
Tags: , , , , , ,

import java.io.IOException;
import java.io.PrintStream;

import sun.net.smtp.SmtpClient;

/**
* Classe para envio de email
*/

/**
* @author gregui
*
*/

public class Email {

   /**
* Construtora
*
*/

public Email() {

}

public boolean enviar() {

String to = “maurivanluiz@gmail.com,” +
kleber.martins@gmail.com“;

String from = “gregui@gmail.com“;

try {
SmtpClient client = new SmtpClient(“mail.xxxxx.com.br“);  //servidor smtp
client.from(from);
client.to(to);
PrintStream msg = client.startMessage();
msg.println(“to:” + to);
msg.println(“from:” + from);
msg.println (“Subject:Exemplo de Envio de e-mail”);
msg.print(“\r\n”);
msg.println(“Testando de email  http://gregui.wordpress.com”);

client.closeServer();
} catch (IOException e) {
System.out.println(e.getMessage());
return false;
}
return true;
}

    /**
* Exemplo de uso
* @param args
*/

public static void main(String args[]) {
Email mail = new Email();

mail.enviar();
}
}

Instanciando uma classe dinamicamente (JAVA)

Enviado em Informação, JAVA, Programação, dicas, internet por Gregui Shigunov no 17 17UTC Dezembro 17UTC 2007
Tags: , , , , , , , , , ,

Aqui vai exemplo de como instanciar um objeto dinamicamente!
String classeNome = “NomeDaClasse”;
Object[] contrutoraParam = new Object[0]; //parametros da contrutora

Object objeto = Class.forName (classeNome).getConstructors()[0].newInstance(contrutoraParam);

NomeDaClasse teste = (NomeDaClasse) objeto; //Casting

System.out.println(teste.toString());

Qualquer dúvida! estou a disposição!

Programação orientada a Objetos – Boas práticas de programação (1)

Tenho participações em fóruns como JavaFree e PortalJava. E notei que muitos programadores se “batem” com orientação a objetos, mesmo utilizando uma linguagem Orientada a Objetos como Java, Flex, Php.

Tentarei trazer dicas de orientação a objeto e boas práticas de programação, utilizando exemplos simples para o fácil entendimento. No momento estou bem ocupado, então posso demorar para postar coisas novas! ;)

Então…

Notem este código:
public class Motor {

}

public class Carro {
private Motor motor = new Motor();

     //construtora
public Carro(Motor motor) {
this.motor = motor;
}
}

Um exemplo muito simples, com dois objeto (Carro e Motor);

Agora, notem…
- A contrutora da classe “Carro”, informa (obriga) que um “Carro” tenha um “Motor”.
- Então antes de instanciar um carro, eu preciso instanciar um motor (motor pode ser “null”, nulo).
- Quando eu contruir um carro, eu incluo o motor no carro, mas notem a linha 2:
private Motor motor = new Motor();
- Se a construtora de “Carro” me obriga ter um “Motor”, por que diabo ela já tem um motor construído?

É mais ou menos como: “Vou contruir um carro 2.0, mas o carro já possuí um motor 1.0, então terei que tirar o motor 1.0, e substituir pelo 2.0″
(No mundo real isso é bom, já que eu teria um motor sobrando, mas … na programação há disperdício de processamento e memória para criar o motor 1.0, já que foi contruído e não foi utilizado)

- Agora você deve se perguntar, grande coisa… Não vai fazer muita diferença.
- Para um exemplo simples como esse sim, mas imagine um sistema complexo, com classe gigantes e complexas

Agora olhem a classe abaixo:

public class Carro {
private Motor motor = null;

    //construtora
public Carro(Motor motor) {
this.motor = motor;
}
}

No carro eu “declarei” mas não “instanciei” o Motor.
É mais ou menos como: “tenho um carro, agora só falta o motor (reservei espaço para o Motor)”

Uma outra Boa Prática de Programação (BPP) é, sempre informar o valor da variável ao declará-la.
Como no exemplo abaixo

Exemplo de utilização:

Motor motor_1; //não recomendado
Motor motor_2 = null; //OK
Motor motor_3 = new Motor(); //OK

motor_1 = new Motor();
motor_2 = new Motor();

Carro corsa = new Carro(motor_1);
Carro corsa_sedan = new Carro(motor_2);

Até a próxima ;)

java.io.IOException: No serializer found for class pacote.Classe in registry org.apache.axis.encoding. TypeMappingDelegate@

Eai pessoal!!!!

Então! hoje eu estvaa criando um WebServer.
E me debati com o sequinte erro ao testar.

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.IOException: No serializer found for class gregui.ValorBean in registry org.apache.axis.encoding.TypeMappingDelegate@17574b9
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.io.IOException: No serializer found for class gregui.ValorBean in registry org.apache.axis.encoding.TypeMappingDelegate@17574b9
at org.apache.axis.encoding.SerializationContext.serializeActual(SerializationContext.java:1507)
at org.apache.axis.encoding.SerializationContext.serialize(SerializationContext.java:980)
at org.apache.axis.encoding.SerializationContext.outputMultiRefs(SerializationContext.java:1055)
at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:145)

(mais…)

Manipulando Arquivos com Java (abrir, salvar e adicionando)

Enviado em JAVA, Programação por Gregui Shigunov no 24 24UTC Setembro 24UTC 2007
Tags: , , , , , , , , , , ,

Ai vai uma classe utilitária para trabalhar com arquivos.

Contém:

- Método para salvar conteúdo, com opção para adicionar no final do arquivo, eu em novo arquivo.

- Método para recuperar o conteúdo de um arquivo para uma variável.

ai vai:

/**
* Funções utilitárias para trabalhar com arquivos
* autor: Gregui Shigunov
* arquivo: UtilsArquivo.java
* 20/09/2007
*/


import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
(mais…)

Carregando conteúdo de uma URL (Java)

Enviado em JAVA, Programação por Gregui Shigunov no 24 24UTC Setembro 24UTC 2007
Tags: , , , , ,

Opa!

Ai um exemplo de como baixar o conteúdo de uma Url (html, xml, …)

URL url = new URL(“http://gregui.wordpress.com”);

BufferedReader br = new BufferedReader(
new InputStreamReader(url.openStream()));

StringBuffer buffer = new StringBuffer();

String linha;
while ((linha = br.readLine()) != null) {
buffer.append(linha);
}
br.close();

System.out.println(buffer.toString());

É isso! lembrando que acima é só o conteúdo principal, pois falta tratar as excessões levantadas em caro de erro. (try… catch)    ;)

É isso…

Pausando aplicação java

Enviado em Inutilidades, JAVA, Programação por Gregui Shigunov no 24 24UTC Setembro 24UTC 2007
Tags: , , , , ,

Para pausar um aplicação ou apenas uma thread, basta chamar o método sleep.

Por exemplo:

System.out.pritln(“iniciando pausa”);
Thread.currentThread().sleep(10000);
System.out.pritln(“10 segundos depois, continua!”);

Muito util.

java.lang.ClassCastException: oracle.sql.CLOB usando JNDI

Enviado em JAVA, Programação por Gregui Shigunov no 22 22UTC Setembro 22UTC 2007
Tags: , , , , , , , , ,

Rao!!!

Estava eu num projeto em Java com Oracle. E resolvi utilizar o pool de conexões do tomcat, pois minha aplicação estava ficando lenta.

Antes:

Class.forName(“oracle.jdbc.driver.OracleDriver”);
this.conn = DriverManager.getConnection(“jdbc:oracle:thin:@127.0.0.1:1521:DB_EXEMPLO”, “usuario”, “senha”);

depois:

Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup(“java:/comp/env”);
DataSource ds = (DataSource)envContext.lookup(“jdbc/exemplo“);
this.conn = ds.getConnection();

Alterei também o arquivo de contexto da aplicação tomcat: “apache-tomcat-5.5\conf\Catalina\localhost\exemplo.xml”

<Context path=”/exemplo” reloadable=”true” docBase=”F:\XXX\exemplo” workDir=”G:\XXX\exemplo\work”>
<Resource name=”jdbc/exemplo” auth=”Container” type=”javax.sql.DataSource”
username=”xxxx” password=”yyyy”
driverClassName=”oracle.jdbc.driver.OracleDriver”
url=”jdbc:oracle:thin:@127.0.0.1:1521:
DB_EXEMPLO
maxWait=”-1″
removeAbandoned=”true”
maxActive=”10000″
maxIdle=”20″
removeAbandonedTimeout=”180″
logAbandoned=”true”
accessToUnderlyingConnectionAllowed=”true”
/>
</Context>

Até ai, tudo na santa paz!

Até eu utilizar o campo Clob! Dando o seguinte erro:

java.lang.ClassCastException: oracle.sql.CLOB
at midiaweb.Dao.populaVO(Dao.java:759)
at midiaweb.Dao.getLista(Dao.java:625)
at midiaweb.servlet.ServletLogin.execute(
ServletLogin.java:39)
at midiaweb.ServletPai.doGet(ServletPai.java:35)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Unknown Source)
at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:262)
at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:52)
at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:171)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)

E aqui o fonte de onde ocorreu o erro:

oracle.sql.CLOB objTeste = rs.getClob(“CAMPO_CLOB”);
if (objTeste!= null) {
System.out.println(objTeste.getClass().getName());
//resultado “oracle.sql.CLOB”
oracle.sql.CLOB clob = (oracle.sql.CLOB) objTeste;
//ERRO AQUI
String valor = this.getClob(clob);

Com o teste, notei que o objTeste era um “oracle.sql.CLOB” e o objeto clob também era um “oracle.sql.CLOB”.

Então pensei, como isso é possível?

Depois de quebrar a cabeça, pensei!!!

1. Para levantar um erro de Cast, e as classes têm o mesmo nome, então deve haver 2 versões do pacote.

2. E, como o JNDI é uma biblioteca e faz parte do tomcat, logo a classe que ele me retorna, não é uma classe do lib do meu projeto

Removi a biblioteca que estava no lib do meu WEB_INF, no caso era “classes12.jar”, e bimba! (é claro que no eclipse, para poder compilar, coloquei a referência para o pacote, senão não compila)

Ou seja, havia 2 pacotes exatamente iguais. Usando JNDI havia uma refência e em minha aplicação outra!

Espero que ajuda! falowww!

Próxima Página »