Aumentando o tempo de transação do JBoss

Olá a todos!

Para quem trabalha com JBoss AS 5.1.GA já deve ter se deparado com a seguinte exception “com.arjuna.ats.jbossatx.jta.TransactionManagerService”, ela acontece pois o tempo padrão de uma transação no JBoss é de 5 minutos.

Bom, mas sempre teremos métodos que levaram mais do que 5 minutos para responder, então vamos aumentar este tempo fazendo as configurações necessárias.

Para realizar esta configuração vá ate o arquivo jboss/server/default/deploy/transaction-jboss-beans.xml e edite a seguinte linha:


<property name="transactionTimeout">300</property>

O valor 300 é o padrão, pois é configurado em segundos, onde 300 segundos são iguais a 5 minutos, mude este valor para um que atenda as suas necessidades e reinicie o servidor.

Mas lembrando que se seus métodos estão demorando muito tempo e o sistema estiver apresentado algum problema de performance, está não é a solução, e sim, usar uma ferramenta de profile como por exemplo a Visual VM para encontrar o gargalo da aplicação.

Se quiser saber mais saber a Visual VM, deixe um comentário ou aguarde o próximo post.

Até mais…

Anúncios

Liberando acesso do Servidor JBoss AS 7 pela rede.

Olá a todos!

Para quem já trabalhou com JBoss 5.1GA que é a versão mais estável e está migrando para a versão 7.1 deve ter se deparado com o problema em disponibilizar o acesso do sistema pela rede, bem, na versão 5.1 se usava o comando -b 0.0.0.0 tanto no eclipse como nos arquivos.conf do JBoss.

Para a versão 7.1 isso muda um pouco, se você esta desenvolvendo e realizando os testes realizando o start do servidor pelo eclipse é possível continuar configurando o host como 0.0.0.0, mas para fazer um deploy manual, vá ate o arquivo /jboss//standalone/configuration/standalone.xml e econtre as seguinte linhas:


<interfaces>
    <interface name="management">
        <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
    </interface>
    <interface name="public">
        <inet-address value="${jboss.bind.address:127.0.0.1}"/>
    </interface>
    <interface name="unsecure">
        <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
    </interface>
</interfaces>

Para liberar o sistema pela rede, troque o endereço 17.0.0.1 por 0.0.0.0, pronto, assim o sistema estará disponível na rede.

O mesmo vale para quado você estiver usando o tipo domain, vá até /domain/configuration/domain.xml e edite as mesmas linhas.

Até mais…

Criando aplicação Java com Hibernate e PostgreSQL – Parte 3

Ola a todos!

Para iniciar está parte, primeiro é preciso ter feitos todos os passos descritos neste post.

Está é a 3ª parte do tutorial, onde vamos criar os arquivos de configuração do Hibernate e gerar as entidades usando a engenharia reversa com as tabelas já existentes no banco, essa é uma das melhores práticas, pois suas entidades vão representar fielmente seu banco de dados, tanto em colunas como nos relacionamentos.

3 – Criando projeto

O primeiro arquivo que precisamos é o persistence.xml, esse arquivo é responsável por realizar a conexão com o banco de dados, para mais informação sobre este arquivo deixe um comentário. Abaixe segue o arquivo que será usado para se conectar com o banco de dados que criamos neste post.


<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
                        http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
	version="1.0">
	<persistence-unit name="maindatabase" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
			<property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
			<property name="hibernate.connection.username" value="postgres" />
			<property name="hibernate.connection.password" value="database" />
			<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/delivery" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.format_sql" value="true" />
		</properties>
	</persistence-unit>

</persistence>

O segundo arquivo de que precisamos é o arquivo.reveng.xml, este arquivo é responsável por gerenciar as SEQUENCES geradas pelo banco de dados PostgreSQL, para mais informações sobre este arquivo deixei um comentário.  Abaixe segue o arquivo que será usado para gerenciar as SEQUENCES do banco de dados que criamos neste post.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

<hibernate-reverse-engineering>
  <table-filter match-schema="public" match-name=".*"/>
<table schema="public" name="buy">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_buy</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="provider">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_provider</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="delivery">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_delivery</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="client">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_client</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="product">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_product</param>
  		</generator>
  	</primary-key></table>
<table schema="public" name="stock">
  	<primary-key>
  		<generator class="sequence">
  			<param name="sequence">public.seq_stock</param>
  		</generator>
  	</primary-key></table>
</hibernate-reverse-engineering>

