Mostrando postagens com marcador java. Mostrar todas as postagens
Mostrando postagens com marcador java. Mostrar todas as postagens

quinta-feira, 15 de janeiro de 2009

HelloWorld com Struts 2

Para esta pequena aplicação será utilizado como IDE o eclipese e a versão do struts 2.0.11.
Do pacote lib do struts 2 utilizemos a seguintes bibliotecas:
  • commons-logging.jar
  • freemarker.jar
  • ognl.jar
  • struts2-core.jar
  • xwork.jar

Essas libs deverão estar dentro de WebContent/WEB-INF/lib, esses diretórios são criados automaticamente quando se cria um WebDinamicProject no eclipse.
Primeiro será configurado o arquivo web.xml, serão adicionadas seguintes linhas:

clique aqui para ver o código

Agora criaremos a nossa Action que vai se chamar HelloStruts2, ela será responsável por atribuir a string ”José” para o atributo name da classe, ela deve estender de ActionSupport para que tenha as funcionalidades do Strtus. O struts 2 usa os métodos getter and setters para acessar os atributos da classe. O método execute é o primeiro método que será chamado por padrão na action.

clique aqui para ver o código

Agora criaremos o arquivo struts .xml, que será reponsável pelo mapeamento da action, ele devera estar dentro da pasta src do projeto. na tag colocamos o nome que será chamada a nossa action no atributo name, e o pacote em que a action se localiza no atributo class. Como não estamos especificando nenhum método, por default será chamado o método execute. Na tag configuramos os rsultados que a action pode nos retornar. Neste caso estamos dizendo que a pode retornar a string “execute” e que se retornar a pagina direcionada será a helloStruts.jsp.

clique aqui para ver o código

Agora criaremos a nossa index.jsp, que será a primeira página da aplicação, nela colacamos a taglib do struts, por conversão usamos como prefixo a letra “s”, na tag no atributo href, colocamos o nome da action, a qual foi mapeada no struts.xml. Então quando o link for clicado ele chamará o método execute da nossa action.

clique aqui para ver o código

Por último será criado a página helloStruts.jsp, esta página será chamada quando o link da index.jsp for clicado. E a tag será responsável por pegar o valor do atributo name atribuído na action:

clique aqui para ver o código


terça-feira, 16 de dezembro de 2008

Convertendo de long para String binária em java

// Para pegar a representação binária de um
// tipo long em java, use o código abaixo:

long x = "10"
String str = Long.toString(x, 2);
System.out.println(str);

// O mesmo código pode ser usado para inteiro.

sábado, 29 de novembro de 2008

Software para Controle de Vendas e Estoque

Controle de Vendas & Estoque (Freeware em java)

Este é um programa para controle de vendas e estoque em um estabelecimento comercial. É feito em Java e todo o código está dísponível. O programa está em desenvolvimento e novas funcionalidades estão sendo criadas. O código é facilmente adaptável à outras aplicações, para importar o código use Ecliple IDE 3.2 ou posterior.

Download:
https://sourceforge.net/projects/vendasestoquedl

terça-feira, 25 de novembro de 2008

Exemplo de gráfico de barras com JFreeChart

//Requerido a Api JFreeChart

import java.awt.Dimension;
import javax.swing.JFrame;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;


public class BarsGraphic extends JFrame{

public BarsGraphic(String title) {
super(title);
CategoryDataset dataset = BarsGraphic.createDataset();
JFreeChart chart = BarsGraphic.createBarChart(dataset);
ChartPanel panel = new ChartPanel(chart);
panel.setPreferredSize(new Dimension(400, 300));
setContentPane(panel);
}

private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(6, "Preto", "Corsa");
dataset.addValue(4, "Preto", "Fiesta");
dataset.addValue(3, "Preto", "Gol");
dataset.addValue(5, "Vermelho", "Corsa");
dataset.addValue(2, "Vermelho", "Fiesta");
dataset.addValue(3, "Vermelho", "Gol");
dataset.addValue(2, "Azul", "Corsa");
dataset.addValue(8, "Azul", "Fiesta");
dataset.addValue(1, "Azul", "Gol");
return dataset;
}

