Java – Criando um serviço WEB para executar fora de um container java (web server standalone with grizzly-http-server / jersey-server / javax.ws.rs)

javaeeNesta publicação vamos mostrar como criar um servidor web standalone, ou seja, vamos compilar o projeto como um jar e executa-lo pelo terminal sem a necessidade de precisar dar deploy em um container java (exemplo: glassfish, toncat, etc). Para isso vamos criar um projeto java com o maven para incluir as seguintes dependências:

javax: javaee-web-api
org.glassfish.grizzly: grizzly-http-server, grizzly-framework
org.glassfish.jersey.core: jersey-server, jersey-common, jersey-client
org.glassfish.jersey.media: jersey-media-sse, jersey-media-json-processing
org.glassfish.jersey.containers: jersey-container-grizzly2-http, jersey-container-servlet

Essas dependências permitem criar um web server e subir sua aplicação em um container próprio. As dependências do javax nos permite criar o serviço web REST, a grizzly fica responsável pelo servidor web e a jersy pelo container. Nesse projeto não vamos chegar a usar todas essas dependências porem vamos deixar no projeto.

Iniciaremos o projeto configurando o pom.xml: Continue reading

Java / GSON – Serializing and Deserializing Generic Types

gson - json

Quando você chama .toJson(obj) o Gson internamente usa obj.getClass() para obter informações sobre os campos para serializar. Da mesma forma na deserialização se passa MyClass.class no método fromJson(json, MyClass.class). Isso funciona bem se o objeto é um tipo não-genérico. No entanto, se o objeto é de um tipo genérico as informações são perdida porcausa da sua generalização. Segue um exemplo:

class Foo<T> {
  T value;
}

Gson gson = new Gson();

Foo<Bar> foo = new Foo<Bar>();
// Não pode serializar foo.value corretamente:
gson.toJson(foo);
// Falha ao deserializar foo.value as Bar:
gson.fromJson(json, foo.getClass()); 

O código acima não consegue interpretar  o valor como um tipo Bar porque o Gson invoca list.getClass() para pegar a informação da classe, mas esse método retorna uma classe cru, Foo.class. Isto significa que Gson não têm nenhuma maneira de saber que este é um objeto do tipo Foo <Bar>, e não simplesmente Foo.

Você pode resolver esse problema especificando o tipo correto para o seu tipo genérico. Você pode fazer isso usando a classe TypeToken veja o exemplo: Continue reading

Java – Como utilizar a FutureTask, controlando o timeout e status de uma thread

multithreadingFutureTask é uma implementação da interface Future a ser executada numa chamada em paralelo. Sendo possível cancelar a execução de uma tarefa, descobrir se a execução já terminou com sucesso ou erro, entre outras operações.

A FutureTask precisa de uma interface para a implementação de uma execução em paralelo. a Callable é parecida com a interface Runnable, mas esta não retorna nenhum valor, enquanto a Callable deve retornar um valor ao final da execução;

MÉTODOS DO FUTURE:

future.cancel(boolean mayInterruptIfRunning) : Cancela o processamento, passar true para interromper se ela ja está iniciada, ou false para cancelar se ainda nao foi iniciada.
future.get(long timeout, TimeUnit unit)  : Espera a resposta da execução de acordo com timeout.
future.get() : Espera a resposta da execução.
future.isDone() : Verifica se a execução já acabou.
future.isCancelled() : Verifica se o processamento foi cancelado.

Exemplo: Continue reading

JAVA/Linux – Configurando JDK no linux – Adicionando JAVA no PATH

java_linux

Faça o Download do JAVA JDK:

http://www.oracle.com/technetwork/pt/java/javase/downloads/index.html

Extraia o arquivo baixado para sua pasta de preferência (exemplo: /opt/java_xxxx)

Opcional: Por costume e em caso de atualização do java, para não precisar mudar minhas configurações eu crio um link simbólico para referenciar a ultima versão do java:

$ ln -s /opt/java_xxxx /opt/java_jdk/

Para configurar o PATH, JAVA_HOME, CLASSPATH e MANPATH edite o arquivo:

$ sudo gedit /etc/profile

Adicione as seguintes linhas no topo do arquivo:

#JAVA
export JAVA_HOME=/opt/java_jdk
export CLASSPATH="$JAVA_HOME/lib"
export PATH="$PATH":"$JAVA_HOME/bin"
export MANPATH=/usr/local/man:/usr/man:"$JAVA_HOME/man"

Java – Como Retornar o ID do registro inserido de uma tabela (Get Autoincrement value after INSERT query in MySQL)

O método abaixo fica responsável em retornar o id autoincrement do registro inserido de uma tabela:

.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
  if (stm.executeUpdate() > 0) {
     ResultSet rs = stm.getGeneratedKeys();
     if (rs.next()) {
        return rs.getInt(1);
     }
}

Integrando o SDK Android ao NetBeans

android-and-netbeans

 

Nesta publicação vamos mostrar como integrar o Android SDK ao NetBeans. O NetBeans é uma excelente IDE e como muitas pessoas não se familiarizaram com a interface do Eclipse ela é a mais recomendada para programadores Java.

Vamos utilizar as seguintes ferramentas: NetBeans 7.3.1, Android SDK R22 (aprenda como instalar aqui)

A integração do Android ao Netbeans não passa de um Plugin. Para iniciar a instalação vamos fazer os seguintes passos: Continue reading

Java / Android – Remover acentos de uma String

acentos

Remover acentos de uma String
Java Removendo acentuação
Como remover acentos de uma String
Normalize String
Java remover acentuação
String remover acentuação

Resultado:

run:
a c guilherme biff a a a a u helpdev

Olá, mundo! Olá HELP DEV

migrarwordpress1

 

A migração está quase completa….

Saimos do domínio free do http://zarelli.wordpress.com para um próprio.

Sejam bem vindos ao “Help DEV”

Conforme o tempo vamos ajustando todos os conteúdos e definindo um layout mais agradável para nossos leitores.

Linux – Executar jar na inicialização do sistema. Jar como serviço. (How to make a jar file run on startup)

java linux tux

Uma maneira fácil de se fazer isso é utilizar o SysVInit.

1 – Você deve criar um script de start e stop para sua aplicação. No exemplo vamos utilizar o diretorio /opt/:

Start Script: /opt/server/myapp-start.sh
Stop Script: /opt/server/myapp-stop.sh

Cada arquivo dará as instruções necessárias para executar e parar o aplicativo.
O conteudo é bem simples, exemplo de como ligar:

#!/bin/bash

java -jar /opt/server/myapp.jar

Para parar, pode ser algo como:

#!/bin/bash
# Grabs and kill a process from the pidlist that has the word myapp

pid=`ps aux | grep myapp | awk '{print $2}'`
kill -9 $pid

2 – Crie um script ‘myscript’ e coloque-o em /etc/init.d.

‘/etc/init.d/myscript’ conteudo: Continue reading