Arquivo para a categoria 'java'

Code: Acessar URL via Proxy Autenticado no Java

Ontem fiquei curioso em saber como acessar um endereço web por através de uma conexão em um proxy autenticado então achei algumas referencias na net e fiz esse pequeno exemplo:

a seguir o código, que exibe uma caixa de dialogo para entrar com a senha:
ProxyTeste.java:

import java.io.DataInputStream;
import java.io.IOException;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.PasswordAuthentication;
import java.net.URL;

import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.xml.ws.http.HTTPException;

public class ProxyTeste {
	public static void main(String[] args) throws HTTPException, IOException {
		urlDump("http://www.alandaniel.com.br");
	}
	public static void urlDump(String URLName){
		try {
			DataInputStream di = null;
			byte [] b = new byte[1];

			// INFORMAÇÕES DE PROXY, alterar para suas informações de proxy
			System.setProperty("http.proxyHost","10.15.54.10") ;
			System.setProperty("http.proxyPort", "8080") ;

			// AUTENTICAÇÃO DE PROXY
			Authenticator.setDefault(new Authenticator() {
				protected PasswordAuthentication getPasswordAuthentication() {

					JTextField jtf = new JTextField();
					JPasswordField jpf = new JPasswordField();
					if(JOptionPane.showConfirmDialog(null, new Object[]{jtf, jpf}, "Senha:", JOptionPane.OK_CANCEL_OPTION)==0){

						String usuario = jtf.getText();
						char[] senha = jpf.getPassword();

						return new PasswordAuthentication(usuario,senha);
					}else{
						System.exit(0);
						return null;
					}
				}});

			//REALIZA AS CHAMADAS
			URL url = new URL(URLName);
			HttpURLConnection con = (HttpURLConnection) url.openConnection();
			di = new DataInputStream(con.getInputStream());
			//IMPRIME CONTEUDO
			while(-1 != di.read(b,0,1)) {
				System.out.print(new String(b));
			}
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}

}

Fonte: Google…

Maven: Alterar “/src/main/webapp” no arquivo “pom.xml”

Problema: Necessidade de alterar o diretório padrão dos fontes de aplicação web (js, css, jsp,…) de um projeto Maven de “src/main/webapp/” para “context/”
Solução: Definir a configuração warSourceDirectory para o plugin “maven-war-plugin”

Problem: Change standard directory for web application sources on a maven project from “src/main/webapp/” to “context/”
Solution: Define the config warSourceDirectory for the “maven-war-plugin” plugin

Ferramentas envolvidas: Eclipse, NetBeans, M2Eclipse (plugin maven para eclipse)

Descrição:
O padrão para códigos de fonte de aplicação web (js, css, jsp,…) é “/src/main/webapp” como descrito em http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html,
porém existem casos em que se mostra necessário alterar a localização, como por exemplo na minha empresa, que usar como padrão o diretório “context/”.

Quando trabalhamos com um projeto web devemos definir o packaging como war “<packaging>war</packaging>”, quando isso é feito o maven já sabe que terá que usar o plugin “maven-war-plugin” para trabalhar com esse projeto, assim devemos nos preocupar em configurar as propriedades do plugin, como descrito em http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html,
porém existe uma pequena confusão  entre webappDirectory e warSourceDirectory, para que o NetBeans e o M2Eclipse(Eclipse) reconheçam esse diretório Web Pages/Web Resources é necessário que <warSourceDirectory> seja especificado,como no exemplo a seguir:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-1</version>
<configuration>
<!--warSourceDirectory>src/main/webapp/</warSourceDirectory-->
<warSourceDirectory>context/</warSourceDirectory> <!--Atencao: path relativo, sem barra no inicio -->
</configuration>
</plugin>
</plugins>
</build>

Dessa forma o projeto ficará independente de IDE, podendo ser aberto no NetBeans ou importado no Eclipse.
Para atualizar as configurações de projeto do eclipse se baseando no pom.xml clique com o botão direito no projeto > Maven > Update Project Configuration
//!\ ATENÇÃO: Caso existam declarações de <resources> aprontando para algum diretório, no escopo build, estes serão enviados para diretórios diferentes do desejado, pois uma vez já enviados os arquivos o maven não os envia novamente

Java ClassNotFoundException javax.transaction.Synchronization

Solução: adicionar jta.jar no classpath

Java Transaction API: http://java.sun.com/javaee/technologies/jta/index.jsp

java.lang.NoClassDefFoundError: javax/transaction/Synchronization

Configurar Jboss no Linux e inclui-lo no RHDS

Neste tutorial utilizarei o jboss-4.0.5.GA.zip também pode utilizar outra versão ( 4.2.2 ou outra ) e demonstrarei como configura-lo em um ambiente de desenvolvimento. ( Esse tutorial não tem como objetivo configurar um servidor de produção )

O Jboss assim como a maioria dos aplicativos java só necessita o descompactamento e está pronto para utilizar