private static JFreeChart createBarChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart(
"Escolha de cor por veículo", //Titulo
"Veículo", // Eixo X
"Quantidade", //Eixo Y
dataset, // Dados para o grafico
PlotOrientation.VERTICAL, //Orientacao do grafico
true, false, false); // exibir: legendas, tooltips, url
return chart;
}

public static void main( String[] args ) {
BarsGraphic chart = new BarsGraphic("Teste Bar Chart");
chart.pack();
chart.setVisible(true);
}
}

// outra ferramenta mais leve pode ser encontrada em:
// http://www.java2s.com/Code/Java/Chart/CatalogChart.htm

Instalando e configurando o Archiva no Tomcat

Primeiramente você terá que fazer o download do Apache Tomcat e do Archiva e do Java. A versões usadas nesse tutorial foram:
- Java 1.6;
- Tomcat 5.27;
- Archiva 1.2-M1.

Faça o download do War e do Standalone do Archiva pois iremos precisar dos dois.
- Java: http://java.sun.com/javase/downloads/index.jsp
- Tomcat: http://tomcat.apache.org/download-55.cgi
- Archiva: http://archiva.apache.org/download.html

Agora vamos as instalações:
• Instale o Java em sua máquina e crie uma variável de ambiente chamada JAVA_HOME, e aponte ela para o local que foi instalado o Java;
• Depois descompacte o Tomcat no C:\ da sua máquina e crie uma variável de ambiente chamada CATALINA_HOME, e aponte para o local que você descompactou o Tomcat;
• Agora crie uma pasta chamada ‘archiva’ dentro do Tomcat, no mesmo nível que as pastas bin, conf, logs e outras;
• Copie o arquivo War do Archiva para dentro desta pasta que você acabou de criar;
• Crie um arquivo chamado ‘archiva.xml’ e coloque dentro da pasta
tomcat_home/conf/Catalina/localhost/ com o seguinte conteúdo:

link para o contéudo

Observação: Na tag Resource, a propriedade url é o caminho do banco de dados que o Archiva irá usar. Você pode definir qualquer caminho.

• Agora descompacte o Archiva Standalone que você baixou. Acesse a pasta descompactada e abra a pasta lib. Dentro desta pasta copie esses 3 arquivos:
- derby-10.1.3.1.jar (or later);
- activation-1.1.jar;
- mail-1.4.jar.
Abra a pasta tomcat_home\common\lib e cole esses 3 arquivos.

• Agora crie mais uma variável de ambiente chamada CATALINA_OPTS com o seguinte valor:
CATALINA_OPTS="-Dappserver.home=$CATALINA_HOME -Dappserver.base=$CATALINA_HOME"


Pronto! Agora é só acessar http://localhost:8080/archiva e começar a usar. A primeira página que o Archiva irá lhe mostrar será uma página pedindo para você cadastrar um Administrador.

Configurando o Maven com o Archiva

Para usar o Archiva como repositório para o Maven você precisa criar um arquivo chamado settings.xml e colocar dentro da pasta user_home/.m2. O conteúdo desse arquivo será:

link para conteúdo

Para que você consiga fazer o deploy de sua aplicação você precisa inserir o seguinte código no seu pom.xml:

link para conteúdo

Agora é só usar!

Tutorial elaborado por Rodrigo Luís de Faria.
Email: rodrigolfsi@gmail.com

segunda-feira, 3 de novembro de 2008

Date para String em java

// Date para String em java.

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");

Date today = new Date();

String stringDate = df.format(today);

System.out.println("Data em String: " + stringDate);

Convertendo java.util.Date para java.util.Calendar

Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date.getTime());

// Separando em dia, mês e ano.
int ano = calendar.get(Calendar.YEAR);
int mes = calendar.get(Calendar.MONTH)+1;
int dia = calendar.get(Calendar.DAY_OF_MONTH);

segunda-feira, 22 de setembro de 2008

Convertendo String para Date em java

Exemplo que mostra como converter uma String para Date em java:

