O comando netstat é extremamente importante para saber se uma determinada porta está sendo utilizada:
netstat -an
Será apresentado o resultado:
TCP 127.0.0.1:3398 127.0.0.1:4105 ESTABLISHED
TCP 127.0.0.1:3399 127.0.0.1:4105 ESTABLISHED
TCP 127.0.0.1:3400 127.0.0.1:4105 ESTABLISHED
TCP 127.0.0.1:3401 127.0.0.1:4105 ESTABLISHED
Caso seja necessário saber o número do processo (pid) que está utilizando uma determinada porta, é necessário utilizar o comando:
netstat -ano
Onde será exibido o resultado:
TCP 127.0.0.1:3394 127.0.0.1:4105 ESTABLISHED 2808
TCP 127.0.0.1:3395 127.0.0.1:4105 ESTABLISHED 544
TCP 127.0.0.1:3396 127.0.0.1:4105 ESTABLISHED 2808
TCP 127.0.0.1:3397 127.0.0.1:4105 ESTABLISHED 3176
Obs.: Os valores em negrito representam o número do processo.
É possível fazer outras combinações, como por exemplo saber somente qual processo está utilizando a porta 1099 (porta padrão do jboss):
netstat -ano | find "1099"
Será apresentado o resultado:
TCP 127.0.0.1:1099 0.0.0.0:0 LISTENING 4232
segunda-feira, 11 de janeiro de 2010
quinta-feira, 24 de dezembro de 2009
Formulário para recuperar contas roubadas do gmail/orkut/docs google
Se você já tentou recuperar sua senha e não conseguiu, o Google, assim como a maioria dos provedores de serviços de internet, oferece um formulário para recuperar contas roubadas. Preencha os campos com atenção, pois determinar quando um desses pedidos é legítimo não é fácil. Perceba que, assim como você pode recuperar a conta por meio dele, alguém poderia roubá-la de você se soubesse a resposta destas perguntas. Por isso, eles tomam muito cuidado ao decidir aceitar a solicitação ou não.
segunda-feira, 25 de maio de 2009
Criando um projeto com Struts 1.x
1- Criar um projeto Web - Dynamic Web Project;
2- Dentro da pasta WEB-INF criar uma pasta para colocar as tag-libs do struts. Particularmente, prefiro criar com o nome "struts" para referenciar as libs organizadamente dentro do projeto;
3- Descompactar o arquivo struts-blank que contém os arquivos necessários para montar o projeto;
4- Dentro do diretório \struts-blank\WEB-INF deverá ser copiado os seguintes arquivos para a pasta criada anteriormente no item 4:
* struts-bean.tld;
* struts-html.tld;
* struts-logic.tld;
* struts-nested.tld;
* struts-tiles.tld.
5- Dentro do diretório \struts-blank\WEB-INF\lib deverá ser copiado os arquivos a seguir para a pasta WEB-INF\lib do projeto criado anteriormente no item 1:
* antlr.jar;
* commons-beanutils.jar;
* commons-digester.jar;
* commons-fileupload.jar;
* commons-logging.jar;
* commons-validator.jar;
* jakarta-oro.jar;
* struts.jar.
6- Copiando os arquivos de configuração; dentro do diretório \struts-blank\WEB-INF copiar os arquivos a seguir para a pasta WEB-INF do projeto criado anteriormente no item 1:
* struts-config.xml;
* tiles-defs.xml;
* validation.xml;
* validator-rules.xml;
* web.xml.
7- Dentro da pasta WebContent do projeto criado anteriormente no item 1 criar uma pasta onde serão armazenadas as páginas jsp's. No caso do exemplo será dado o nome de pages.
8- Criar um arquivo para redirecionamento, nesse caso será chamado de index.jsp que deverá ficar na pasta WebContent do projeto criado anteriormente no item 1. O conteúdo desse arquivo pode ser visto logo a seguir:
9- Entrar no arquivo struts-config e localizar a tag "";
10- Inserir a tag "" que irá efetuar o redirecionamento;
11- Entrar no arquivo struts-config e localizar a tag "";
12- Inserir a tag "" que irá carregar a página hello.jsp:
13- Criar um arquivo chamado "hello.jsp" que será carregado ao entrar;
2- Dentro da pasta WEB-INF criar uma pasta para colocar as tag-libs do struts. Particularmente, prefiro criar com o nome "struts" para referenciar as libs organizadamente dentro do projeto;
3- Descompactar o arquivo struts-blank que contém os arquivos necessários para montar o projeto;
4- Dentro do diretório \struts-blank\WEB-INF deverá ser copiado os seguintes arquivos para a pasta criada anteriormente no item 4:
* struts-bean.tld;
* struts-html.tld;
* struts-logic.tld;
* struts-nested.tld;
* struts-tiles.tld.
5- Dentro do diretório \struts-blank\WEB-INF\lib deverá ser copiado os arquivos a seguir para a pasta WEB-INF\lib do projeto criado anteriormente no item 1:
* antlr.jar;
* commons-beanutils.jar;
* commons-digester.jar;
* commons-fileupload.jar;
* commons-logging.jar;
* commons-validator.jar;
* jakarta-oro.jar;
* struts.jar.
6- Copiando os arquivos de configuração; dentro do diretório \struts-blank\WEB-INF copiar os arquivos a seguir para a pasta WEB-INF do projeto criado anteriormente no item 1:
* struts-config.xml;
* tiles-defs.xml;
* validation.xml;
* validator-rules.xml;
* web.xml.
7- Dentro da pasta WebContent do projeto criado anteriormente no item 1 criar uma pasta onde serão armazenadas as páginas jsp's. No caso do exemplo será dado o nome de pages.
8- Criar um arquivo para redirecionamento, nesse caso será chamado de index.jsp que deverá ficar na pasta WebContent do projeto criado anteriormente no item 1. O conteúdo desse arquivo pode ser visto logo a seguir:
9- Entrar no arquivo struts-config e localizar a tag "
10- Inserir a tag "
11- Entrar no arquivo struts-config e localizar a tag "
12- Inserir a tag "
13- Criar um arquivo chamado "hello.jsp" que será carregado ao entrar;
14- Subir o servidor de web e entrar com a url "http://localhost:8080/NOME_DO_SEU_PROJETO".
domingo, 15 de março de 2009
Dicionário de imposto de renda
A seguir seguem alguns termos que podem ser úteis para quem deseja prestar as contas com a receita federal (imposto de renda):
Esse foi um breve resumo de alguns termos que a Secretaria da Receita Federal utiliza para que os contribuintes prestem as contas corretamente. É importante que os contribuintes visitem o site da Receita para que sejam solucionadas quaisquer outras dúvidas.
- ANTECIPAÇÃO
- CÔNJUGE
- DARF (Documento de Arrecadação da Receita Federal)
- DEDUÇÃO
- DIRF (Declaração de Imposto de Renda Retido na Fonte)
- ESPÓLIO
- INFORME DE RENDIMENTO
- IRRF (Imposto de Renda Retido na Fonte)
- LIVRO CAIXA
- MALHA FINA
- RESTITUIÇÃO
Esse foi um breve resumo de alguns termos que a Secretaria da Receita Federal utiliza para que os contribuintes prestem as contas corretamente. É importante que os contribuintes visitem o site da Receita para que sejam solucionadas quaisquer outras dúvidas.
JSF - Erro no resource bundle
Apesar de ser um pouco tarde, acabei de solucionar um problema e fiquei disposto a postar a solução. Estou montando um projeto utilizando as seguintes ferramentas:
no arquivo faces-config:

Obviamente que o arquivo de resources ficou na seguinte estrutura do projeto:
- Ide Eclipse;
- JSF;
- Plug-in do JBoss Tools;
- Facelets;
- Rich-Faces.
java.util.MissingResourceException: Can't find bundle for base name test.resources.MessageResources, locale pt_BRO problema é que não estava sendo possível encontrar o arquivo resource.properties. Para contornar esse problema foi necessário adicionar o
java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:836)
java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:805)
java.util.ResourceBundle.getBundle(ResourceBundle.java:699)
javax.faces.component.MessageFactory.getMessage(MessageFactory.java:122)
javax.faces.component.MessageFactory.getMessage(MessageFactory.java:199)
javax.faces.component.MessageFactory.getMessage(MessageFactory.java:232)
javax.faces.component.MessageFactory.getMessage(MessageFactory.java:209)
javax.faces.component.UIInput.addConversionErrorMessage(UIInput.java:1074)
javax.faces.component.UIInput.validate(UIInput.java:630)

- JavaSource\resources_pt_BR.properties.
domingo, 20 de julho de 2008
Exceções em Java
O conceito de uma exceção em programação é quando algo não ocorre conforme o desejado, logo é iniciado (ou não dependendo da previsão do desenvolvedor) um processo / programa. Em Java há recursos para que essas exceções sejam devidamente tratadas nas cláusulas TRY / CATCH / FINALLY. Sugerindo a classe abaixo:
package br.com.excecoes.everton;
public class Telefone{
public String returnDDD(String str){
return str.substring(0, 3);
}
}
Esse método retornaria o prefixo do telefone, ou seja, os três primeiros dígitos. É importante ressaltar que esse método funcionaria, embora não seja tratado o tipo de informação que está sendo passada por parâmetro, isto é, se esse método receber "null", será lançado uma NullPointerException; se for recebido uma string vazia, a exibição para o usuário final seria StringIndexOutOfBoundsException, convenhamos para um usuário final, é uma situação altamente desagradável receber esse tipo de mensagem na tela do sistema. Vamos aplicar boas práticas de orientação a objetos, cada método deve assumir a responsabilidade pela validação dos dados que recebe. No código a seguir, serão efetuadas algumas revisões no método returnDDD lançando exceções:
public class Telefone {
public String returnDDD(String str) throws Exception{
if(str==null){
throw new IllegalArgumentException("Parâmetro nulo");
}else if(str.length() < 3){
throw new IllegalArgumentException("Tamanho do parâmetro tem que ser maior do que 3");
}
try{
int prefixo = Integer.valueOf(str.substring(0, 3));
}catch(NumberFormatException numEx){
throw new NumberFormatException("Prefixo tem que ser um número");
}
return str.substring(0, 3);
}
}
Revisado o código, a informação recebida é devidamente tratada. Caso seja recebido um valor null para o texto, será lançado uma NullPointerException; caso venha uma string vazia a exibição será StringIndexOutBoundsException. Em ambos situações ocorrem bugs do método returnDDD, sendo que não deveriam acontecer em nenhuma circunstância. Por isso foram criadas exceções mais específicas para que o sistema tenha o mínimo de respostas amigáveis. No caso do nosso método, são tratados mais exceções, como por exemplo o tamanho mínimo da string e se realmente é um valor numérico.
Abaixo temos a classe main que faz a chamada da classe Telefone:
public class ExcecoesJava {
public static void main(String[] args) {
Telefone fone = new Telefone();
try{
System.out.println("O prefixo do telefone eh: " +
fone.returnDDD("12"));
}catch(IllegalArgumentException ex){
System.out.println(ex.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Vamos verificar algumas mensagens de acordo aos parâmetros passados:
Os parâmetros e respostas em "vermelho", seriam condições negativas, ou seja, erros que seriam passados como parâmetros, embora devidamente tratados por nosso programa.
Sequência
Sempre trate as exceções pela sua respectiva hierarquia, note que no nosso método a última exceção lançada é a Exception, por ser a mais genérica.
Conclusão
O artigo descrito anteriormente teve o intuito de abordar alguns pontos interessantes sobre manipulação de exceções, obviamente existem mais a ser estudado - melhorar os conceitos sempre nos ajuda a entender melhor o mecanismo de tratamento fornecido pelo Java. É importante ressaltar que por mais trabalhoso que aparente, é fundamental o devido tratamento dos erros. Certamente, o projeto será mais robusto, tendo o cuidado de lidar com os erros de forma mais específica, em uma linguagem que possue um mecanismo de tratamento de erros altamente sofisticado.
package br.com.excecoes.everton;
public class Telefone{
public String returnDDD(String str){
return str.substring(0, 3);
}
}
Esse método retornaria o prefixo do telefone, ou seja, os três primeiros dígitos. É importante ressaltar que esse método funcionaria, embora não seja tratado o tipo de informação que está sendo passada por parâmetro, isto é, se esse método receber "null", será lançado uma NullPointerException; se for recebido uma string vazia, a exibição para o usuário final seria StringIndexOutOfBoundsException, convenhamos para um usuário final, é uma situação altamente desagradável receber esse tipo de mensagem na tela do sistema. Vamos aplicar boas práticas de orientação a objetos, cada método deve assumir a responsabilidade pela validação dos dados que recebe. No código a seguir, serão efetuadas algumas revisões no método returnDDD lançando exceções:
public class Telefone {
public String returnDDD(String str) throws Exception{
if(str==null){
throw new IllegalArgumentException("Parâmetro nulo");
}else if(str.length() < 3){
throw new IllegalArgumentException("Tamanho do parâmetro tem que ser maior do que 3");
}
try{
int prefixo = Integer.valueOf(str.substring(0, 3));
}catch(NumberFormatException numEx){
throw new NumberFormatException("Prefixo tem que ser um número");
}
return str.substring(0, 3);
}
}
Revisado o código, a informação recebida é devidamente tratada. Caso seja recebido um valor null para o texto, será lançado uma NullPointerException; caso venha uma string vazia a exibição será StringIndexOutBoundsException. Em ambos situações ocorrem bugs do método returnDDD, sendo que não deveriam acontecer em nenhuma circunstância. Por isso foram criadas exceções mais específicas para que o sistema tenha o mínimo de respostas amigáveis. No caso do nosso método, são tratados mais exceções, como por exemplo o tamanho mínimo da string e se realmente é um valor numérico.
Abaixo temos a classe main que faz a chamada da classe Telefone:
public class ExcecoesJava {
public static void main(String[] args) {
Telefone fone = new Telefone();
try{
System.out.println("O prefixo do telefone eh: " +
fone.returnDDD("12"));
}catch(IllegalArgumentException ex){
System.out.println(ex.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Vamos verificar algumas mensagens de acordo aos parâmetros passados:
- parâmetro "011-55556666", a resposta seria: O prefixo do telefone eh: 011;
- parâmetro null, a resposta seria: Parâmetro nulo;
- parâmetro "12", a resposta seria: Tamanho do parâmetro tem que ser maior do que 3.
Os parâmetros e respostas em "vermelho", seriam condições negativas, ou seja, erros que seriam passados como parâmetros, embora devidamente tratados por nosso programa.
Sequência
Sempre trate as exceções pela sua respectiva hierarquia, note que no nosso método a última exceção lançada é a Exception, por ser a mais genérica.
Conclusão
O artigo descrito anteriormente teve o intuito de abordar alguns pontos interessantes sobre manipulação de exceções, obviamente existem mais a ser estudado - melhorar os conceitos sempre nos ajuda a entender melhor o mecanismo de tratamento fornecido pelo Java. É importante ressaltar que por mais trabalhoso que aparente, é fundamental o devido tratamento dos erros. Certamente, o projeto será mais robusto, tendo o cuidado de lidar com os erros de forma mais específica, em uma linguagem que possue um mecanismo de tratamento de erros altamente sofisticado.
sábado, 19 de julho de 2008
Compatibilidade de Servidores JAVAEE
Estava no site da sun e encontrei algo muito interessante, uma lista de servidores compatíveis com a tecnologia JAVAEE, isto é, homologados pela Sun MicroSystems. É importante ressaltar que não está sendo mencionado o JBOSS, um dos servidores de aplicações mais utilizados. O JBOSS é um produto maduro, instalado em alguns ambientes de produção de diversos segmentos de mercado por todo o mundo. Para conferir os servidores homologados acesse Compatibility Servers.
Assinar:
Postagens (Atom)