  1. Faça o download de http://www.jboss.org/jbossas/downloads/
  2. Descompacte-o
  3. Mova para um lugar de sua preferencia (no linux normalmente para /usr/lib/jboss4 no windows por ser em c:/jboss4).
  4. para testar entre na pasta /usr/lib/jboss4/bin/  (caso linux) e execute o comando
    $ ./run.sh
    ou execute o arquivo run.bat caso no windows
  5. caso run.sh não tenha permissão de execução (bash: ./run.sh: Permissão negada) execute o comando como root:
    # chmod +x run.sh
  6. Quando aparecer uma linha de texto no terminal similar a:
    [Server] JBoss (MX MicroKernel) [4.2.1.GA] Started in 11s:198ms
    o servidor terá executado com sucesso.
  7. teste abrindo em seu navegador: http://localhost:8080

Com o jboss devidamente instalado vamos adiciona-lo no RHDS / Eclipse:

  • Em uma nova instalação do RHDS ou em um workspace novo, recomendo remover o servidor que o RHDS instalou automaticamente e reiniciar o RHDS, pois ele gera alguns bugs.
  • Window > Preferences > Server > Installed Runtimes
  • Clique em Add…
  • Selecione a versão do Jboss na qual você deseja configurar, e marque a opção “Also create a new local server”, dessa forma ele adicionará automaticamente o servidor na aba Server.
    clique em Next
  • Em Home Directory localize a raiz do Jboss que você instalou, /usr/lib/jboss4 no nosso exemplo, configuration deixe Default selecionado:
    Clique em Next
  • Finish

A pasta default que são feitos os deploys é %raiz do jboss%/server/default/deploy/ quando publicar algum projeto certifique-se que nessa pasta é criado um arquivo chamado nome_do_projeto.war e se dentro dele estão todos os arquivos necessários para o funcionamento do mesmo.

Dicas:

  • Em geral o Eclipse (base do RHDS) é bem instavel, algumas vezes é necessário remover o servidor e adicionar novamente, muitas vezes também o workspace pode esta bugado, sendo necessário remover o mesmo e começar a configurar todos os projetos denovo (palavra de alguem que sofreu bastante com coisas do tipo)

Criando um simples projeto web com Struts no RHDS

Retificando: De preferencia instale você mesmo o Jboss, como demonstrado no artigo  http://www.webcentro.com.br/2008/10/09/configurar-jboss-no-linux-incluir-no-rhds/ pois a versão instalada pelo RHDS gera muitos problemas.

Nesse artigo quero mostar como criar um projeto web utilizando Struts no Red Hat Developer Studio, caso você não o tenha baixado veja o artigo: http://webcentro.wordpress.com/2008/09/18/rhds-red-hat-developer-studio-download/

Utilizarei o nome de projeto de academico_secretaria, mudem para o nome do projeto de vocês ou nomeiem como teste. Vamos aos passos:

  • Selecione a perspectiva Web Development Perpective:
    Window > Open Perspective > Other > Web Development Perpective
  • File > new > Struts Project
  • Preencha os dados em tela, onde diz Template selecione o único existente: KickStart e clique em Next
  • Nesse passo é muito importante que você selecione Servlet Version 2.4 (as versões 2.3 e 2.5 parecem não dar suporte a Expression Language), caso não exista um servidor (recomendo o jboss, alem de que este é instalado automaticamente durante a configuração do RHDS, senão instale ), clique em next
  • Marque todas as opções, ainda não tive a oportunidade de testar as configurações destes tld’s mas marque de qualquer jeito, clique em Finish

Pronto, seu projeto está criado, vamos realizar o Deploy:

  • Clique na aba Server, caso ela não esteja aparecendo, clique em Window > Show View > Other > Server
  • Observe que o projeto já se encontra selecionado para Publicação no server, caso não esteja, clique com o botão direito sobre o servidor > Add and Remove Projects (veja Dicas mais abaixo).
  • Clique no botão verde com o simbolo de play para iniciar o servidor. Todas vez que você efetuar uma alteração o RHDS automaticamente fará hot deploy, porém isso é configuravel (dando clique duplo no server) e as vezes não é totalmente seguro que atualizará, você também pode efetuar um deploy clicando no icone mais a direita.

Agora que publicamos o projeto, vamos vizualiza-lo:

  • Abra o seguinte endereço em seu navegador: http://localhost:8080/academico_secretaria

Dicas:

