<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Roberto Furutani &#187; Java</title>
	<atom:link href="http://www.furutani.com.br/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.furutani.com.br</link>
	<description>O site de um computólogo curioso!</description>
	<lastBuildDate>Sat, 04 Sep 2010 13:41:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Boas Práticas &#8211; Dica nº 1</title>
		<link>http://www.furutani.com.br/2010/09/boas-praticas-dica-n%c2%ba-1/</link>
		<comments>http://www.furutani.com.br/2010/09/boas-praticas-dica-n%c2%ba-1/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 13:41:26 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Boas Práticas]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=651</guid>
		<description><![CDATA[Bom dia, Ter um blog não é nada fácil, este aqui por exemplo está abandonado já faz quase um mês. A maior dificuldade é encontrar assuntos pra postar. Por isso tive uma idéia, postar uma série de dicas de boas práticas de codificação. A idéia é mostrar com dicas simples como melhorar o código, evitando [...]]]></description>
			<content:encoded><![CDATA[<p>Bom dia,</p>
<p>Ter um blog não é nada fácil, este aqui por exemplo está abandonado já faz quase um mês. A maior dificuldade é encontrar assuntos pra postar. Por isso tive uma idéia, postar uma série de dicas de boas práticas de codificação.<br />
A idéia é mostrar com dicas simples como melhorar o código, evitando erros e melhorando a codificação.</p>
<p>Nesta primeira dica, mostrarei como evitar um <strong>NullPointerException</strong> toda vez em que fazemos uma comparação com objetos com uma constante. Muita gente já conhece essa técnica, principalmente os mais experientes, mas nunca é demais lembrar.</p>
<p><strong>A dica é: Sempre coloque a constante à esquerda (ou o objeto que você terá certeza que não estará nulo) da condição.</strong></p>
<p>Veja o exemplo abaixo:</p>
<pre class="brush: java">
public boolean validar(String result) {

	if (&quot;OK&quot;.equals(result)) {
		return true;
	} else {
		return false;
	}

}</pre>
<p>O código acima compara o parâmetro <strong>result </strong> com a constante <em>OK</strong></em> que está a esquerda da condição.<br />
Se <strong>result </strong> for nulo o método retornará <em>false</em>.</p>
<p>Já dei manutenção em código que estava assim:</p>
<pre class="brush: java">
public boolean validar(String result) {
	if (result == null) {
	        result = &quot;&quot;;
        }
	if (&quot;OK&quot;.equals(result)) {
		return true;
	} else {
		return false;
	}

}</pre>
<p>Percebam que colocaram um <strong>if</strong> desnecessário só para atribuir uma string vazia ao parâmetro, afim de evitar o <strong>NullPointerException</strong> no próximo <strong>if</strong>. Além de ser feio fazer <em>atribuições aos parâmetros</em>, aumenta a complexidade de uma futura manutenção.</p>
<p>Por hoje é só.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/09/boas-praticas-dica-n%c2%ba-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Relatório Dinâmico com JasperDesign</title>
		<link>http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/</link>
		<comments>http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 01:47:25 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=635</guid>
		<description><![CDATA[Olá Que tal fazer um relatório sem iReport? e sem ter de fazer o JRXML? e ser montada de dinamicamente? Pois isso é possível usando algumas classes do JasperReports como a JasperDesign, JRDesignBand, JRDesignStaticText, JRDesignField e JRDesignExpression. Não é muito complicado fazer isso não como você podem ver no exemplo que fiz, o mais díficil [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Que tal fazer um relatório sem iReport? e sem ter de fazer o JRXML? e ser montada de dinamicamente?</p>
<p>Pois isso é possível usando algumas classes do JasperReports como a <strong>JasperDesign, JRDesignBand, JRDesignStaticText, JRDesignField e JRDesignExpression. </strong>Não é muito complicado fazer isso não como você podem ver no exemplo que fiz, o mais díficil mesmo é posicionar os elementos na página. Precisa usar muito a imaginação.<strong><br />
</strong></p>
<p>Basicamente é feito tudo pela classe abaixo.</p>
<pre class="brush: java">package br.com.furutani.reldin;

import java.awt.Color;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.design.JRDesignBand;
import net.sf.jasperreports.engine.design.JRDesignExpression;
import net.sf.jasperreports.engine.design.JRDesignField;
import net.sf.jasperreports.engine.design.JRDesignStaticText;
import net.sf.jasperreports.engine.design.JRDesignTextField;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.type.HorizontalAlignEnum;

public class ReportDesigner {

public JasperDesign getDesign() throws JRException {

// Cria um novo relatório
JasperDesign jasperDesign = new JasperDesign();

// PAGE
configPage(jasperDesign);

// FIELD

JRDesignField field = null;
addField(&quot;referencia&quot;, String.class, jasperDesign);
addField(&quot;consumo&quot;, Integer.class, jasperDesign);

// TITLE

JRDesignBand jrDesignband = null;
JRDesignStaticText staticText = null;
configTitle(jasperDesign);

// PAGE HEADER

jrDesignband = new JRDesignBand();
jrDesignband.setHeight(15);
jasperDesign.setPageHeader(jrDesignband);

// COLUMN HEADER

jrDesignband = new JRDesignBand();
jrDesignband.setHeight(25);
jasperDesign.setColumnHeader(jrDesignband);

//Dados da referencia
staticText = new JRDesignStaticText();
staticText.setX(0);
staticText.setY(5);
staticText.setWidth(150);
staticText.setHeight(15);
staticText.setHorizontalAlignment(HorizontalAlignEnum.LEFT);
staticText.setText(&quot;Referência - Mês/Ano&quot;);
staticText.setBold(true);
jrDesignband.addElement(staticText);

//Dados do consumo
staticText = new JRDesignStaticText();
staticText.setX(150);
staticText.setY(5);
staticText.setWidth(100);
staticText.setHeight(15);
staticText.setHorizontalAlignment(HorizontalAlignEnum.RIGHT);
staticText.setText(&quot;Consumo - kWh&quot;);
staticText.setBold(true);
jrDesignband.addElement(staticText);

// DETAIL
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(20);

//Dados da referencia
JRDesignTextField textField = new JRDesignTextField();
textField.setBlankWhenNull(false);
textField.setX(0);
textField.setY(5);
textField.setWidth(150);
textField.setHeight(15);
// Adiciona a expressao no campo
JRDesignExpression expression = new JRDesignExpression();
expression.setValueClass(java.lang.String.class);
expression.setText(&quot;$F{referencia}&quot;);
textField.setExpression(expression);
jrDesignband.addElement(textField);

//Dados do consumo
textField = new JRDesignTextField();
textField.setBlankWhenNull(false);
textField.setX(200);
textField.setY(5);
textField.setWidth(50);
textField.setHeight(15);
textField.setHorizontalAlignment(HorizontalAlignEnum.RIGHT);
//Adiciona a expressao no campo
expression = new JRDesignExpression();
expression.setValueClass(java.lang.Integer.class);
expression.setText(&quot;$F{consumo}&quot;);
textField.setExpression(expression);
jrDesignband.addElement(textField);

jasperDesign.setDetail(jrDesignband);

// COLUMN FOOTER (Escondido)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(0);
jasperDesign.setColumnFooter(jrDesignband);

// PAGE FOOTER (Escondido)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(0);
jasperDesign.setPageFooter(jrDesignband);

// NO DATA (No JasperViewer não mostra, na web mostraria)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(20);
staticText = new JRDesignStaticText();
staticText.setX(10);
staticText.setY(5);
staticText.setWidth(64);
staticText.setHeight(15);
staticText.setText(&quot;Sem registros para compor o relatório!&quot;);
staticText.setHorizontalAlignment(HorizontalAlignEnum.CENTER);
jrDesignband.addElement(staticText);
jasperDesign.setNoData(jrDesignband);

// SUMMARY (Escondido)
jrDesignband = new JRDesignBand();
jrDesignband.setHeight(0);
jasperDesign.setSummary(jrDesignband);

return jasperDesign;
}

/**
* Ajusta os parametros do titulo
* @param jasperDesign
*/
private void configTitle(JasperDesign jasperDesign) {
JRDesignBand band = new JRDesignBand();
band.setHeight(50);
JRDesignStaticText staticText = new JRDesignStaticText();
staticText.setX(10);
staticText.setY(10);
staticText.setWidth(450);
staticText.setHeight(40);
staticText.setFontName(&quot;Tahoma&quot;);
staticText.setForecolor(Color.BLUE);
staticText.setHorizontalAlignment(HorizontalAlignEnum.CENTER);
staticText.setFontSize(24);
staticText.setPdfFontName(&quot;Helvetica-Bold&quot;);
staticText.setBold(true);
staticText.setText(&quot;Histórico de Consumo&quot;);

band.addElement(staticText);

jasperDesign.setTitle(band);
}

/**
* Adiciona campos ao relatorio
* @param name
* @param clazz
* @param jasperDesign
* @throws JRException
*/
private void addField(String name, Class clazz, JasperDesign jasperDesign)
throws JRException
{
JRDesignField field = new JRDesignField();

field.setName(name);
field.setValueClass(clazz);
jasperDesign.addField(field);
}

/**
* Configura a pagina
* @param jasperDesign
*/
private void configPage(JasperDesign jasperDesign) {
jasperDesign.setPageWidth(500);
jasperDesign.setPageHeight(1000);
jasperDesign.setColumnCount(1);
jasperDesign.setColumnWidth(450);
jasperDesign.setColumnSpacing(0);
jasperDesign.setLeftMargin(10);
jasperDesign.setRightMargin(10);
jasperDesign.setBottomMargin(5);
jasperDesign.setTopMargin(5);
jasperDesign.setName(&quot;RelatorioDeConsumo&quot;);

}
}</pre>
<p>O exemplo foi feito no Eclipse Galileo. Não foi usado nada de web apesar de ser facilmente adaptado para rodar em ambiente web.</p>
<p>Adicione as bibliotecas no classpath do projeto que estão dentro de &lt;DIR_INSTALL&gt;\iReport-3.7.2\ireport\modules\ext para compilar os fontes:</p>
<p style="padding-left: 30px;">ant-1.7.1.jar<br />
antlr-2.7.6.jar<br />
asm-attrs.jar<br />
asm.jar<br />
barbecue-1.5-beta1.jar<br />
barcode4j-2.0.jar<br />
batik-anim.jar<br />
batik-awt-util.jar<br />
batik-bridge.jar<br />
batik-css.jar<br />
batik-dom.jar<br />
batik-ext.jar<br />
batik-gvt.jar<br />
batik-parser.jar<br />
batik-script.jar<br />
batik-svg-dom.jar<br />
batik-svggen.jar<br />
batik-util.jar<br />
batik-xml.jar<br />
bcel-5.2.jar<br />
bsh-2.0b4.jar<br />
castor-1.2.jar<br />
cglib-2.1.jar<br />
cincom-jr-xmla.jar<br />
commons-beanutils-1.8.2.jar<br />
commons-collections-3.2.1.jar<br />
commons-dbcp-1.2.2.jar<br />
commons-digester-1.7.jar<br />
commons-javaflow-20060411.jar<br />
commons-logging-1.1.jar<br />
commons-math-1.0.jar<br />
commons-pool-1.3.jar<br />
commons-vfs-1.0.jar<br />
dom4j-1.6.jar<br />
ehcache-1.1.jar<br />
eigenbase-properties-1.1.0.10924.jar<br />
eigenbase-resgen-1.3.0.11873.jar<br />
eigenbase-xom-1.3.0.11999.jar<br />
ejb3-persistence.jar<br />
groovy-all-1.5.5.jar<br />
hibernate-annotations.jar<br />
hibernate-commons-annotations.jar<br />
hibernate3.jar<br />
hsqldb-1.8.0-10.jar<br />
iText-2.1.7.jar<br />
iTextAsian.jar<br />
jakarta-bcel-20050813.jar<br />
jasperreports-3.7.2.jar<br />
jasperreports-chart-themes-3.6.2.jar<br />
jasperreports-extensions-3.5.3.jar<br />
jasperreports-fonts-3.7.2.jar<br />
javacup.jar<br />
javassist-3.4.GA.jar<br />
jaxen-1.1.1.jar<br />
jcommon-1.0.15.jar<br />
jdt-compiler-3.1.1.jar<br />
jfreechart-1.0.12.jar<br />
jpa.jar<br />
js_activation-1.1.jar<br />
js_axis-1.4patched.jar<br />
js_commons-codec-1.3.jar<br />
js_commons-discovery-0.2.jar<br />
js_commons-httpclient-3.1.jar<br />
js_jasperserver-common-ws-3.5.0.jar<br />
js_jaxrpc.jar<br />
js_mail-1.4.jar<br />
js_saaj-api-1.3.jar<br />
js_wsdl4j-1.5.1.jar<br />
jta.jar<br />
jxl-2.6.jar<br />
log4j-1.2.15.jar<br />
mondrian-3.1.1.12687-Jaspersoft.jar<br />
olap4j-0.9.7.145.jar<br />
png-encoder-1.5.jar<br />
poi-3.5-FINAL-20090928.jar<br />
rex-20080421.jar<br />
rhino-1.7R1.jar<br />
saaj-api-1.3.jar<br />
slf4j-api.jar<br />
slf4j-log4j12.jar<br />
spring.jar<br />
sqleonardo-2007.03.jar<br />
swingx-2007_10_07.jar<br />
xml-apis-ext.jar<br />
xml-apis.jar</p>
<p>O projeto do Eclipse com os fontes está disponível no link abaixo:<br />
<a href="http://www.furutani.com.br/a/JasperDinamico.zip" title="Baixado: 109 vezes. Tamanho: 9.37 KB">JasperDinamico</a> </p>
<p>O resultado será esse:</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/06/jasper-design-.jpg"><img class="aligncenter size-medium wp-image-640" title="jasper-design---" src="http://www.furutani.com.br/wp-content/uploads/2010/06/jasper-design--300x298.jpg" alt="" width="300" height="298" /></a></p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/06/relatorio-dinamico-com-jasperdesign/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simplificando cálculos com datas com Joda Time &#8211; Java</title>
		<link>http://www.furutani.com.br/2010/02/simplificando-calculos-com-datas-com-joda-time-java/</link>
		<comments>http://www.furutani.com.br/2010/02/simplificando-calculos-com-datas-com-joda-time-java/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 01:01:40 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[joda time]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=623</guid>
		<description><![CDATA[Olá! Quem precisou fazer contas com java.util.Date ou java.util.Calendar saber o trabalho que dá e como a API nativa do Java (até o Java 6 pelo menos) não ajuda muito a fazer coisas simples como adicionar horas na data atual. A API Joda Time veio para simplificar o trabalho com datas no Java, tanto é [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Quem precisou fazer contas com java.util.Date ou java.util.Calendar saber o trabalho que dá e como a API nativa do Java (até o Java 6 pelo menos) não ajuda muito a fazer coisas simples como adicionar horas na data atual. A API <a href="http://joda-time.sourceforge.net/" target="_blank">Joda Time</a> veio para simplificar o trabalho com datas no Java, tanto é que muitas idéias dessa API tem grande chance de estarem no Java 7 através da <a href="http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html" target="_blank">JSR-310</a>.</p>
<p>O que eu mais gostei do Joda Time são os método toString() que aceitam como parâmetro o padrão de formatação (não preciso criar mais SimpleDateFormat para formatar os benditos java.util.Date!!! parecido com o do <a href="http://msdn.microsoft.com/en-us/library/aa326721%28VS.71%29.aspx" target="_blank">C#</a>),  inicialização do objeto com String e o uso de <a href="http://www.martinfowler.com/bliki/FluentInterface.html" target="_blank">interfaces fluentes</a>.</p>
<p>Abaixo exemplos de uso.</p>
<ul>
<li><strong>Inicialização do objeto com String</strong></li>
</ul>
<pre class="brush: java">DateTime date = new DateTime(&quot;2010-2-21T20:19:45.000-03:00&quot;);
System.out.println(date.toString(&quot;dd/MM/yyyy HH:mm:ss&quot;));</pre>
<ul>
<li><strong>Soma de dias escolhendo o ano</strong></li>
</ul>
<pre class="brush: java">LocalDate localDate = new LocalDate();
LocalDate moreDays = localDate.withYear(2008).plusDays(8);
System.out.println(moreDays.toString(&quot;dd/MM/yyyy&quot;));
// 29/02/2008</pre>
<ul>
<li><strong>Dia da semana por extenso</strong></li>
</ul>
<pre class="brush: java">DateTime dateTime = new DateTime();

String dayOfMonth = dateTime.dayOfWeek().getAsText();
System.out.println(dayOfMonth);
// Domingo</pre>
<ul>
<li><strong>Quantidade de dias entre um dia e outro</strong></li>
</ul>
<pre class="brush: java">DateTime inicio = new DateTime(2010, 2, 21, 0, 0, 0, 0);

DateTime fim = new DateTime(2010, 2, 22, 13, 30, 0, 0);
System.out.println(Days.daysBetween(inicio, fim).getDays());
// 1
System.out.println(Hours.hoursBetween(inicio, fim).getHours());
// 37
System.out.println(Minutes.minutesBetween(inicio, fim).getMinutes());
// 2250</pre>
<ul>
<li><strong>Diferença de horas entre fusos horários.</strong></li>
</ul>
<pre class="brush: java">DateTime agora = new DateTime();
DateTime saoPaulo =
agora.withZoneRetainFields(DateTimeZone.forID(&quot;America/Sao_Paulo&quot;));
DateTime rioBranco =
agora.withZoneRetainFields(DateTimeZone.forID(&quot;America/Rio_Branco&quot;));
DateTime japao =
agora.withZoneRetainFields(DateTimeZone.forID(&quot;Asia/Tokyo&quot;));
DateTime londres =
agora.withZoneRetainFields(DateTimeZone.forID(&quot;Europe/London&quot;));

System.out.println(Hours.hoursBetween(japao, saoPaulo).getHours());
System.out.println(Hours.hoursBetween(londres, saoPaulo).getHours());
System.out.println(Hours.hoursBetween(rioBranco, saoPaulo).getHours());
// Diferença de horas entre Japão e São Paulo: 12

// Diferença de horas entre Londre e São Paulo: 3

// Diferença de horas entre Rio Branco/AC e São Paulo: -1</pre>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/02/simplificando-calculos-com-datas-com-joda-time-java/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>NullPointerException ou FileNotFoundException ao executar relatórios com Jasper Reports</title>
		<link>http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/</link>
		<comments>http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 18:35:03 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=617</guid>
		<description><![CDATA[Olá! Muitas pessoas tem dificuldade em utilizar os relatórios feitos no iReport em suas aplicações, especialmente as webs, por não saberem onde colocar os arquivos .jasper em sua aplicação para que o Servlet ou o ManagedBean consiga lê-los. Então é bem comum ver  erros como esses: net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException java.lang.NullPointerException at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185) Recomendo colocar os arquivos [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Muitas pessoas tem dificuldade em utilizar os relatórios feitos no <a href="http://jasperreports.sourceforge.net/">iReport </a>em suas aplicações, especialmente as webs, por não saberem onde colocar os arquivos <strong>.jasper</strong> em sua aplicação para que o <strong>Servlet </strong>ou o <strong>ManagedBean </strong>consiga lê-los. Então é bem comum ver  erros como esses:</p>
<pre class="brush: java">net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException</pre>
<pre class="brush: java">java.lang.NullPointerException
at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
</pre>
<p>Recomendo colocar os arquivos jasper e/ou jrxml juntos as classes Java e <span style="text-decoration: underline;"><strong>não</strong></span> nos diretórios abaixo de <strong>Páginas Web </strong>no Netbeans ou <strong>Web Content</strong> no Eclipse, pois eles podem fica expostos. Não é desejado que os usuários possam baixa os arquivos jasper e/ou jrxml e ficarem fuçando neles.</p>
<p>A figura abaixo mostra o local correto para copiar o arquivo jasper e/ou jrxml no Netbeans. No Eclipse a lógica é a mesma, no lugar de Pacotes de código fontes coloque em Java Resorces: src.</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper.png"><img class="aligncenter size-medium wp-image-616" title="Netbeans" src="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper-300x225.png" alt="" width="300" height="225" /></a>Note que o arquivo jasper e/ou jrxml está no mesmo pacote do GerarRelatorioServlet.java e para obter o <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html">InputStream</a> no Servlet eufaço assim getResourceAsStream(&#8220;Rel_Precipitacoes.jasper&#8221;).</p>
<p>Para ser mais organizado é possível colocar em outro pacote, nesse caso é preciso ajustar o caminho ao jasper com relação ao local do GerarRelatorioServlet.java. No exemplo abaixo o jasper ficou no pacote br.com.furutani.relatorios logo obtemos o <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStream.html">InputStream</a> passando esse caminho &#8220;../relatorios/Rel_Precipitacoes.jasper&#8221; no GerarRelatorioServlet.</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper-01.png"><img class="aligncenter size-medium wp-image-620" title="Jasper Netbeans" src="http://www.furutani.com.br/wp-content/uploads/2010/02/img-jasper-01-300x225.png" alt="" width="300" height="225" /></a></p>
<p>O projeto do netbeans com os fontes e bibliotecas do JasperReports podem ser baixados no link:  <a href="http://www.furutani.com.br/a/Jasper.war" title="Baixado: 470 vezes. Tamanho: 32.61 MB">Projeto Jasper</a> Projeto Jasper Netbeans 6.8</p>
<p>Espero ter ajudado.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/02/nullpointerexception-ou-filenotfoundexception-ao-executar-relatorios-com-jasper-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JasperReports em Flash</title>
		<link>http://www.furutani.com.br/2010/02/jasperreports-em-flash/</link>
		<comments>http://www.furutani.com.br/2010/02/jasperreports-em-flash/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 02:14:04 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[adobe flex 3]]></category>
		<category><![CDATA[ireport]]></category>
		<category><![CDATA[jasperreports]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=604</guid>
		<description><![CDATA[Olá! Faz muito tempo que não publico nada no blog, mas ele não está abandonado.  Neste post vou deixar mais uma dica sobre JasperReports e Flas, na verdade é só um exemplo de que é possivel usar o mesmo .jasper para criar relatórios em PDF e em Flash também. Neste exemplo eu usei um outro [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Faz muito tempo que não publico nada no blog, mas ele não está abandonado.  <img src='http://www.furutani.com.br/wp-includes/images/smilies/icon_redface.gif' alt=':oops:' class='wp-smiley' /> </p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2010/02/jasper-flash.jpg"><img class="alignleft size-full wp-image-605" title="jasper-flash" src="http://www.furutani.com.br/wp-content/uploads/2010/02/jasper-flash.jpg" alt="" width="228" height="81" /></a>Neste post vou deixar mais uma dica sobre JasperReports e Flas, na verdade é só um exemplo de que é possivel usar o mesmo .jasper para criar relatórios em PDF e em Flash também.</p>
<p>Neste exemplo eu usei um outro exemplo que acompanha o <a href="http://sourceforge.net/projects/jasperreports/files/archive/jasperreports-flash/JasperReports%20Flash%20Viewer%203.0.0/" target="_blank">JasperReports Flash Viewer 3.0.0</a>.</p>
<p>» <a href="http://www.furutani.com.br:4894/jasperreports-flash/servlets/show">Clique aqui</a> para ver o exemplo funcionando.</p>
<p>» Download dos fontes: <a href="http://www.furutani.com.br/a/reports.zip" title="Baixado: 322 vezes. Tamanho: 135.73 MB">Relatório em JasperReports e Flash</a> Exemplo de relatório em JasperReports e Flash</p>
<p>Outra opção para exibir relatórios em flash é utilizar o xViewer mostrado neste post <a href="http://www.furutani.com.br/2009/07/exibindo-relatorios-gerados-pelo-jasper-report-em-flex/">Exibindo relatórios gerados pelo Jasper Report em Flex</a>. O exemplo precisa do <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3sdk" target="_blank">Adobe Flex</a> e do ant para compilar, mas voce pode importar os fontes para sua IDE favorita sem problemas é só adicionar os jars no classpath.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/02/jasperreports-em-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convenções de código Java</title>
		<link>http://www.furutani.com.br/2010/01/convencoes-de-codigo-java/</link>
		<comments>http://www.furutani.com.br/2010/01/convencoes-de-codigo-java/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 02:11:58 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=595</guid>
		<description><![CDATA[Olá Nada melhor para quem vai efetuar uma manutenção em código-fonte do que poder ler de forma padronizada. Pensando nisso a SUN disponibiliza uma convenção para formatação de código Java, isso incluí nome das classes, dos métodos, declaração de váriaveis, identação, formatação dos comandos e etc. Apesar da última revisão ter sido em abril de [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Nada melhor para quem vai efetuar uma manutenção em código-fonte do que poder ler de forma padronizada. Pensando nisso a SUN disponibiliza uma convenção para formatação de código Java, isso incluí nome das classes, dos métodos, declaração de váriaveis, identação, formatação dos comandos e etc. Apesar da última revisão ter sido em abril de 1999 ainda está valendo.</p>
<p>Para algumas pessoas a convenção da SUN pode não agradar, pois tem gente que gosta do fonte assim:</p>
<pre class="brush: java">
if (condition)
{
     statements;
}
else if (condition)
{
     statements;
}
else
{
      statements;
}
</pre>
<p>Mas a convenção diz para ser assim:</p>
<pre class="brush: java">if (condition) {
      statements;
} else if (condition) {
      statements;
} else {
      statements;
}
</pre>
<p>Enfim, gostando ou não gostando é importante seguir um padrão, já pensou se as placas de pare fosse octogono em algumas cidades e em outras não? ou se cada banco criasse um código de barras próprio para seus boletos? iria ser muito mais dificil ler.</p>
<p>A convenção que mais ajuda é o de <a href="http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367" target="_blank">nomenclatura</a>, por exemplo os métodos que devem iniciar com verbo e tem a primeira letra minúscula e depois cada palavra capitalizada.</p>
<p><a href="http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html" target="_blank"><strong>Code Conventions for the Java Programming Language</strong></a></p>
<p>Até mais,</p>
<p>Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/01/convencoes-de-codigo-java/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simulado para SCJP</title>
		<link>http://www.furutani.com.br/2010/01/simulado-para-scjp/</link>
		<comments>http://www.furutani.com.br/2010/01/simulado-para-scjp/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 23:45:02 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[certificacao]]></category>
		<category><![CDATA[scjp]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=592</guid>
		<description><![CDATA[Olá Essa dica vai para quem está estudando ou pretende estudar para certificação de programador Java. Hoje foi lançado um simulado com aproximadamente 300 questões focadas em SCJP 5 chamado SimSCJP criado pelo Camilo Lopes. Segundo ele: O simulado para SCJP foi desenvolvido com o proposito de ajudar aos candidatos que estão se preparando para [...]]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Essa dica vai para quem está estudando ou pretende estudar para certificação de programador Java. Hoje foi lançado um simulado com aproximadamente 300 questões focadas em <a href="http://www.sun.com/training/certification/java/scjp.xml">SCJP 5</a> chamado <a href="http://blog.camilolopes.com.br/?page_id=1312">SimSCJP</a> criado pelo <a href="http://blog.camilolopes.com.br/" target="_blank">Camilo Lopes</a>.</p>
<p>Segundo ele:</p>
<blockquote><p>O simulado para SCJP foi desenvolvido com o proposito de ajudar aos candidatos que estão se preparando para SCJP 5 .  Há questões fáceis como díficeis, exatamente como você irá encontrar no exame real da Sun. Não formatamos os códigos ou organizamos. Pois não espere encontrar no exame um código bonitinho.</p></blockquote>
<p>Parabéns pela iniciativa Camilo, com certeza irá ajudar muita gente.</p>
<p><a href="http://blog.camilolopes.com.br/simscjppublicblog/simscjppublicblog.htm" target="_blank">Link para o simulado em português.</a></p>
<p><a href="http://blog.camilolopes.com.br/simblogus/simblogus.htm">Link para o simulado em inglês com contagem regressiva.</a></p>
<p>Até mais,</p>
<p>Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2010/01/simulado-para-scjp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alterando a saída do System.out.println()</title>
		<link>http://www.furutani.com.br/2009/12/alterando-a-saida-do-system-out-println/</link>
		<comments>http://www.furutani.com.br/2009/12/alterando-a-saida-do-system-out-println/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 21:16:26 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=585</guid>
		<description><![CDATA[Olá! Quando criamos um programa em java e queremos mostrar alguma mensagem no console usamos inconscientemente o System.out.println(), mas e para gravar essas mesmas mensagens em um arquivo texto? Muito simples, basta dar um System.setOut() passando o PrintStream desejado. No exemplo abaixo alteramos a saída padrão, que era no console, para um arquivo texto. String [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Quando criamos um programa em java e queremos mostrar alguma mensagem no console usamos inconscientemente o System.out.println(), mas e para gravar essas mesmas mensagens em um arquivo texto? Muito simples, basta dar um System.setOut() passando o PrintStream desejado. No exemplo abaixo alteramos a saída padrão, que era no console, para um arquivo texto.</p>
<pre class="brush: java">
String path = &quot;D:\\saida.txt&quot;;
FileOutputStream fileOutputStream = null;
	try {
		fileOutputStream = new FileOutputStream(path);
		System.setOut(new PrintStream(fileOutputStream, true));
		System.out.println(&quot;Teste&quot;);
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	}
</pre>
<p>Até mais<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/12/alterando-a-saida-do-system-out-println/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RichFaces &#8211; fileUpload component</title>
		<link>http://www.furutani.com.br/2009/11/richfaces-fileupload-component/</link>
		<comments>http://www.furutani.com.br/2009/11/richfaces-fileupload-component/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 21:46:48 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=578</guid>
		<description><![CDATA[Olá Para quem precisava de um componente de upload em JSF o RichFaces disponibiliza um ótimo. Tem suporte a seleção de multíplos arquivos para upload com a utilização de flash. Clique aqui para experimentar a demonstração do componente. Até mais, Roberto]]></description>
			<content:encoded><![CDATA[<p>Olá</p>
<p>Para quem precisava de um componente de upload em JSF o RichFaces disponibiliza um ótimo. Tem suporte a seleção de multíplos arquivos para upload com a utilização de flash.</p>
<p><a href="http://livedemo.exadel.com/richfaces-demo/richfaces/fileUpload.jsf;jsessionid=5478DC09E733AF26F8C18BFBC9D8823A?c=fileUpload&amp;tab=usage">Clique aqui para experimentar a demonstração do componente.</a></p>
<p>Até mais,</p>
<p>Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/11/richfaces-fileupload-component/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exemplo de Message Driven Bean</title>
		<link>http://www.furutani.com.br/2009/11/exemplo-de-message-driven-bean/</link>
		<comments>http://www.furutani.com.br/2009/11/exemplo-de-message-driven-bean/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 01:48:32 +0000</pubDate>
		<dc:creator>Roberto Furutani</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jms]]></category>

		<guid isPermaLink="false">http://www.furutani.com.br/?p=574</guid>
		<description><![CDATA[Olá! Faz tempo que eu não posto nada no blog, então hoje vou deixar um exemplo bem simples de serviço de mensageria JMS. JMS &#8211; Java Messaging Service é uma arquitetura existente no universo J2EE que permite troca de mensagens de maneira assíncrona. Este exemplo consiste em duas classes, Main que envia um MDB (Message [...]]]></description>
			<content:encoded><![CDATA[<p>Olá!</p>
<p>Faz tempo que eu não posto nada no blog, então hoje vou deixar um exemplo bem simples de serviço de mensageria JMS.</p>
<p>JMS &#8211; Java Messaging Service é uma arquitetura existente no universo J2EE que permite troca de mensagens de maneira assíncrona.</p>
<p>Este exemplo consiste em duas classes, Main que envia um MDB (Message Drive Bean) e a JMSProcessBean que recebe a mensagem e exibe no console o valor do atributo &#8220;nome&#8221;.</p>
<p>No projeto JMSTester verificar se as bibliotecas abaixos estão corretamente referenciadas. Utilizei a instalação padrão do netbeans 6.7.1 e do glassfish v2.1.</p>
<p><span style="font-size: x-small;"><span style="font-family: verdana,geneva;">C:\Sun\AppServer\lib\appserv-admin.jar<br />
C:\Sun\AppServer\lib\appserv-rt.jar<br />
C:\Sun\AppServer\imq\lib\imq.jar<br />
C:\Sun\AppServer\lib\install\applications\jmsra\imqjmsra.jar<br />
C:\Sun\AppServer\lib\j2ee.jar<br />
C:\Sun\AppServer\lib\install\applications\jaxr-ra\jaxr-ra.jar<br />
C:\Sun\AppServer\imq\lib\jms.jar</span></span></p>
<p>Na administração do Glassfish é possível verificar se o JMS foi corretamente implantado.</p>
<p><a href="http://www.furutani.com.br/wp-content/uploads/2009/11/jms-glassfish.jpg"><img class="aligncenter size-medium wp-image-576" title="jms-glassfish" src="http://www.furutani.com.br/wp-content/uploads/2009/11/jms-glassfish-208x300.jpg" alt="jms-glassfish" width="208" height="300" /></a></p>
<p>Ao executar a classe Main teremos a saída abaixo (observe a última linha):</p>
<p><span style="font-family: courier new,courier;">run:<br />
13/11/2009 23:10:58 com.sun.appserv.naming.RoundRobinPolicy setClusterInstanceInfo<br />
WARNING: NAM1005 : No Endpoints selected. Please specify using system property com.sun.appserv.iiop.endpoints.<br />
13/11/2009 23:10:58 com.sun.appserv.naming.RoundRobinPolicy getEndpointForProviderURL<br />
WARNING: NAM1001: No Endpoints selected in com.sun.appserv.iiop.endpoints property. Using JNDI Provider URL iiop://127.0.0.1:3700 instead<br />
13/11/2009 23:10:59 com.sun.appserv.naming.RoundRobinPolicy setClusterInstanceInfo<br />
INFO: endpoint.weight after checking isWeight = 10<br />
13/11/2009 23:10:59 com.sun.appserv.naming.RoundRobinPolicy setClusterInstanceInfo<br />
INFO: sumOfAllWeights = 10<br />
13/11/2009 23:10:59 com.sun.appserv.naming.S1ASCtxFactory getCorbalocURL<br />
INFO: list[i] ==&gt; 127.0.0.1:3700<br />
13/11/2009 23:10:59 com.sun.appserv.naming.S1ASCtxFactory getCorbalocURL<br />
INFO: corbaloc url ==&gt; iiop:1.2@127.0.0.1:3700<br />
13/11/2009 23:11:00 com.sun.messaging.jms.ra.ResourceAdapter start<br />
INFO: MQJMSRA_RA1101: SJSMQ JMS Resource Adapter starting&#8230;<br />
13/11/2009 23:11:00 com.sun.messaging.jms.ra.ResourceAdapter start<br />
INFO: MQJMSRA_RA1101: SJSMQ JMSRA Started:REMOTE<br />
13/11/2009 23:11:00 com.sun.messaging.jms.ra.ManagedConnectionFactory setAddressList<br />
INFO: MQJMSRA_MF1101: setAddressList:NOT setting default value=localhost<br />
13/11/2009 23:11:00 com.sun.messaging.jms.ra.ManagedConnectionFactory setPassword<br />
INFO: MQJMSRA_MF1101: setPassword:NOT setting default value<br />
13/11/2009 23:11:00 com.sun.messaging.jms.ra.ManagedConnectionFactory setUserName<br />
INFO: MQJMSRA_MF1101: setUserName:NOT setting default value=guest<br />
13/11/2009 23:11:01 com.sun.messaging.jms.ra.ManagedConnection &lt;init&gt;<br />
INFO: MQJMSRA_MC1101: constructor:Created mcId=1:xacId=6281999144483361280:Using xacf config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=true, imqConnectionFlowCount=100, imqAddressListBehavior=RANDOM, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=mq://Furutani:7676/, imqOverrideJMSHeadersToTemporaryDestinations=false}<br />
13/11/2009 23:11:01 com.sun.messaging.jms.ra.ManagedConnection &lt;init&gt;<br />
INFO: MQJMSRA_MC1101: constructor:Created mcId=2:xacId=6281999144483371776:Using xacf config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=true, imqConnectionFlowCount=100, imqAddressListBehavior=RANDOM, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=mq://Furutani:7676/, imqOverrideJMSHeadersToTemporaryDestinations=false}<br />
13/11/2009 23:11:01 com.sun.messaging.jms.ra.ManagedConnection &lt;init&gt;<br />
INFO: MQJMSRA_MC1101: constructor:Created mcId=3:xacId=6281999144483379200:Using xacf config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=true, imqConnectionFlowCount=100, imqAddressListBehavior=RANDOM, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=mq://Furutani:7676/, imqOverrideJMSHeadersToTemporaryDestinations=false}<br />
13/11/2009 23:11:01 com.sun.messaging.jms.ra.ManagedConnection &lt;init&gt;<br />
INFO: MQJMSRA_MC1101: constructor:Created mcId=4:xacId=6281999144483388416:Using xacf config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=true, imqConnectionFlowCount=100, imqAddressListBehavior=RANDOM, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=mq://Furutani:7676/, imqOverrideJMSHeadersToTemporaryDestinations=false}<br />
13/11/2009 23:11:01 com.sun.messaging.jms.ra.ManagedConnection &lt;init&gt;<br />
INFO: MQJMSRA_MC1101: constructor:Created mcId=5:xacId=6281999144483394816:Using xacf config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=true, imqConnectionFlowCount=100, imqAddressListBehavior=RANDOM, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=mq://Furutani:7676/, imqOverrideJMSHeadersToTemporaryDestinations=false}<br />
13/11/2009 23:11:01 com.sun.messaging.jms.ra.ManagedConnection &lt;init&gt;<br />
INFO: MQJMSRA_MC1101: constructor:Created mcId=6:xacId=6281999144483402752:Using xacf config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=true, imqConnectionFlowCount=100, imqAddressListBehavior=RANDOM, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=mq://Furutani:7676/, imqOverrideJMSHeadersToTemporaryDestinations=false}<br />
13/11/2009 23:11:01 com.sun.messaging.jms.ra.ManagedConnection &lt;init&gt;<br />
INFO: MQJMSRA_MC1101: constructor:Created mcId=7:xacId=6281999144483408896:Using xacf config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=true, imqConnectionFlowCount=100, imqAddressListBehavior=RANDOM, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=mq://Furutani:7676/, imqOverrideJMSHeadersToTemporaryDestinations=false}<br />
13/11/2009 23:11:01 com.sun.messaging.jms.ra.ManagedConnection &lt;init&gt;<br />
INFO: MQJMSRA_MC1101: constructor:Created mcId=8:xacId=6281999144483415808:Using xacf config={imqOverrideJMSPriority=false, imqConsumerFlowLimit=1000, imqOverrideJMSExpiration=false, imqAddressListIterations=3, imqLoadMaxToServerSession=true, imqConnectionType=TCP, imqPingInterval=30, imqSetJMSXUserID=false, imqConfiguredClientID=, imqSSLProviderClassname=com.sun.net.ssl.internal.ssl.Provider, imqJMSDeliveryMode=PERSISTENT, imqConnectionFlowLimit=1000, imqConnectionURL=http://localhost/imq/tunnel, imqBrokerServiceName=, imqJMSPriority=4, imqBrokerHostName=localhost, imqJMSExpiration=0, imqAckOnProduce=, imqEnableSharedClientID=false, imqAckTimeout=0, imqAckOnAcknowledge=, imqConsumerFlowThreshold=50, imqDefaultPassword=guest, imqQueueBrowserMaxMessagesPerRetrieve=1000, imqDefaultUsername=guest, imqReconnectEnabled=true, imqConnectionFlowCount=100, imqAddressListBehavior=RANDOM, imqReconnectAttempts=3, imqSetJMSXAppID=false, imqConnectionHandler=com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler, imqSetJMSXRcvTimestamp=false, imqBrokerServicePort=0, imqDisableSetClientID=false, imqSetJMSXConsumerTXID=false, imqOverrideJMSDeliveryMode=false, imqBrokerHostPort=7676, imqQueueBrowserRetrieveTimeout=60000, imqSetJMSXProducerTXID=false, imqSSLIsHostTrusted=false, imqConnectionFlowLimitEnabled=false, imqReconnectInterval=5000, imqAddressList=mq://Furutani:7676/, imqOverrideJMSHeadersToTemporaryDestinations=false}<br />
Mensagens enviadas!</span></p>
<p>No console do Glassfish v2.1 teremos a seguinte saída:</p>
<p><span style="font-family: courier new,courier;">13/11/2009 23:08:51 com.sun.enterprise.admin.servermgmt.launch.ASLauncher buildCommand<br />
INFO:<br />
C:/Program Files/Java/jdk1.6.0_11\bin\java<br />
-Dcom.sun.aas.instanceRoot=C:/Sun/AppServer/domains/domain1<br />
-Dcom.sun.aas.ClassPathPrefix=<br />
-Dcom.sun.aas.ClassPathSuffix=<br />
-Dcom.sun.aas.ServerClassPath=<br />
-Dcom.sun.aas.classloader.appserverChainJars.ee=<br />
-Dcom.sun.aas.classloader.appserverChainJars=admin-cli.jar,admin-cli-ee.jar,j2ee-svc.jar<br />
-Dcom.sun.aas.classloader.excludesList=admin-cli.jar,appserv-upgrade.jar,sun-appserv-ant.jar<br />
-Dcom.sun.aas.classloader.optionalOverrideableChain.ee=<br />
-Dcom.sun.aas.classloader.optionalOverrideableChain=webservices-rt.jar,webservices-tools.jar<br />
-Dcom.sun.aas.classloader.serverClassPath.ee=Does not exist/lib/hadbjdbc4.jar,C:/Sun/AppServer/lib/SUNWjdmk/5.1/lib/jdmkrt.jar,Does not exist/lib/dbstate.jar,Does not exist/lib/hadbm.jar,Does not exist/lib/hadbmgt.jar,C:/Sun/AppServer/lib/SUNWmfwk/lib/mfwk_instrum_tk.jar<br />
-Dcom.sun.aas.classloader.serverClassPath=C:/Sun/AppServer/lib/install/applications/jmsra/imqjmsra.jar,C:/Sun/AppServer/imq/lib/jaxm-api.jar,C:/Sun/AppServer/imq/lib/fscontext.jar,C:/Sun/AppServer/imq/lib/imqbroker.jar,C:/Sun/AppServer/imq/lib/imqjmx.jar,C:/Sun/AppServer/lib/ant/lib/ant.jar,C:/Sun/AppServer/lib/SUNWjdmk/5.1/lib/jdmkrt.jar<br />
-Dcom.sun.aas.classloader.sharedChainJars.ee=appserv-se.jar,appserv-ee.jar,jesmf-plugin.jar,Does not exist/lib/dbstate.jar,Does not exist/lib/hadbjdbc4.jar,jgroups-all.jar,C:/Sun/AppServer/lib/SUNWmfwk/lib/mfwk_instrum_tk.jar<br />
-Dcom.sun.aas.classloader.sharedChainJars=javaee.jar,C:/Program Files/Java/jdk1.6.0_11/lib/tools.jar,install/applications/jmsra/imqjmsra.jar,com-sun-commons-launcher.jar,com-sun-commons-logging.jar,C:/Sun/AppServer/imq/lib/jaxm-api.jar,C:/Sun/AppServer/imq/lib/fscontext.jar,C:/Sun/AppServer/imq/lib/imqbroker.jar,C:/Sun/AppServer/imq/lib/imqjmx.jar,C:/Sun/AppServer/imq/lib/imqxm.jar,webservices-rt.jar,webservices-tools.jar,mail.jar,appserv-jstl.jar,jmxremote_optional.jar,C:/Sun/AppServer/lib/SUNWjdmk/5.1/lib/jdmkrt.jar,activation.jar,appserv-rt.jar,appserv-admin.jar,appserv-cmp.jar,C:/Sun/AppServer/updatecenter/lib/updatecenter.jar,C:/Sun/AppServer/jbi/lib/jbi.jar,C:/Sun/AppServer/imq/lib/imqjmx.jar,C:/Sun/AppServer/lib/ant/lib/ant.jar,dbschema.jar<br />
-Dcom.sun.aas.configName=server-config<br />
-Dcom.sun.aas.configRoot=C:/Sun/AppServer/config<br />
-Dcom.sun.aas.defaultLogFile=C:/Sun/AppServer/domains/domain1/logs/server.log<br />
-Dcom.sun.aas.domainName=domain1<br />
-Dcom.sun.aas.installRoot=C:/Sun/AppServer<br />
-Dcom.sun.aas.instanceName=server<br />
-Dcom.sun.aas.processLauncher=SE<br />
-Dcom.sun.aas.promptForIdentity=true<br />
-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory<br />
-Dcom.sun.enterprise.overrideablejavaxpackages=javax.help,javax.portlet<br />
-Dcom.sun.enterprise.taglibs=appserv-jstl.jar,jsf-impl.jar<br />
-Dcom.sun.enterprise.taglisteners=jsf-impl.jar<br />
-Dcom.sun.updatecenter.home=C:/Sun/AppServer/updatecenter<br />
-Ddomain.name=domain1<br />
-Djava.endorsed.dirs=C:/Sun/AppServer/lib/endorsed<br />
-Djava.ext.dirs=C:/Program Files/Java/jdk1.6.0_11/lib/ext;C:/Program Files/Java/jdk1.6.0_11/jre/lib/ext;C:/Sun/AppServer/domains/domain1/lib/ext;C:/Sun/AppServer/javadb/lib<br />
-Djava.library.path=C:\Sun\AppServer\lib;C:\Sun\AppServer\lib;C:\Sun\AppServer\bin;C:\Sun\AppServer\bin<br />
-Djava.security.auth.login.config=C:/Sun/AppServer/domains/domain1/config/login.conf<br />
-Djava.security.policy=C:/Sun/AppServer/domains/domain1/config/server.policy<br />
-Djava.util.logging.manager=com.sun.enterprise.server.logging.ServerLogManager<br />
-Djavax.management.builder.initial=com.sun.enterprise.admin.server.core.jmx.AppServerMBeanServerBuilder<br />
-Djavax.net.ssl.keyStore=C:/Sun/AppServer/domains/domain1/config/keystore.jks<br />
-Djavax.net.ssl.trustStore=C:/Sun/AppServer/domains/domain1/config/cacerts.jks<br />
-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver<br />
-Djmx.invoke.getters=true<br />
-Dsun.rmi.dgc.client.gcInterval=3600000<br />
-Dsun.rmi.dgc.server.gcInterval=3600000<br />
-client<br />
-XX:+UnlockDiagnosticVMOptions<br />
-XX:MaxPermSize=192m<br />
-Xmx512m<br />
-XX:NewRatio=2<br />
-XX:+LogVMOutput<br />
-XX:LogFile=C:/Sun/AppServer/domains/domain1/logs/jvm.log<br />
-cp<br />
C:/Sun/AppServer/lib/jhall.jar;C:\Sun\AppServer\lib\appserv-launch.jar<br />
com.sun.enterprise.server.PELaunch<br />
start<br />
CORE5076: Using [Java HotSpot(TM) Client VM, Version 1.6.0_11] from [Sun Microsystems Inc.]<br />
SEC1002: Security Manager is OFF.<br />
Using MQ RA for Broker lifecycle control<br />
SEC1143: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper.<br />
WEB0114: SSO is disabled in virtual server [server]<br />
WEB0114: SSO is disabled in virtual server [__asadmin]<br />
REgistering Custom ContextConfig<br />
REgistering Custom Context<br />
JTS5014: Recoverable JTS instance, serverId = [3700]<br />
ADM1079: Initialization of AMX MBeans started<br />
ADM1504: Here is the JMXServiceURL for the Standard JMXConnectorServer: [service:jmx:rmi:///jndi/rmi://Furutani:8686/jmxrmi].  This is where the remote administrative clients should connect using the standard JMX connectors<br />
ADM1506: Status of Standard JMX Connector: Active = [true]<br />
JMS Service Connection URL is :mq://Furutani:7676/<br />
MQJMSRA_RA1101: SJSMQ JMS Resource Adapter starting&#8230;<br />
MQJMSRA_EB1101: EMBEDDED broker started with code =0<br />
MQJMSRA_RA1101: SJSMQ JMSRA Started:DIRECT<br />
LDR5010: All ejb(s) of [MEjbApp] loaded successfully!<br />
EJB5109:EJB Timer Service started successfully for datasource [jdbc/__TimerPool]<br />
LDR5010: All ejb(s) of [__ejb_container_timer_app] loaded successfully!<br />
endpoint.determine.destinationtype<br />
LDR5010: All ejb(s) of [JMSProcess-ejb] loaded successfully!<br />
JBIFW0010: JBI framework ready to accept requests.<br />
WEB0302: Starting Sun-Java-System/Application-Server.<br />
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8080<br />
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 8181<br />
WEB0712: Starting Sun-Java-System/Application-Server HTTP/1.1 on 4848<br />
SMGT0007: Self Management Rules service is enabled<br />
Application server startup complete.<br />
MQJMSRA_MF1101: setAddressList:NOT setting default value=localhost<br />
MQJMSRA_MF1101: setPassword:NOT setting default value<br />
MQJMSRA_MF1101: setUserName:NOT setting default value=guest<br />
Jundi<br />
Furutani<br />
Roberto</span></p>
<p>O que realmente importa são as três últimas linhas, elas indicam que as mensagens foram corretamentes enviadas e processadas.</p>
<p>Link: <a href="http://www.furutani.com.br/a/NetBeansProjects.zip" title="Baixado: 139 vezes. Tamanho: 38.7 KB. Versão: 1.00">Exemplo JMS</a> - 13/11/2009</p>
<p>Saiba mais sobre JMS acessando o tutorial da SUN neste <a href="http://java.sun.com/products/jms/tutorial/" target="_blank">link</a>.</p>
<p>Até mais,<br />
Roberto</p>
]]></content:encoded>
			<wfw:commentRss>http://www.furutani.com.br/2009/11/exemplo-de-message-driven-bean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