import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Data {

public static void main(String[] args) {
DateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
Date data = null;
try {
data = new Date(fmt.parse("05/08/1987").getTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(data);
}
}

sexta-feira, 12 de setembro de 2008

Validando cartão de crédito em java

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class CCUtils {
public static final int INVALID = -1;
public static final int VISA = 0;
public static final int MASTERCARD = 1;
public static final int AMERICAN_EXPRESS = 2;
public static final int EN_ROUTE = 3;
public static final int DINERS_CLUB = 4;

private static final String [] cardNames =
{ "Visa" ,
"Mastercard",
"American Express",
"En Route",
"Diner's CLub/Carte Blanche",
};

/**
* Valid a Credit Card number
*/
public static boolean validCC(String number)
throws Exception {
int CardID;
if ( (CardID = getCardID(number)) != -1)
return validCCNumber(number);
return false;
}

/**
* Get the Card type
* returns the credit card type
* INVALID = -1;
* VISA = 0;
* MASTERCARD = 1;
* AMERICAN_EXPRESS = 2;
* EN_ROUTE = 3;
* DINERS_CLUB = 4;
*/
public static int getCardID(String number) {
int valid = INVALID;

String digit1 = number.substring(0,1);
String digit2 = number.substring(0,2);
String digit3 = number.substring(0,3);
String digit4 = number.substring(0,4);

if (isNumber(number)) {
/* ----
** VISA prefix=4
** ---- length=13 or 16 (can be 15 too!?! maybe)
*/
if (digit1.equals("4")) {
if (number.length() == 13 || number.length() == 16)
valid = VISA;
}
/* ----------
** MASTERCARD prefix= 51 ... 55
** ---------- length= 16
*/
else if (digit2.compareTo("51")>=0 && digit2.compareTo("55")<=0) {
if (number.length() == 16)
valid = MASTERCARD;
}
/* ----
** AMEX prefix=34 or 37
** ---- length=15
*/
else if (digit2.equals("34") || digit2.equals("37")) {
if (number.length() == 15)
valid = AMERICAN_EXPRESS;
}
/* -----
** ENROU prefix=2014 or 2149
** ----- length=15
*/
else if (digit4.equals("2014") || digit4.equals("2149")) {
if (number.length() == 15)
valid = EN_ROUTE;
}
/* -----
** DCLUB prefix=300 ... 305 or 36 or 38
** ----- length=14
*/
else if (digit2.equals("36") || digit2.equals("38") ||
(digit3.compareTo("300")>=0 && digit3.compareTo("305")<=0)) {
if (number.length() == 14)
valid = DINERS_CLUB;
}
}
return valid;

/* ----
** DISCOVER card prefix = 60
** -------- lenght = 16
** left as an exercise ...
*/

}

public static boolean isNumber(String n) {
try {
double d = Double.valueOf(n).doubleValue();
return true;
}
catch (NumberFormatException e) {
e.printStackTrace();
return false;
}
}

public static String getCardName(int id) {
return (id > -1 && id < cardNames.length ? cardNames[id] : "");
}

public static boolean validCCNumber(String n) {
try {
/*
** known as the LUHN Formula (mod10)
*/
int j = n.length();

String [] s1 = new String[j];
for (int i=0; i < n.length(); i++) s1[i] = "" + n.charAt(i);

int checksum = 0;

for (int i=s1.length-1; i >= 0; i-= 2) {
int k = 0;

if (i > 0) {
k = Integer.valueOf(s1[i-1]).intValue() * 2;
if (k > 9) {
String s = "" + k;
k = Integer.valueOf(s.substring(0,1)).intValue() +
Integer.valueOf(s.substring(1)).intValue();
}
checksum += Integer.valueOf(s1[i]).intValue() + k;
}
else
checksum += Integer.valueOf(s1[0]).intValue();
}
return ((checksum % 10) == 0);
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}

/*
** For testing purpose
**
** java CCUtils [credit card number] or java CCUtils
**
*/
public static void main(String args[]) throws Exception {
String aCard = "";

if (args.length > 0)
aCard = args[0];
else {
BufferedReader input =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Card number : ");
aCard = input.readLine();
}
if (getCardID(aCard) > -1) {
System.out.println("This card is supported.");
System.out.println("This a " + getCardName(getCardID(aCard)));
System.out.println
("The card number " + aCard + " is "
+ (validCC(aCard)?" good.":" bad."));
}
else
System.out.println("This card is invalid or unsupported!");
}
}

quinta-feira, 4 de setembro de 2008

Importando certificados SSL para a JVM

Ao se abrir uma conexão https (SSL) em uma aplicação desktop precisamos que a aplicação cliente reconheça o certificado SSL que a aplicação servidor está usando. Em uma aplicação web, é o próprio browser que importa o certificado. Mas quando não utilizamos o browser temos de trabalhar com a api java.security.cert ou então podemos importar estes certificados para a Java Virtual Machine (JVM) através da ferramenta keytool.
Importar os certificados para JVM é útil quando por exemplo queremos trabalhar com web services atráves de uma conexão segura, pois utilizar um web service não requer browser, mas uma conexão https requer que o certificado seja reconhecido.
A seguir deixo algumas informações sobre certificados, logo depois deixo as linhas de comando para se importar certificados para a JVM.

Certificados gerados pelo keytool (ferramenta que vem na JDK) ou OpenSSL são chamados de auto-assinados, ou seja não são assinados por uma "CA" (Certificate Authority), que são as empresas que emitem certificados "de verdade". Ou seja, não tem ninguem "garantindo" que este certificado é verdadeiro. O browser ao acessar um site seguro, recebe do servidor o certificado e verifica se o mesmo tem "garantia" de uma "CA". Caso não tenha esta "garantia" (assinatura da CA), o browser irá exibir a mensagem perguntando se você quer mesmo acessar este site. Se você disser que sim e ainda instalar este certificado no seu browser, as próximas vezes que você acessar o site ele irá considerar "com garantia". Não é possível bular este esquema. Somente comprando um certificado "de verdade" é que a mensagem não irá aparecer.

Lembrando que se optar por importar o certificado "auto-assinado", isto só irá valer para aquele computador e para o browser que está importando o certificado. Mesmo o certificado sendo auto-assinado, a conexão será criptografada, apenas não há garantia de que o site é confiável.

Certificados válidos para a JVM:

A JVM possui alguns certificados reconhecidos por ela, armazenados dentro do arquivo:

%JAVA_HOME%/jre/lib/security/cacerts

Utilizando esse comando tem como você verificar quais os certificados que ela considera válidos:

keytool -list -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit

A partir daí basta importar o seu certificado para dentro deste arquivo e colocar uma cópia dele dentro deste diretório. Para importar o certificado para este arquivo e auto assina-lo como confiável utilize este comando:

keytool -import -v -trustcacerts -file seu certificado -keystore cacerts -keypass changeit -storepass changeit

Pronto, seu certificado foi importado pela JVM.

mais informações

quarta-feira, 3 de setembro de 2008

Criptografia com Sha-1 ou Base64

Usando Sha-1 ou MD5, uma vez obtida a String criptografada não será possível reverter o processo (uso o termo criptografia embora este termo nao seja o mais correto para este caso). No caso de uma senha por exemplo, o que se faz é criptografar a entrada do usuário e comparar com a senha já criptografada no banco. De modo que nem mesmo pelo dado armazenado no banco se pode saber a senha do usuário, pois o que está armazenado no banco de dados é o resultado da criptografia da senha e não a senha.
Já com o Base64 é possível criptografar um dado e com a chave correta descriptografar o mesmo.
É comum utilizar algoritmos como o MD5 e o Sha-1 para a criptografia de senha, porque não convém deixar a própria senha armazenada em um banco. Já o Base64 é usado quando há a necessidade de se conhecer o dado criptografado, não apenas saber se é válido.
A seguir deixo duas classes, a primeira pode ser utilizada tanto com MD5 como com Sha-1, e a segunda classe utiliza o Base64.

Classe para MD5 e Sha-1:


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
*
* Essa classe pode ser usada tanto com o algoritmo MD5 como
* com o Sha-1. Uma vez criptografado um dado, nao sera possivel
* conhecer o valor original. Para saber se este dado corresponde
* a algum outro, voce deve comparar a string resultante da
* criptografia de ambos.
*
*/
public class CriptografiaMD5 {

private static MessageDigest md = null;

static {
try {
// Pode-se usar o algoritmo Sha-1 tambem,
// basta bustituir na linha abaixo.
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
}
}

private static char[] hexCodes(byte[] text) {
char[] hexOutput = new char[text.length * 2];
String hexString;
for (int i = 0; i < text.length; i++) {
hexString = "00" + Integer.toHexString(text[i]);
hexString.toUpperCase().getChars(hexString.length() - 2,
hexString.length(), hexOutput, i * 2);
}
return hexOutput;
}

public static String criptografar(String pwd) {
if (md != null) {
return new String(hexCodes(md.digest(pwd.getBytes())));
}
return null;
}


public static void main(String[] args){
String senha = "123456";
System.out.println(CriptografiaMD5.criptografar(senha));

senha = "132546";
System.out.println(CriptografiaMD5.criptografar(senha));
}
}


Classe para Base64:

import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.spec.KeySpec;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
*
* Essa classe usa Base64 e permite a descriptografia, usando-se a
* chave correta.
*
*/
public final class CriptografiaBase64 {
private static SecretKey skey;
private static KeySpec ks;
private static PBEParameterSpec ps;
private static final String algorithm = "PBEWithMD5AndDES";
private static BASE64Encoder enc = new BASE64Encoder();
private static BASE64Decoder dec = new BASE64Decoder();
static {
try {
SecretKeyFactory skf = SecretKeyFactory.getInstance(algorithm);

ps = new PBEParameterSpec (new byte[]{3,1,4,1,5,9,2,6}, 20);

// Esta e a chave que voce quer manter secreta.
ks = new PBEKeySpec ("EAlGeEen3/m8/YkO".toCharArray());

skey = skf.generateSecret (ks);
} catch (java.security.NoSuchAlgorithmException ex) {
ex.printStackTrace();
} catch (java.security.spec.InvalidKeySpecException ex) {
ex.printStackTrace();
}
}

public static final String encrypt(final String text)
throws
BadPaddingException,
NoSuchPaddingException,
IllegalBlockSizeException,
InvalidKeyException,
NoSuchAlgorithmException,
InvalidAlgorithmParameterException {

final Cipher cipher = Cipher.getInstance(algorithm);
cipher.init(Cipher.ENCRYPT_MODE, skey, ps);
return enc.encode (cipher.doFinal(text.getBytes()));
}

public static final String decrypt(final String text)
throws
BadPaddingException,
NoSuchPaddingException,
IllegalBlockSizeException,
InvalidKeyException,
NoSuchAlgorithmException,
InvalidAlgorithmParameterException {

final Cipher cipher = Cipher.getInstance(algorithm);
cipher.init(Cipher.DECRYPT_MODE, skey, ps);
String ret = null;
try {
ret = new String(cipher.doFinal(dec.decodeBuffer (text)));
} catch (Exception ex) {
}
return ret;
}

public static void main(String[] args) throws Exception {
String password = "123456";
String encoded = CriptografiaBase64.encrypt (password);
System.out.println ("\nString: " + password);
System.out.println ("String criptografada: " + encoded);
System.out.println ("String descriptografada: " +
CriptografiaBase64.decrypt(encoded));

password = "123459";
encoded = CriptografiaBase64.encrypt (password);
System.out.println ("\nString: " + password);
System.out.println ("String criptografada: " + encoded);
System.out.println ("String descriptografada: " +
CriptografiaBase64.decrypt(encoded));
}
}


segunda-feira, 1 de setembro de 2008

Gerando um número aleatório (random) em java

Para gerar um número aleatório em java, usamos o random da biblioteca Math. A seguir segue um exemplo de chamada para este método que neste caso retornará um número aleatório entre 1 e n. Se você deseja um número aleatório entre 1 e 100, basta trocar o n por 100 na linha de código a seguir:

int i = 1 + (int)(Math.random() * n);

Usando XML para criar a GUI das aplicações java

Thinlet é uma ferramenta usada para criar o visual de suas aplicações java através de arquivos xml com uma estrutura simples, parecida com html. O thinlet tem um visual próprio, utiliza awt, e para você utilizar essa ferramenta, tudo o que precisará é de um jar de 38 Kb. Para maiores informações e download visite o site do thinlet, junto com thinlet virá exemplos onde você poderá entender o uso dessa ferramenta.

quinta-feira, 28 de agosto de 2008

Gerando um certificado SSL

Este tutorial demonstra como criar um certificado SSL (certificado de conexão segura) usando a ferramenta OpenSSL e como configurará-lo no Tomcat.

Requerido:
- Tomcat instalado
- OpenSSL instalado
(ao fim da página deixo os links)

Para gerar o certificado e configurar o Tomcat para rodar suas páginas através do protocolo https, siga as etapas abaixo (clique nas imagens para ver detalhes):

1 - Abra o prompt de comando e vá até a pasta bin que fica dentro do diretório de instalação do OpenSSL.

2 - Digite:

openssl req –config openssl.cnf –new –out <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.csr


3 - Digite uma senha de sua preferência e logo depois a confirme.

4 - Logo depois será requerida uma série de informações que serão inseridas no seu certificado. Veja a seguir um exemplo para essas entradas (estarão em inglês):

-País: BR
-Estado: Minas Gerais
-Cidade: Pouso Alegre
-Nome da Organização: Luis LTDA
-Nome da Unidade Organizacional: Software
-Common Name: l-u-i-s.blogspot.com (ele pede outra informação, mas aqui costuma-se colocar o domínio)
-Email: luis@reborn.com
-Challenge password: pass
-Nome opcional da empresa: Luis&Luis

5 - Digite:

openssl rsa -in privkey.pem -out <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.key

Ao pedir a senha, informe a senha que você criou no passo 3.

6 - Digite:

openssl x509 -in <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.csr -out <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.crt -req -signkey <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.key -days 730

Observe as informações apresentadas na tela.

Obs: 730 é a validade do certificado (730 dias).

7 - Digite:

openssl pkcs12 -export -in <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.crt -inkey <pasta_onde_sera_colocado_o_certificado>\nomeCertificado.key -out <pasta_onde_sera_colocado_o_certificado_invertendo_barra>/nomeCertificado.p12 -name seu.dominio.com –CAfile <pasta_onde_sera_colocado_o_certificado_invertendo_barra>/nomeCertificado.crt -caname seu.dominio.com –chain

Depois entre com a senha e a confirme.


Obs: Observe bem o espaçamento e as barras (em alguns pontos usa-se contra-barra em outros usa-se barra normal).

Pronto! O certificado foi gerado e está dentro da pasta que você definiu.

8 - Agora vamos configurar o Tomcat. Vá até TOMCAT_HOME\conf\server.xml e remova a tag do conector da porta 8080, remova todo o conteúdo do bloco (a tag segue abaixo, no arquivo ela está entre <>):

Connector port="8080" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="true" redirectPort="8443"
acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"/

e adicione no mesmo local a seguinte a seguinte tag (
o trecho abaixo deve ser colocado entre <>):

Connector port="443" maxhttpheader maxthreads="150" minsparethreads="25" maxsparethreads="75" enablelookups="false" disableuploadtimeout="true" acceptcount="100" keystorefile="C:\pasta\nomeCertificado.p12" keystoretype="PKCS12" keystorepass="suaSenha" debug="0" scheme="https" secure="true" sslenabled="true" clientauth="false" sslprotocol="TLS"/

Não se esqueça de adicionar as informações de seu certificado dentro desta tag.

Pronto, o Tomcat está configurado para rodar pelo https.


9
- Digite o novo endereço de sua aplicação, lembrando que agora ele foi modificado. Por exemplo, se antes você acessava em http://localhost:8080/SuaApp , agora você acessa em https://localhost:443/SuaApp.

Agora ao acessar sua aplicação irá aparecer uma mensagem informando que você está iniciando uma conexão segura.



10
- Para instalar o certificado, ao aparecer a mensagem clique em View Certificate, depois em install certificate.


Pronto, o certificado foi criado, configurado no Tomcat e instalado.

Links:
site Tomcat
site OpenSSL

quarta-feira, 27 de agosto de 2008

Java - Diferença em dias entre duas datas

O método abaixo recebe duas datas no formato Date (java.util ou java.sql) e retorna a diferença em dias entre essas duas datas:


private long
getDateDifference(Date date1, Date date2) {
return ((date1.getTime()-date2.getTime())/86400000);
}

terça-feira, 19 de agosto de 2008

Configurando o autocompletar no eclipse

Estava utilizando o eclipse e de repente percebi que o autocompletar tinha perdido a funcionalidade. Procurei na internet e nada de achar uma solução. Então um amigo conseguiu solucionar o problema e resolvi postar a solução aqui.

1 - Para configurar o autocompletar vá em:
Window - Preferences

2 - Nessa janela selecione a opção:
Java - Editor - Advanced

3 - Marque os quatro primeiros checkboxes das duas áreas que aparecerão na tela (parte superior e inferior) e clique em OK.


A imagem acima mostra a área de configuração. Clique nela para ver detalhes.

Pronto, o autocompletar está funcionando!

segunda-feira, 11 de agosto de 2008

Mudando o idioma do netbeans para inglês

Para mudar o idioma do seu netbeans para inglês siga os seguintes passos:

1. Acessar o local onde está instalado o Netbeans. (Padrão--> C:\Arquivos de programas\NetBeans 6.1)

2. Abrir a pasta etc, localizada dentro do diretório acima.

3. Adicionar ao fim do documento netbeans.conf a seguinte linha:

netbeans_default_options="-J-Duser.language=en -J-Duser.country=US"

Pronto, seu netbeans está configurado com o idioma inglês.

segunda-feira, 4 de agosto de 2008

Tutorial - Web Services Com Java

Bem pessoal, quando fui tentar estudar web services por conta própria, de cara, encontrei um forum que me desanimou, dizendo que aprender web service sozinho era uma tarefa meio impossível. Estudei um tutorial com axis (framework da apache), e realmente vi que com aquela ferramenta ir ser difícil, pois para fazer um web service simples de cálculos matemáticos, levei horas.
Mas eu continuei procurando conteúdos e tutoriais, não podia ser tão difícil assim, afinal eu só precisava de um web service para uma consulta simples a um banco de dados. Então pude ver que a coisa era extremamente simples, encontrei o que eu queria.
O jdk 6 já vem com uma api para web services, chamada JAX-WS. Usei essa api no eclipse, e não foi necessário nem servidor de aplicação para testar o web service. Utilizá-la no netbeans é ainda mais simples, você cria seu web service no "clica e arrasta".
Ainda no netbeans, você pode criar web services, sem ficar perdendo muito tempo em arquivos de configuração e comandos via prompt, utilizando o RESTful, que é uma tecnologia que não usa o SOAP.

A seguir coloquei as etapas resumidas para criação de web services usando JAX-WS:

Requerido:
- JDK 6 instalado.

Etapas:
1 – Com o java 6, para criar um web service deve-se usar as anotações @WebService e @WebMethod na sua classe, pois o jdk 6 já vem com a tecnologia jax-ws implementada. Crie a seguinte classe exemplo:

@WebService
public class HelloWeb {

@WebMethod
public String hello(String nome) {
return "Hello " + nome;
}
}

2 – Você deve utilizar a ferramente apt (annotation processing tool) que encontra-se na pasta bin do jdk para gerar as classes do web service. Para isso, dentro do diretório src do seu projeto, use a seguinte linha de comando:

apt pacote\HelloWeb.java

Gera um pacote pacote.javaws com duas classes, uma classe Hello.java para os parâmetros do WebService (no nosso caso String nome do método hello) e outra HelloResponse.java que representa o retorno.

3 - Para publicar o serviço/endpoint e iniciá-lo, use a classe seguinte:

public class PublicaService {

public static void main(String[] args){
HelloWeb service = new HelloWeb();
Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", service);
}
}

Pronto, o WebService está rodando sem servidor de aplicação nem web container. Tudo isso com javaSE 6 jdk. Para acessar a wsdl dele, usa-se o URL:

http://localhost:8080/hello?wsdl

4 - Para criar o cliente do serviço, o javaSE 6 já vem com as ferramentas necessárias. Precisamos usar o wsimport (na pasta bin do jdk) para gerar as classes do cliente. Com o serviço rodando, fazemos na linha de comando (dentro da pasta src do projeto):

wsimport -keep -p pacote.cliente http://localhost:8080/hello?wsdl

A opção keep não apaga os arquivos fontes e p gera as classes dentro do pacote especificado.

5 - Para chamar o serviço pelas classes geradas, escreva a seguinte classe:

public class TesteServico {

public static void main(String[] args) {
pacote.cliente.HelloWeb port = new HelloWebService().getHelloWebPort();
System.out.println(port.hello("Luis"));
}
}

Repare que a classe HelloWeb que foi gerada pelo wsimport é uma interface, não confundir com o serviço HelloWeb que é uma implementação.

Pronto! Seu web service está funcionando.

Abaixo deixo links de outros tutoriais:

Web Services RESTful no netbeans
Tutorial Axis 1.3 (GUJ)