Com estes dois arquivos já em mãos podemos iniciar a criação do projeto, os passos para a criação do projeto podem ser visto no vídeo abaixo.

No próximo post será disponibilizada a classe GenericDAO.java que vai ajudar você a criar seus DAO’s para consultas ao banco, como executar suas primeiras consultas e explicar como funciona a estrutura que foi gerada neste post.

Até mais…

Criando aplicação Java com Hibernate e PostgreSQL – Parte 2

Olá a todos!

Para iniciar está parte, primeiro é preciso ter feitos todos os passos descritos neste post.

Está é a 2ª parte do tutorial, onde vamos criar o banco de dados, como exemplo iremos utilizar o banco de dados utilizado para criar a aplicação Deliveries Manager que se encontra neste post.

2 – Criando banco de dados

Abaixo segue uma imagem do banco de dados que foi retirada do framework PowerArchitect que é uma excelente opção para visualizar seus banco de dados de modo gráfico e realizar a geração de script, seu maior diferencial é o suporte a vários bancos de dados inclusive o PostgreSQL que é abordado neste tutorial, mais informações sobre este framework serão divulgadas em breve em outro post.

database

database

Abaixo segue o script do banco de dados que foi gerado pelo framework descrito acima.


CREATE SEQUENCE public.seq_provider;

