Configurando Tomcat 6 no Netbeans
Esse é um post para quem nunca configurou um servidor Web no Netbeans. Se você já fez isso, dê uma olhada em outros artigos sobre o Tomcat ou Netbeans
.
Faça o download do Tomcat 6 no endereço: http://tomcat.apache.org/download-60.cgi e descompacte em uma pasta (escolha a versão zip ou tar.gz). Abra o Netbeans e vá na Aba Services (Window, Services). Clique com o botão direito em Servers, Add Server… Escolha Tomcat 6 e clique em Next.
Informe a localização do seu Tomcat, um usuário e uma senha e clique em Finish. Um novo servidor deve ter sido adicionado. Para alterar as configurações de inicialização e porta você pode clicar com o botão direito no servidor criado e selecionar Properties.
Você também tem a opção de editar o arquivo server.xml ou visualizar o log do servidor além de parar e iniciar o Tomcat em modo de profiling e debug. Para associar um projeto existente ao Tomcat é só clicar com o botão direito, Properties, Run e escolher o respectivo servidor.
Para outros servidores o processo é semelhante. Bem simples…
Qualquer dúvida é só avisar.
Client JAX-RPC no Netbeans 6.9
O JAX-RPC é uma API que permite a invocação serviços web definido por um arquivo WSDL. Na sua nova versão foi renomeada para JAX-WS. O motivo da substituição do nome vai além da possível confusão de RPC com Webservices. Os detalhes da mudança do nome você pode encontrar aqui: http://weblogs.java.net/blog/kohlert/archive/2005/05/jaxrpc_20_renam.html
O Netbeans possui um plugin para JAX-WS, mas em alguns casos você pode precisar utilizar a versão antiga (o JAX-RPC) devido ao formato da definição de serviço especificado e ao tentar utilizar no Netbeans você pode receber o seguinte erro:
You must download JAX-RPC support plugin to create a JAX-RPC client
Ao acessar a seção de plugins, o plugin para JAX-RPC não existe. Para instalá-lo é necessário utilizar um update center de desenvolvimento que é construído periodicamente pelo hudson dos projetos do Netbeans. Vamos ao passo a passo. Abra o Netbeans, vá no menu Tools, Plugins, Settings, Add.
No nome coloque: “NetBeans Última Versão de Dev” e na URL coloque: http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/lastStableBuild/artifact/nbbuild/nbms/updates.xml.gz
Pressione OK. Vá em Available Plugins e selecione JAX-RPC Web Services (que existe agora). Clique em Install. Na próxima tela, clique em Next, concorde com os termos se deseja prosseguir e clique em Install.
Clique em Finish e Close. Crie um novo projeto Java. No novo projeto criado, clique com o botão direito, New, Other, Web Services, Web Service Client, Next. Selecione o WSDL, informe o pacote e clique em Finish. Aguarde alguns segundos e as classes geradas ficarão disponíveis em Generated Sources (jax-rpc).
Aí é só criar um classe Java para utilizar o que foi criado. Se você quiser pode testar o serviço acessando o nó Web Service References na aba Projects.
Ou alterar as propriedades do cliente de Web Service criado:
Google+
Aplicação completa JME com LWUIT e Floggy
Hoje estou disponibilizando para todos o acesso ao fonte de uma aplicação que a gente fez em apenas em alguns dias… para ser sincero código mesmo foi feito em apenas 4 dias (ou melhor 4 noites), tivemos mais três dias para escolha do nome, um dia para definição da equipe, definição de logotipo e definições do caso de uso e 2 dias eu descansei e trabalhei em outras coisas… Então foram 10 dias (somente tempo livre) contando todas as etapas para a aplicação completa. A idéia genial do projeto surgiu do Egberto, alguns casos de uso e o vídeo também foi feito por ele, testes, casos de uso, colaboração com idéias e algumas imagens como o logotipo foram feitos pelo Éver. E eu fiz o código.
Queríamos participar do concurso da Nokia, mas não deu tempo de assinar a aplicação e ela não ficou como queríamos, então não ganhamos, mas valeu como esperiência. Como estávamos prevendo o desenvolvimento com mais gente e acabou não dando certo, eu adotei uma estrutura de pacotes semelhante ao desenvolvimento web, já que a maioria que entrou no projeto vinha desse contexto e não de desenvolvimento mobile. O código ainda tem alguns bugs, não está limpando alguns campos, mas a aplicação está funcional, embora não esteja otimizada. Tem também alguns erros de inglês no vídeo… vamos corrigir depois
Utilizamos LWUIT e Floggy de framework para a aplicação. Abaixo está a descrição do projeto.
GREENHOUSE
Sua consciência ecológica!
“O efeito estufa é gerado pela derrubada de florestas, lançamento de gases poluentes na atmosfera, principalmente os que resultam da queima de combustíveis fósseis. Esse efeito ocasiona o super aquecimento do nosso planeta. O aplicativo greenhouse será sua consciência ecológica, informando a você a quantidade de árvores necessárias para consumir o CO2 produzido, de acordo com o meio de transporte automotivo.”
O projeto foi feito com Netbeans 6.9. O código fonte encontra-se disponível para download pelo subversion: http://gvlabs.org/svn/mobile/Greenhouse/
Se você deseja somente instalar no seu celular, segue o download da aplicação: http://www.thiagovespa.com.br/apps/Greenhouse.zip
Se você não sabe utilizar o subversion no Netbeans, aqui tem um breve tutorial: http://www.thiagovespa.com.br/blog/2010/09/20/subversion-no-netbeans/
Instalação do ambiente:
- Fazer download do Netbeans Completo (Já vem com o JME) e instalar. Quem tiver interesse pode instalar o JME SDK 3.0 também: http://java.sun.com/javame/downloads/sdk30.jsp
- Abrir o Netbeans, ir em Tools, Plugins e atualiza-lo.
- Fazer o download do Perl: http://strawberry-perl.googlecode.com/files/strawberry-perl-5.12.0.1.msi e instalar
- Reiniciar o computador
- Baixar o SDK da Nokia Symbian^3 0.8: http://www.forum.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6-b5a5-af0631419e9c/S60_All_in_One_SDKs.html
- Instalar o SDK da Nokia. A partir de agora você já pode abrir o emulador da Nokia
- Abrir o Emulador e configurar data e hora. Pode usar o teclado do computador, não precisa usar somente o teclado do celular.
Configuraçõe Adicionais – Netbeans
Configurar o emulador da Nokia
- Tools, Java Platform, Add Platform, Java ME MIDP Platform, Next
- Verificar se encontrou o emulador da Nokia, Next
- Finish
Configurar a lib do LWUIT
- Faça o Download do LWUIT em: http://java.sun.com/javame/technology/lwuit/ no botão Download LWUIT
- Descompacte ele em uma pasta
- Vá no netbeans, Tools, Libraries
- New Library…, Library Name: LWUIT, Library Type: Class Libraries
- Add Jar/Folder, Escolher o LWUIT.jar que está na pasta lib do LWUIT, Apertar Ok
Configurar a lib do Floggy
- Faça o Download do Floggy em: http://floggy.sourceforge.net/download.html na seção Main Bundle
- Descompacte ele em uma pasta
- Vá no netbeans, Tools, Libraries
- New Library…, Library Name: Floggy, Library Type: Class Libraries
- Add Jar/Folder, Escolher o floggy-persistence-framework.jar que está na pasta lib do Floggy, Apertar Ok
- Abrir o arquivo build.xml (Visualizar por Window, Files) e mudar a propriedade floggy.path para o caminho da instalação do floggy (Favor não commitar o build.xml com suas alterações)
Configurar o Checkstyle (somente para commiters)
- Ir em Tools, Plugin
- Settings, Add
- Name: Checkstyle, URL: http://www.sickboy.cz/checkstyle/autoupdate/autoupdate-2.xml – OK
- Avaliable Plugins, Reload Catalog
- Selecionar Checkstyle beans plugin e library, Install
- Confimar as opções até o final
Espero que gostem. Quem quiser contribuir para melhorar esse projeto é só me avisar que eu libero acesso como commiter no repositório.
Google+Subversion no Netbeans
Esse é um artigo simples para quem nunca mexeu com Subversion, mas tem curiosidade de saber como funciona e o que é. Aprendendo uma vez em uma ferramenta como Netbeans, fica fácil utilizar em outras ferramentas como o Subclipse (instalação explicada aqui), Subversive, Tortoise, RapidSVN, … Os nomes e conceitos são os mesmos para qualquer ferramenta.
O Subversion ou SVN para os íntimos
é um sistema de controle de versões (revisões). O objetivo dele é controlar versões de documentos e códigos-fonte, dessa forma, o código fica centralizado em um servidor permitindo verificar um histórico de quem alterou algum arquivo, restaurar versões anteriores, é excelente para o trabalho em equipe distribuídas e permite criar diversos ramos (branches) de desenvolvimento. No wikipedia tem uma breve explicação sobre SVN. Recomendo a leitura desse artigo para quem quer aprender Subversion sem o uso de ferramentas gráficas.
Você vai precisar do Netbeans e de um repositório de Subversion. Caso não consiga nenhum repositório gratuito, fale comigo que eu arrumo pra você. Para colocar algum projeto no repositório é só clicar com o botão direito no projeto, Versioning, Import into Subversion Repository, informe a url do repositorio, o usuário e a senha. Clique em Next.
Se por acaso você receber a seguinte mensagem:
==[IDE]== Sep 20, 2010 11:58:17 AM Connecting to Subversion Repository…
Authorization failed
svn: OPTIONS of ‘http://www.thiagovespa.com.br/svn/samples’: authorization failed: Could not authenticate to server: rejected Basic challenge (http://www.thiagovespa.com.br)
Você deve ser um usuário de Ubuntu. Existe um bug ainda em aberto sobre isso: https://bugs.launchpad.net/ubuntu/+source/subversion/+bug/473139
No bug aberto explica como resolver, mas a forma mais rápida que encontrei foi digitar: svn checkout ${endereco_svn} e informar o usuário e senha e milagrosamente o Subversion começa a funcionar no Netbeans.
Informe uma pasta do repositório para o projeto ou aceite a sugerida e escreva alguma descrição e clique em Next. Marque os arquivos que deseja enviar (commitar) para o servidor e clique em Finish.
Projeto já no repositorio. Para baixar as alterações de outros usuários, é só clicar com o botão direito no projeto, Subversion, Update. Para efetivar suas alterações no servidor, clicar com o botão direito no arquivo alterado ou projeto e selecionar a opção Commit, informar o que foi alterado e clicar em Commit.
Todas as outras ferramentas de Subversion utilizam o mesmo conceito de Import, Update e Commit. Existem outros recursos interessantes, como o histórico (botão direito, Subversion, Search History). Permite ver as diferenças entre versões entre outras opções. Qualquer dúvida é só avisar.
Google+Testando o OpenSwing
Um amigo meu me falou de um framework que ele ouviu falar muito bem para aplicações desktops chamando OpenSwing. Fiquei curioso e resolvi testar. Segundo o site, o OpenSwing é um conjunto de componentes gráficos avançados de código aberto baseados no Swing. Além disso, é um framework com suporte a binding entre o modelo de dados e componentes baseado em MVC. Parece promissor.
Baixei o Netbeans 6.8 completo (as versões 6.9.x e 7.0 estão com problemas ao editar a parte gráfica) e o framework. Instalei o Netbeans e descompactei o OpenSwing. Apesar da versão no site ser recente, a documentação está bastante desatualizada. O Netbeans utilizado na documentação é o 4.1… muito antigo. Pela especificação, os componentes seguem os padrões JavaBeans, portanto creio que não deva ser um problema para todas as versões do Netbeans e outras IDEs. Vamos aos passos para configuração.
Inicie o Netbeans, crie um novo projeto: clique em File, New Project, Java Application, Next. Eu não selecionei o Java Desktop Application porque ele utiliza o Swing Application Framework JSR-296 (não é o Swing!). Esse framework está inativo pela JCP. Em Project Name, coloque um nome, no meu caso coloquei: TestOpenSwing. Desmarque a opção de criar uma classe Main (Create Main Class). Clique em Finish.
Selecione Tools, Libraries, New Library. Coloque um nome, como OpenSwing e pressione OK. Clique em Add JAR/Folder. Selecione todos os jars da pasta build do OpenSwing e pressione OK.
Biblioteca configurada! Agora vamos adicionar os componentes à palheta. Selecione Tools, Palette, Swing/AWT Components. Clique em New Category e nomeie: OpenSwing. Selecione a categoria criada e clique Add from Library. Selecione OpenSwing, Next, marque todos, Next, selecione OpenSwing, Finish e Close.
Outra configuração recomendada é alterar o comportamento do designer do Netbeans ao trabalhar com grid control. Para isso, selecione Tools, Options, Miscellaneous, GUI Builder, Altere o Layout Generation Style para Standard Java 6 Code e pressione OK. Configurações na IDE feitas, vamos à configuração do Projeto e criação de uma aplicação exemplo. Clique com o botão direito no seu projeto, Properties, Libraries, Add Library, OpenSwing, Add Library, Ok.
Vamos criar um frame MDI. Para isso é necessário criar uma classe que implemente a interface MDIController e pronto. Segue o código e o screenshot abaixo:
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import org.openswing.swing.internationalization.java.BrazilianPortugueseOnlyResourceFactory;
import org.openswing.swing.internationalization.java.Language;
import org.openswing.swing.mdi.client.ClientFacade;
import org.openswing.swing.mdi.client.MDIController;
import org.openswing.swing.mdi.client.MDIFrame;
import org.openswing.swing.mdi.java.ApplicationFunction;
import org.openswing.swing.tree.java.OpenSwingTreeNode;
import org.openswing.swing.util.client.ClientSettings;
/**
* Sample App
* @author Thiago Galbiatti Vespa
*/
public class MainApplicationMDI implements MDIController {
public MainApplicationMDI() {
try {
Properties props = System.getProperties();
ClientSettings clientSettings = new ClientSettings(new BrazilianPortugueseOnlyResourceFactory(props, false), new Hashtable());
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
MDIFrame mdi = new MDIFrame(this);
} catch (ClassNotFoundException ex) {
Logger.getLogger(MainApplicationMDI.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(MainApplicationMDI.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(MainApplicationMDI.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedLookAndFeelException ex) {
Logger.getLogger(MainApplicationMDI.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void afterMDIcreation(MDIFrame frame) {
}
public String getAboutImage() {
return null;
}
public String getAboutText() {
return "Esse software foi feito por Thiago Galbiatti Vespa\n"
+ "para demonstrar o uso do Open Swing";
}
public DefaultTreeModel getApplicationFunctions() {
DefaultMutableTreeNode root = new OpenSwingTreeNode();
DefaultTreeModel model = new DefaultTreeModel(root);
ApplicationFunction node1 = new ApplicationFunction("Primeira função", "primeira", "men.gif", null, "Esse botão executa a primeira função");
ApplicationFunction node2 = new ApplicationFunction("Segunda função", "segunda", "appicon.gif", null, "Esse botão executa a segunda função");
ApplicationFunction node2_1 = new ApplicationFunction("Função interna", "interna", "men.gif", null, "Esse botão executa a função interna");
node2.add(node2_1);
root.add(node1);
root.add(node2);
return model;
}
public ClientFacade getClientFacade() {
throw new UnsupportedOperationException("Not supported yet.");
}
public int getExtendedState() {
return JFrame.MAXIMIZED_BOTH;
}
public ArrayList getLanguages() {
ArrayList list = new ArrayList();
list.add(new Language("PT_BR", "Português do Brasil"));
return list;
}
public String getMDIFrameTitle() {
return "Aplicação Exemplo do Open Swing";
}
public void stopApplication() {
System.exit(0);
}
public boolean viewChangeLanguageInMenuBar() {
return true;
}
public boolean viewFileMenu() {
return true;
}
public boolean viewFunctionsInMenuBar() {
return true;
}
public boolean viewFunctionsInTreePanel() {
return true;
}
public JDialog viewLoginDialog(JFrame parentFrame) {
return null;
}
public boolean viewLoginInMenuBar() {
return false;
}
public boolean viewOpenedWindowIcons() {
return true;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MainApplicationMDI();
}
});
}
}
Esse é um exemplo simples, para exemplos completos, consulte a pasta srcdemo do OpenSwing.
























