Archive for the 'java' Category

Banco de dados HSQLDB com JBoss AS 5.1GA e Hibernate

Iniciei o estudo do framework Jboss Seam recentemente e tive alguns problemas no uso do HSQLDB na aplicação. Na verdade no uso do Datasource dentro do Jboss AS.

Dessa forma caso alguém tenha algum problema colocarei abaixo como está a infraestrutura e como configurei o arquivo de datasource no Jboss:

– Jboss AS 5.1.0 GA
– Jboss Seam 2.0.2 CR1
– JSF 1.2

Na aplicação o arquivo hibernate.cfg.xml está assim:

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="show_sql">false</property>
        <property name="connection.datasource">java:/SeamTestDS</property>
        <property name="hbm2ddl.auto">create-drop</property>
        <property name="cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
        <property name="transaction.flush_before_completion">true</property>
        <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
    </session-factory>
</hibernate-configuration>

No diretório do Jboss, criei um arquivo xml com o nome da aplicação (SeamTest) que será o datasource usado pela app:

Arquivo “seamtest-ds.xml”:

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
   <local-tx-datasource>
      <jndi-name>SeamTestDS</jndi-name>
	  <connection-url>jdbc:hsqldb:.</connection-url>
      <driver-class>org.hsqldb.jdbcDriver</driver-class>
      <user-name>sa</user-name>
      <password></password>
      <min-pool-size>5</min-pool-size>
      <max-pool-size>20</max-pool-size>
      <idle-timeout-minutes>0</idle-timeout-minutes>
      <track-statements/>
      <prepared-statement-cache-size>32</prepared-statement-cache-size>
      <metadata>
         <type-mapping>Hypersonic SQL</type-mapping>
      </metadata>
	  <depends>jboss:service=Hypersonic,database=SeamTestDB</depends>
   </local-tx-datasource>
   <mbean code="org.jboss.jdbc.HypersonicDatabase" 
     name="jboss:service=Hypersonic,database=SeamTestDB">
     <attribute name="Database">SeamTestDB</attribute>
     <attribute name="InProcessMode">true</attribute>
   </mbean>
 </datasources>

Dessa forma a app consegue “enxergar” o datasource e funcionar sem problemas.

Em um post próximo devo publicar como fiz a aplicação.

É isso!

com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! Application was not properly initialized at startup, could not find Factory: javax.faces.context.ExceptionHandlerFactory

O título do post é grande mas preferi deixar ele assim mesmo por ser autoexplicativo.

Ao tentar rodar uma aplicação no JBoss 5.1 usando JSF 2.0 obtive o erro do título:

com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! Application was not properly initialized at startup, could not find Factory: javax.faces.context.ExceptionHandlerFactory

Esse erro aconteceu mesmo com as libs “jsf-api-2.0.4-b09.jar” e “jsf-impl-2.0.4-b09.jar” na pasta WEB-INF/lib. A solução eu encontrei nesse link:

https://community.jboss.org/wiki/UpgradeJBossASToJSF2

Basicamente só é preciso entrar na pasta do servidor e copiar o arquivo jboss-faces.jar para a pasta lib do projeto.

No meu caso a pasta do servidor é: C:\java\jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\jsf-libs

É isso.

iText: Gerando PDF’s em Java ou C#

Recentemente em alguns estudos me deparei com a biblioteca iText, uma API para geração de PDF’s que pode ser usada em JAva ou C#.

Essa API é gratuita e Open source, podendo ser baixada no seguinte endereço: itextpdf.com, eu baixei a versão 5.4.3 (itextpdf-5.4.3.jar).

Crie um projeto Java (Java Project) no Eclipse (estou usando a versão Juno). Clique com o botão direito em cima do projeto e vá em Build Path -> Configure Build Path. Vá na aba Libraries e clique no botão “ADd External JARs”. Selecione o JAR do iText e clique em OK.

Em Source crie uma classe qualquer (eu coloquei o nome de ImpressaoPDF.java). Abaixo colocarei o código fonte e em seguida explicações sobre algumas linhas:


import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Font.FontFamily;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

public class ImpressaoPdf {
public static void main(String[] args) throws Exception {
Document doc = null;
FileOutputStream os = null;
try {
doc = new Document(PageSize.A4);
os = new FileOutputStream("arquivo.pdf");
PdfWriter.getInstance(doc, os);
doc.open();
Font f = new Font(FontFamily.COURIER, 20, Font.BOLD);
Paragraph p = new Paragraph("Meu primeiro arquivo PDF!", f);
p.setAlignment(Element.ALIGN_CENTER);
doc.add(p);
} catch (DocumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (doc != null) {
doc.close();
}
if (os != null) {
os.close();
}
}
}
}

Document representa o documento PDF a ser gerado, por isso é criado logo no início do código.
É preciso “abrir” o documento para poder escrever nele, isso é feito no trecho “doc.open();”, após isso é possível adicionar texto ao documento, como a configuração de fonte, criação de parágrafo e alinhamento:


Font f = new Font(FontFamily.COURIER, 20, Font.BOLD);
Paragraph p = new Paragraph("Meu primeiro arquivo PDF!", f);
p.setAlignment(Element.ALIGN_CENTER);
doc.add(p);

E por fim é preciso fechar o Document e o OutPutStream.
Após isso é só rodar o projeto como Java Application mesmo, o arquivo será gerado na pasta raiz do projeto dentro do seu workspace.

Enfim, existem inúmeros posts na internet sobre a biblioteca e eu quis contribuir com mais um, além da própria documentação presente no site.

É isso! []s

Certificação Oracle – Voucher com Retake

Hoje recebi um e-mail informando que a promoção de compra de voucher para alguns exames da Oracle vai até dia 28/02/2001 dando mais uma oportunidade para quem não tinha comprado de efetuar sua compra!

Pelo que vi o site ainda não está atualizado, mas acredito que nada impeça a compra com o retake GRÁTIS!

Boa sorte a todos!

Dicas para SCJP

Para mim estudar para o SCJP está parecendo com meus estudos para concurso. Exige dedicação, e estudo contínuo!

Como eu sou muito burro desligado tenho que estudar várias vezes a mesma coisa e de preferência a partir de várias fontes. Nas minhas buscas por alguns tópicos abordados no exame achei um blog show de bola na net do Leandro Soriano Ferreira.

E nesse blog achei outro blog com algumas dicas. Eu acho que além das dicas o mais importante é continuar estudando, nem que seja meia-hora por dia. Implementar as classes e testar algumas coisas é legal também. Os xiitas preferem fazer isso no console, mas eu uso uma IDE. Rs.

O blog com algumas dicas muito bacanas é: Fernando Franzini.

E boa sorte a todos!