  • No linux, caso você encontre problemas ao dar deploy é por que você não tem permissão de escrita na pasta do servidor, execute o seguinte comando como root:
    # chmod -R 777 /usr/local/rhdevstudio/
  • Se o Deploy não funcionar e no console exibir o seguinte erro: “Unable to process deployment descriptor for context ‘null’”, remova o Jboss configurado clicando com o botão direito > delete, e configure como explicado no seguinte artigo: http://webcentro.wordpress.com/2008/10/09/configurar-jboss-no-linux-incluir-no-rhds/
  • Algumas vezes os deploys não são efetivos para resolver você pode:  Clicar com o botão direto > Clean ou Remover o projeto e adicionar novamente ou reiniciar o servidor.
  • Sempre olhe a aba Console para visualizar algum possivel erro.
  • Clicando duas vezes sobre o Server você abre as opções de configuração, clique em Automatic Publishing e marque Never publish automatically, para somente fazer deploy quando você desejar.

Compilar multiplos diretórios por linha de comando

Estou estudando algumas coisas básicas do Java e por isso optei em compilar por linha de comando.
O problema é que para se compilar múltiplos diretórios ( as packages) é necessário listar cada arquivo que deve ser compilado após o comando javac, exemplo:

$ javac package01/Classe.java package02/Classe2.java;

Claro que listar uma infinidade de arquivos seria sacal, a forma a seguir facilita bastante o trabalho. A idéia é buscar todos os arquivos de extensão .java e gravá-los em um arquivo e depois compilar utilizando desses dados:

$ find src -name \*.java -print > file.list
$ javac @file.list

Fonte: http://forums.sun.com/thread.jspa?messageID=2196389

Dicas para modelagem de Sistema

“Especial para a turma de Desenvolvimento de Aplicações Corporativas (DACJaime) da TSI da UFPR  segundo semestre de 2008″

Utilizar a ferramenta Jude Community (http://jude.change-vision.com/jude-web/product/community.html) para o Desenvolvimento dos seguintes diagramas:

  • Diagrama de Casos de Uso
  • Diagrama de Classes
  • Diagrama de Sequência

Para fazer o download é simples, só se cadastrar, a ferramenta funciona tanto em Windows Quanto em linux, para instalar basta descompactar. A versão Community é grátis porém possui sua versão paga.

Utilizar a ferramenta DBDesigner (http://fabforce.net/dbdesigner4/) para criar o:

  • Modelo de Entidade e Relacionamento

Ferramenta livre (alguns dizem que esta descontinuada, porém é a melhor que encontrei para esse fim), funciona tanto no Linux quanto no Windows.
Infelizmente a ferramente é voltada a gerar código para MySql, porém existe uma ferramenta em java desenvolvida por alguém chamado Fred que converte o xml do DbDesigner em DDL para postgres (SQL) psql-0.1.jar (http://www.guj.com.br/posts/downloadAttach/2022.java;jsessionid=1je6g3lqgzy9x.jetty1) para usar execute em seu terminal o comando: java –jar psql-0.1.jar

Para a criação da estrutura base do projet (Pojo’s, Mapeamentos hbm, DAO’s dentre outros) de um projeto java WEB dinamico utilize a ferramenta Jquerena da Celepar (http://www.frameworkpinhao.pr.gov.b/modules/conteudo/conteudo.php?conteudo=6) A principio só funciona no Linux

Para desenvolvimento, utilizar o RHDS (http://webcentro.wordpress.com/2008/09/18/rhds-red-hat-developer-studio-download/)

Espero ter contribuido, Obrigado.

Java registar Path Windows Vista

Problema simples que temos sempre ao instalar um novo windows que porem sempre esqueço.

“C:\Users\user>java
‘java’ is not recognized as an internal or external command,
operable program or batch file.”

A solução é setar nas variaveis de ambiente (environment variables) a direção da pasta em que se encontra o java.exe

No Windows Vista(obs: meu vista está em inglês, então os nomes de menus podem diferir da minha tradução barata ;] ):

* Clique com o botão direito em Meu Computador > Propriedades > Opções Avançadas de Sistema > Variáveis de Ambiente
* Onde diz variáveis de sistema procure por PATH
* edite PATH e adicione o novo endereço (ex: C:\Program Files (x86)\Java\jre1.6.0_02\bin) separando dos outros por um ponto e virgula (;)

Fontes:
http://forums.sun.com/thread.jspa?messageID=10141445
http://java.sun.com/docs/books/tutorial/getStarted/problems/index.html
http://java.sun.com/javase/6/webnotes/install/jdk/install-windows.html#Environment