CREATE TABLE public.provider (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_provider'),
                name VARCHAR(30),
                celluar VARCHAR(30) NOT NULL,
                phone VARCHAR(30) NOT NULL,
                cnpj VARCHAR(30) NOT NULL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_provider PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_provider OWNED BY public.provider.id;

CREATE SEQUENCE public.seq_product;

CREATE TABLE public.product (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_product'),
                name VARCHAR(30),
                value REAL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_product PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_product OWNED BY public.product.id;

CREATE UNIQUE INDEX uk_product_name
 ON public.product
 ( name );

CREATE SEQUENCE public.seq_stock;

CREATE TABLE public.stock (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_stock'),
                date TIMESTAMP,
                product_id BIGINT,
                quantity INTEGER,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_stock PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_stock OWNED BY public.stock.id;

CREATE SEQUENCE public.seq_client;

CREATE TABLE public.client (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_client'),
                name VARCHAR(30) NOT NULL,
                celluar VARCHAR(30) NOT NULL,
                phone VARCHAR(30) NOT NULL,
                city VARCHAR(30) NOT NULL,
                district VARCHAR(30) NOT NULL,
                street VARCHAR(30) NOT NULL,
                house_number INTEGER NOT NULL,
                distance REAL NOT NULL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_client PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_client OWNED BY public.client.id;

CREATE SEQUENCE public.seq_delivery;

CREATE TABLE public.delivery (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_delivery'),
                product_id BIGINT,
                client_id BIGINT,
                date TIMESTAMP,
                quantity INTEGER,
                value REAL,
                status VARCHAR(30) NOT NULL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_delivery PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_delivery OWNED BY public.delivery.id;

CREATE SEQUENCE public.seq_buy;

CREATE TABLE public.buy (
                id BIGINT NOT NULL DEFAULT nextval('public.seq_buy'),
                date TIMESTAMP,
                provider_id BIGINT,
                product_id BIGINT,
                quantity INTEGER,
                value REAL,
                enabled BOOLEAN DEFAULT true,
                CONSTRAINT pk_buy PRIMARY KEY (id)
);

ALTER SEQUENCE public.seq_buy OWNED BY public.buy.id;

ALTER TABLE public.buy ADD CONSTRAINT fk_buy_provider_id
FOREIGN KEY (provider_id)
REFERENCES public.provider (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

ALTER TABLE public.buy ADD CONSTRAINT fk_buy_product_id
FOREIGN KEY (product_id)
REFERENCES public.product (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

ALTER TABLE public.delivery ADD CONSTRAINT fk_delivery_product_id
FOREIGN KEY (product_id)
REFERENCES public.product (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

ALTER TABLE public.stock ADD CONSTRAINT fk_stock_product_id
FOREIGN KEY (product_id)
REFERENCES public.product (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

ALTER TABLE public.delivery ADD CONSTRAINT fk_delivery_client_id
FOREIGN KEY (client_id)
REFERENCES public.client (id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE;

Abaixo um vídeo de como executar este script no banco de dados.

Pronto já temos a ambiente configurado e o banco de dados da aplicação, no próximo post será explicado como criar o projeto e configurar o Hibernate.

Até mais.

Download e Configuração do Eclipse Juno com JBoss AS 7

Olá a todos!

Para quem está querendo se atualizar utilizando a versão mais atual das ferramentas free utilizadas para o desenvolvimento Java web, abaixo segue a configuração do Eclipse Juno com JBoss 7.

Clique neste link para realizar o download do Eclipse Juno, versão mais atual e voltada para o desenvolvimento web.

Clique neste link para realizar o download do JBoss AS 7, versão mais atual.

Após realizar o download da IDE de desenvolvimento Eclipse, descompacte o arquivo em um diretório de sua preferência, com o Eclipse Juno já inicializado como na imagem abaixo, vamos instalar o JBoss Tools, que são um conjunto de ferramentas que auxiliam no desenvolvimento web.

Eclipse Juno

Eclipse Juno

Para instalar o JBoss Tools, acesse, Menu >> Help >> Install New Software e adicione a seguinte URL http://download.jboss.org/jbosstools/updates/stable/juno/

Para entender melhor siga os passos descritos nas imagens abaixo:

Inserindo URL

Inserindo URL

Selecionando versão

Selecionando versão

Aceitando termos da licença

Aceitando termos da licença

Instalando software

Instalando software

Após estes passos aguarde até o término da instalação.

O próximo passo é instalar o Servidor de aplicação JBoss AS 7 no Eclipse Juno, para isso descompacte o arquivo em um diretório de sua preferencia.

No Eclipse Juno encontre a aba servidores, caso não encontre acesse Menu >> Window >> Show View e pesquise por server, após isso clique em new server wizard, e siga os passos das imagens abaixo.

Instalar JBoss AS 7

Instalar JBoss AS 7

Selecionando versão do servidor

Selecionando versão do servidor

Inserindo caminho do servidor

Inserindo caminho do servidor

Realizando start do servidor

Realizando start do servidor

Após realizar o start do servidor, acesse a seguinte URL no browser http://localhost:8080/ e veja o resultado com a imagem abaixo.

Servidor JBoss AS 7

Servidor JBoss AS 7

Até mais…

Criando aplicação Java com Hibernate e PostgreSQL – Parte 1

Olá a todos!

Será iniciado um tutorial de como criar sua aplicação Java desktop utilizando Hibernate com banco de dados PostgresSQL.

Parte 1 – Configurando ambiente de trabalho.

Requisitos para iniciar:

  • Java jdk, jre ou open-jdk
  • Eclipse
  • PostgresSQL
  • antlr-2.7.6.jar
  • commons-collections-3.1.jar
  • dom4j-1.6.1.jar
  • hibernate3.jar
  • javassist-3.12.0.GA.jar
  • jta-1.1.jar
  • slf4j-api-1.6.1.jar
  • hibernate-jpa-2.0-api-1.0.0.Final.jar
  • postgresql-8.4-701.jdbc4.jar

Primeiro vamos configurar o ambiente de trabalho que consiste em instalar a plataforma Java, a IDE de desenvolvimento Eclipse e instalar o banco de dados PostgresSQL.

1- Java

Para conferir se você possui alguma versão do Java instalado na sua máquina digite o seguinte comando.

                # java -version

Se existir alguma versão instalada a mesma será exibida, caso não tenha nenhuma versão instalada execute o seguinte comando:

                # sudo apt-get install openjdk-6-jdk

Aguarde até o fim da instalação e pronto, você já possui a versão 6 do Java instalada na sua máquina.

2 – Eclipse

Para instalar a IDE de desenvolvimento Eclipse em sua máquina basta realizar o download clicando neste link e descompactar o arquivo em um diretório de sua preferencia.

3 – PostgreSQL

A instalação do banco de dados PostgreSQL já foi abordada neste blog, basta seguir os passos deste post e você terá o banco de dados instalado em sua máquina.

Com estes 3 passos você terá o ambiente pronto para iniciar, os próximos passos são realizar o download dos arquivos.jar básicos que compõe o framework Hibernate.

4 – Download dos arquivos.jar

Para finalizar é preciso realizar o download dos seguintes arquivos:

antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate3.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
slf4j-api-1.6.1.jar
postgresql-8.4-701.jdbc4.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar.

Depois disso você já terá tudo que é preciso para iniciar a construção de sua aplicação Java utilizando Hibernate com banco de dados PostgreSQL.

Nó próximo post será disponibilizada a criação do banco de dados que será utilizado como exemplo.

Até mais…