<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Templarios de San Oracle &#187; ADF, Jdeveloper</title>
	<atom:link href="http://www.tsoracle.com/wparchives/category/adf-jdeveloper/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tsoracle.com</link>
	<description>Diario de un Templario de San Oracle</description>
	<lastBuildDate>Wed, 30 Sep 2009 14:09:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
		<item>
		<title>Lista de plugins para Jdeveloper</title>
		<link>http://www.tsoracle.com/wparchives/2009/06/26/lista-de-plugins-para-jdeveloper/</link>
		<comments>http://www.tsoracle.com/wparchives/2009/06/26/lista-de-plugins-para-jdeveloper/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 16:25:36 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>
		<category><![CDATA[JDeveloper]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/?p=103</guid>
		<description><![CDATA[Oracle ha publicado una lista actualizada de plugins de terceros para JDeveloper. Hay plugins muy interesantes como la de Vik que permite crear copias de seguridad del proyecto en formato zip.La lista pod&#233;is consultarla aqu&#237;.
]]></description>
			<content:encoded><![CDATA[<p>Oracle ha publicado una lista actualizada de plugins de terceros para JDeveloper. Hay plugins muy interesantes como la de <a href="http://adfjsf.blogspot.com/2009/01/jdeveloper-workspace-backup-extension.html" rel="external">Vik</a> que permite crear copias de seguridad del proyecto en formato zip.La lista pod&eacute;is consultarla <a href="http://www.oracle.com/technology/products/jdev/101/update/exchange.xml" title="Oracle JDeveloper Third Party Extension Exchange">aqu&iacute;</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2009/06/26/lista-de-plugins-para-jdeveloper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Fichero de configuraci&#243;n de JDeveloper</title>
		<link>http://www.tsoracle.com/wparchives/2008/01/21/fichero-de-configuracin-de-jdeveloper/</link>
		<comments>http://www.tsoracle.com/wparchives/2008/01/21/fichero-de-configuracin-de-jdeveloper/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 13:10:14 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>
		<category><![CDATA[JDeveloper]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2008/01/21/fichero-de-configuracin-de-jdeveloper/</guid>
		<description><![CDATA[Leyendo un post del blog de CafeLojano llegu&#233; a otro post del blog Java 2 Go! donde cuentan la existencia de un fichero de configuraci&#243;n que lleva JDeveloper. En &#233;l se pueden configurar varios par&#225;metros, entre ellos el java home o la memoria que quieres que utilice la JVM. Est&#225; bien saberlo.   
]]></description>
			<content:encoded><![CDATA[<p>Leyendo un post del blog de <a href="http://cafelojano.wordpress.com/2008/01/18/tips-para-mejorar-el-desempeno-de-jdeveloper/" title="Tips para mejorar el desempe&ntilde;o de JDeveloper" target="_blank">CafeLojano</a> llegu&eacute; a otro post del blog <a href="http://java2go.blogspot.com/2007/06/jdeveloper-tips-2-fine-tuning.html" title="JDeveloper Tips #2: Fine-tuning the configuration" target="_blank">Java 2 Go!</a> donde cuentan la existencia de un fichero de configuraci&oacute;n que lleva JDeveloper. En &eacute;l se pueden configurar varios par&aacute;metros, entre ellos el java home o la memoria que quieres que utilice la <acronym lang="en" title="Java Virtual Machine">JVM</acronym>. Est&aacute; bien saberlo.   </p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2008/01/21/fichero-de-configuracin-de-jdeveloper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Gr&#225;ficas con JDeveloper 11g</title>
		<link>http://www.tsoracle.com/wparchives/2008/01/18/grficas-con-jdeveloper-11g/</link>
		<comments>http://www.tsoracle.com/wparchives/2008/01/18/grficas-con-jdeveloper-11g/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 14:00:58 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>
		<category><![CDATA[gráficas]]></category>
		<category><![CDATA[JDeveloper]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2008/01/18/grficas-con-jdeveloper-11g/</guid>
		<description><![CDATA[Ha publicado Oracle un art&#237;culo que explica c&#243;mo hacer gr&#225;ficas con JDeveloper 11g. La verdad es que cuando veo las demostraciones estas de todo lo que lleva el 11 se me hace la boca agua. Me gustar&#237;a saber cu&#225;ndo piensan sacar la versi&#243;n de producci&#243;n. Ya est&#225; bien de calentarnos, un poquito de por favor.
]]></description>
			<content:encoded><![CDATA[<p>Ha publicado Oracle un art&iacute;culo que explica <a href="http://www.oracle.com/technology/products/jdev/11/how-tos/graph/configuring_graph_types.html" title="Configuring Graph Types" target="_blank">c&oacute;mo hacer gr&aacute;ficas con JDeveloper 11g</a>. La verdad es que cuando veo las demostraciones estas de todo lo que lleva el 11 se me hace la boca agua. Me gustar&iacute;a saber cu&aacute;ndo piensan sacar la versi&oacute;n de producci&oacute;n. Ya est&aacute; bien de calentarnos, un poquito de por favor.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2008/01/18/grficas-con-jdeveloper-11g/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Formatos por defecto del asistente</title>
		<link>http://www.tsoracle.com/wparchives/2007/10/04/formatos-por-defecto-del-asistente/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/10/04/formatos-por-defecto-del-asistente/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 18:31:45 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/10/04/formatos-por-defecto-del-asistente/</guid>
		<description><![CDATA[El formato de fecha que muestra por defecto el asistente de objetos de vista de JDeveloper no incluye el que uso en mis aplicaciones (dd/MM/yyyy). Cada vez que hacía un nuevo objeto de vista tenía que escribir a mano el formato en la pestaña de hints. 

Gracias a un compañero he descubierto como agregar formatos [...]]]></description>
			<content:encoded><![CDATA[<p>El formato de fecha que muestra por defecto el asistente de objetos de vista de JDeveloper no incluye el que uso en mis aplicaciones (dd/MM/yyyy). Cada vez que hacía un nuevo objeto de vista tenía que escribir a mano el formato en la pestaña de hints. </p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/img/formato-fecha/for-fecha-defecto.gif" title="Formatos por defecto"><img border="0" src="http://www.tsoracle.com/img/formato-fecha/for-fecha-defecto.t.gif" /></a></p>
<p>Gracias a un compañero he descubierto como agregar formatos a la lista del asistente.<br />
<span id="more-80"></span>En el directorio <em>&lt;JDEVELOPER_HOME&gt;\jdev\system\oracle.BC4J.xx.xx.xx.xx.xx</em> hay un fichero llamado <em>formatinfo.xml</em>. Ese fichero lleva por cada dominio de datos una serie de formatos que son los que sacará el asistente. Por ejemplo, en el caso de <em>oracle.jbo.domain.Date</em> que es lo que suelo usar para las fechas viene esto:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DOMAIN</span> <span style="color: #000066;">CLASS</span>=<span style="color: #ff0000;">&quot;oracle.jbo.domain.Date&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FORMATTER</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Simple Date&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;oracle.jbo.format.DefaultDateFormatter&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FORMAT</span> <span style="color: #000066;">text</span>=<span style="color: #ff0000;">&quot;yyyy-MM-dd&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FORMAT</span> <span style="color: #000066;">text</span>=<span style="color: #ff0000;">&quot;yyyy-MM-dd G 'at' hh:mm:ss&quot;</span>  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FORMAT</span> <span style="color: #000066;">text</span>=<span style="color: #ff0000;">&quot;EEE, MMM d, ''yy&quot;</span>  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/FORMATTER<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DOMAIN<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Dentro de la etiqueta <em>FORMATTER</em> está la lista de formatos que ofrecerá el asistente. Agregando mi formato preferido en la zona superior queda así:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;DOMAIN</span> <span style="color: #000066;">CLASS</span>=<span style="color: #ff0000;">&quot;oracle.jbo.domain.Date&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FORMATTER</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Simple Date&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;oracle.jbo.format.DefaultDateFormatter&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FORMAT</span> <span style="color: #000066;">text</span>=<span style="color: #ff0000;">&quot;dd/MM/yyyy&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FORMAT</span> <span style="color: #000066;">text</span>=<span style="color: #ff0000;">&quot;yyyy-MM-dd&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FORMAT</span> <span style="color: #000066;">text</span>=<span style="color: #ff0000;">&quot;yyyy-MM-dd G 'at' hh:mm:ss&quot;</span>  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;FORMAT</span> <span style="color: #000066;">text</span>=<span style="color: #ff0000;">&quot;EEE, MMM d, ''yy&quot;</span>  <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/FORMATTER<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
   <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/DOMAIN<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Y de esta manera el asistente muestra el formato preferido el primero de la lista.</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/img/formato-fecha/for-fecha-preferido.gif" title="Formato preferido"><img border="0" src="http://www.tsoracle.com/img/formato-fecha/for-fecha-preferido.t.gif" /></a></p>
<p><strong>Importante</strong>: rearrancar el JDeveloper para que los cambios tengan efecto.<br />
La documentación oficial puede leerse aquí: <a href="http://www.oracle.com/webapps/online-help/jdeveloper/10.1.3?topic=adf_pformathint_html" title="Defining a Formatter and Format Masks for ADF Business Components Clients" target="_blank">Defining a Formatter and Format Masks for ADF Business Components Clients</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/10/04/formatos-por-defecto-del-asistente/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Includes JSP dentro de JSF</title>
		<link>http://www.tsoracle.com/wparchives/2007/10/02/includes-jsp-dentro-de-jsf-2/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/10/02/includes-jsp-dentro-de-jsf-2/#comments</comments>
		<pubDate>Tue, 02 Oct 2007 18:50:12 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/10/02/includes-jsp-dentro-de-jsf-2/</guid>
		<description><![CDATA[Una de las cosas que m&#225;s me frustraron cuando comenc&#233; a desarrollar con JSF era que no me funcionaban bien los includes en el sentido de que la p&#225;gina final son se renderizaba correctamente. Aunque yo vengo de Forms, ten&#237;a un compa&#241;ero que ven&#237;a del mundo Struts y que estaba m&#225;s que acostumbrado a utilizar [...]]]></description>
			<content:encoded><![CDATA[<p>Una de las cosas que m&aacute;s me frustraron cuando comenc&eacute; a desarrollar con <acronym xml:lang="en" title="Java Server Faces">JSF</acronym> era que no me funcionaban bien los includes en el sentido de que la p&aacute;gina final son se renderizaba correctamente. Aunque yo vengo de Forms, ten&iacute;a un compa&ntilde;ero que ven&iacute;a del mundo Struts y que estaba m&aacute;s que acostumbrado a utilizar includes en sus <acronym xml:lang="en" title="Java Server Pages">jsp</acronym>&#8217;s. &Eacute;l tampoco entend&iacute;a por qu&eacute; no se estaban renderizando correctamente. El motivo es que el momento en que se procesa el include &#8220;no se coordina bien&#8221; con el momento en que <acronym xml:lang="en" title="Java Server Faces">JSF</acronym> renderiza. La soluci&oacute;n pasa por:</p>
<ul>
<li>a) Encerrar el include dentro de la etiqueta de <acronym xml:lang="en" title="Java Server Faces">jsf</acronym> <strong>&lt;f:subview&gt;</strong>.</li>
<li>b) Encerrar los grupos de etiquetas de <acronym xml:lang="en" title="Hyper Text Markup Language">html</acronym> puro y duro dentro de la etiqueta de <acronym xml:lang="en" title="Java Server Faces">jsf</acronym> <strong>&lt;f:verbatim&gt;</strong>.</li>
</ul>
<p>Bueno, todo esto est&aacute; mejor explicado en el art&iacute;culo de JavaWorld <a href="http://www.javaworld.com/javaworld/jw-12-2004/jw-1213-jsf.html?page=1" title="Getting around JSF: The role of JSP. Osea, pas&aacute;ndose por el forro a JSF." target="_blank">Getting around JSF: The role of JSP</a> y en el propio tutorial de Sun <a href="http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSFPage3.html" target="_blank" title="Setting Up a Page">Setting Up a Page</a>.<br />
Lamentablemente, a&uacute;n no he descubierto por qu&eacute; se renderizan mal los includes que hago que contienen etiquetas ADF Faces.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/10/02/includes-jsp-dentro-de-jsf-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Diagramas con JFreeChart y JDeveloper</title>
		<link>http://www.tsoracle.com/wparchives/2007/10/01/diagramas-con-jfreechart-y-jdeveloper/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/10/01/diagramas-con-jfreechart-y-jdeveloper/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 18:26:29 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/10/01/diagramas-con-jfreechart-y-jdeveloper/</guid>
		<description><![CDATA[Ha publicado Oracle un art&#237;culo donde se explican ejemplos para pintar diagramas varios (de barras, de quesitos, etc) utilizando JFreechart. Los hay para Swing y tambi&#233;n para J2EE. Es algo que echaba bastante de menos y creo que resulta &#250;til (y mol&#243;n): Visualize Your Oracle Database Data with JFreeChart.
]]></description>
			<content:encoded><![CDATA[<p>Ha publicado Oracle un art&iacute;culo donde se explican ejemplos para pintar diagramas varios (de barras, de quesitos, etc) utilizando <a href="http://www.jfree.org/jfreechart/" title="JFreeChart" target="_blank">JFreechart</a>. Los hay para Swing y tambi&eacute;n para <acronym xml:lang="en" title="Java 2 Enterprise Edition (Sun)">J2EE</acronym>. Es algo que echaba bastante de menos y creo que resulta &uacute;til (y mol&oacute;n): <a href="http://www.oracle.com/technology/pub/articles/marx-jchart.html" title="Visualize Your Oracle Database Data with JFreeChart" target="_blank">Visualize Your Oracle Database Data with JFreeChart</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/10/01/diagramas-con-jfreechart-y-jdeveloper/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Abrir reports en ADF Faces y descargar ficheros</title>
		<link>http://www.tsoracle.com/wparchives/2007/09/21/abrir-reports-en-adf-faces-y-descargar-ficheros/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/09/21/abrir-reports-en-adf-faces-y-descargar-ficheros/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 13:53:20 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/09/21/abrir-reports-en-adf-faces-y-descargar-ficheros/</guid>
		<description><![CDATA[Frank ha publicado un art&#237;culo explicando c&#243;mo mostrar un report en una p&#225;gina hecha con ADF Faces. A&#250;n no he necesitado hacerlo, pero me ha resultado muy interesante la manera que tiene de abrir un pop-up. El art&#237;culo se llama ADF Faces: Showing Reports. Enlazado a &#233;ste hay otro que tambi&#233;n est&#225; curioso y que [...]]]></description>
			<content:encoded><![CDATA[<p>Frank ha publicado un art&iacute;culo explicando c&oacute;mo mostrar un report en una p&aacute;gina hecha con ADF Faces. A&uacute;n no he necesitado hacerlo, pero me ha resultado muy interesante la manera que tiene de abrir un pop-up. El art&iacute;culo se llama <a href="http://thepeninsulasedge.com/frank_nimphius/2007/09/11/adf-faces-showing-reports/" title="ADF Faces: Showing Reports" target="_blank">ADF Faces: Showing Reports</a>. Enlazado a &eacute;ste hay otro que tambi&eacute;n est&aacute; curioso y que explica cómo hacer una descarga <i>elegante</i> de ficheros: <a href="http://thepeninsulasedge.com/frank_nimphius/2007/08/18/adf-faces-direct-file-download-through-managed-bean/" target="_blank" title="ADF Faces: Direct file download through managed bean">ADF Faces: Direct file download through managed bean</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/09/21/abrir-reports-en-adf-faces-y-descargar-ficheros/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Exportar tabla ADF a excel (II)</title>
		<link>http://www.tsoracle.com/wparchives/2007/09/02/exportar-tabla-adf-a-excel-ii/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/09/02/exportar-tabla-adf-a-excel-ii/#comments</comments>
		<pubDate>Sun, 02 Sep 2007 21:45:54 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/09/02/exportar-tabla-adf-a-excel-ii/</guid>
		<description><![CDATA[Le he echado un vistazo al artículo Export ADF Table To Excel de iAdvise y he conseguido reproducirlo. Para el ejemplo he usado la tabla EMPLOYEES del esquema HE que viene con la instalaci&#243;n de Oracle XE, pero como ver&#233;is sirve cualquier tabla.
Lo primero es crear el objeto de entidad (opcional) y el correspondiente objeto [...]]]></description>
			<content:encoded><![CDATA[<p>Le he echado un vistazo al artículo <a href="http://iadvise.blogspot.com/2007/04/export-adf-table-to-excel.html" title="Export ADF Table To Excel" target="_blank">Export ADF Table To Excel de iAdvise</a> y he conseguido reproducirlo. Para el ejemplo he usado la tabla <em>EMPLOYEES</em> del esquema <em>HE</em> que viene con la instalaci&oacute;n de <em>Oracle XE</em>, pero como ver&eacute;is sirve cualquier tabla.<br />
<span id="more-72"></span>Lo primero es crear el objeto de entidad (opcional) y el correspondiente objeto de vista:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.1.gif" title="Nuevo objeto de entidad"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.1t.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.2.gif" title="Nuevo objeto de vista"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.2t.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.3.gif" title="Nuevo application module"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.3t.gif" /></a></p>
<p>Al final deber&iacute;a haber un &aacute;rbol de objetos de modelo como &eacute;ste:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.4.gif" title="&Aacute;rbol de objetos del modelo"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.4.gif" /></a></p>
<p>Ahora crearemos una clase de utilidad con el m&eacute;todo de ejemplo que he tomado y retocado de <a href="http://iadvise.blogspot.com/2007/04/export-adf-table-to-excel.html" title="Export ADF Table To Excel" target="_blank">iAdvise</a>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.tsoracle.util</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.IOException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.PrintWriter</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Date</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.faces.context.FacesContext</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.servlet.http.HttpServletResponseWrapper</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">oracle.adf.model.binding.DCIteratorBinding</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">oracle.jbo.Row</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">oracle.jbo.RowSetIterator</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * tsoracle.com
 * Clase de utilidades de transformación
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TransformUtil <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> TransformUtil<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Método tomado y adaptado de iAdvise, de su artículo 
     * &quot;Export ADF Table To Excel&quot; del 11 de Abril de 2007. http://iadvise.blogspot.com/2007/04/export-adf-table-to-excel.html
     * Este método coge una tabla ADF cualquiera y devuelve al usuario su contenido
     * en una hoja excel
     * 
     * @param tableContent Tabla con el contenido
     * @throws IOException 
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> exportHtmlTableToExcel<span style="color: #009900;">&#40;</span>DCIteratorBinding tableContent<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">IOException</span> <span style="color: #009900;">&#123;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">//Set the filename DateTime dt = new</span>
        <span style="color: #003399;">Date</span> ahora <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// El nombre habría que tratar de hacerlo pseudoúnico de una mara más fina</span>
        <span style="color: #003399;">String</span> filename <span style="color: #339933;">=</span> ahora.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;.csv&quot;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
        <span style="color: #666666; font-style: italic;">//Setup the output </span>
        <span style="color: #003399;">String</span> contentType <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;application/vnd.ms-excel&quot;</span><span style="color: #339933;">;</span>
        FacesContext fc <span style="color: #339933;">=</span> FacesContext.<span style="color: #006633;">getCurrentInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        HttpServletResponseWrapper response <span style="color: #339933;">=</span> 
            <span style="color: #009900;">&#40;</span>HttpServletResponseWrapper<span style="color: #009900;">&#41;</span>fc.<span style="color: #006633;">getExternalContext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getResponse</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        response.<span style="color: #006633;">setHeader</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-disposition&quot;</span>, 
                           <span style="color: #0000ff;">&quot;attachment; filename=&quot;</span> <span style="color: #339933;">+</span> filename<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        response.<span style="color: #006633;">setContentType</span><span style="color: #009900;">&#40;</span>contentType<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">PrintWriter</span> out <span style="color: #339933;">=</span> response.<span style="color: #006633;">getWriter</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Obtengo el iterador de la tabla</span>
        RowSetIterator rsi <span style="color: #339933;">=</span> tableContent.<span style="color: #006633;">getRowSetIterator</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> attNames <span style="color: #339933;">=</span> rsi.<span style="color: #006633;">getRowAtRangeIndex</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getAttributeNames</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Pinta el título de las columnas</span>
        <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> attNames.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
            out.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span>attNames<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #009900;">&#125;</span>
&nbsp;
        out.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Obtengo el índice del registro actual</span>
        Row filaSeleccionada <span style="color: #339933;">=</span> rsi.<span style="color: #006633;">getCurrentRow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Me posiciono en el primer registro</span>
        rsi.<span style="color: #006633;">first</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        Row currentRow<span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">// Itero por todas las filas</span>
        <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>currentRow <span style="color: #339933;">=</span> rsi.<span style="color: #006633;">getCurrentRow</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">Object</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> attValues <span style="color: #339933;">=</span> currentRow.<span style="color: #006633;">getAttributeValues</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #666666; font-style: italic;">// Recorro cada columna y escribo su valor</span>
            <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> j <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> j <span style="color: #339933;">&lt;</span> attValues.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
                out.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span>attValues<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #009900;">&#125;</span>
&nbsp;
            out.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
            <span style="color: #666666; font-style: italic;">// Muevo el iterador hacia delante</span>
            rsi.<span style="color: #006633;">next</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        out.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Finaliza el fichero</span>
        fc.<span style="color: #006633;">responseComplete</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Vuelvo a dejar al iterador posicionado donde lo encontré, para evitar errores</span>
        <span style="color: #666666; font-style: italic;">// de &quot;cambio de divisa&quot;</span>
        rsi.<span style="color: #006633;">setCurrentRow</span><span style="color: #009900;">&#40;</span> filaSeleccionada <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>El siguiente paso es crear una nueva p&aacute;gina y arrastrar sobre ella el objeto de vista como una <em>ADF Read Only Table</em>:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.5.gif" title="Nueva p&aacute;gina"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.5.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.6.gif" title="Objeto de vista en el Data Control Palette"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.6.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.7.gif" title="Arrastrar el data control como una ADF Read Only Table"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.7.gif" /></a></p>
<p>Ahora creamos un nuevo <em>CommandButton</em> en el <em>footer</em> de la tabla:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.9.gif" title="Arrastrar el data control como una ADF Read Only Table"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.9.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.10.gif" title="Footer de la tabla en la estructura de la p&aacute;gina"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.10t.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.10i.gif" title="Arrastrar el CommandButton al footer de la tabla"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.10it.gif" /></a></p>
<p>Lo siguiente es colocarse sobre el inspector de propiedades del bot&oacute;n y pinchar sobre los puntos suspensivos del <em>ActionListener</em>:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.10g.gif" title="Pinchar sobre los puntos suspensivos del ActionListener"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.10g.gif" /></a></p>
<p>Entonces aparece un asistente pregunt&aacute;ndonos bean y m&eacute;todo. Creamos un nuevo bean (<em>AdfTable2ExcelPageBean</em>) y dentro de &eacute;l un nuevo m&eacute;todo (<em>exportToExcel</em>). Al final en la propiedad <em>ActionListener</em> tendremos el valor <em>#{AdfTable2ExcelPageBean.exportToExcel}</em>:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.11.gif" title="Asistente pidiendo bean y m&eacute;todo"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.11.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.13.gif" title="Asistente para la creaci&oacute;n de un nuevo bean"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.13.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.14ii.gif" title="Asistente para la creaci&oacute;n de un nuevo m&eacute;todo dentro del bean"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.14ii.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.14i.gif" title="Asistente despu&eacute;s de haber creado m&eacute;todo y bean"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.14i.gif" /></a></p>
<p>Antes de seguir hay que agregar la propiedad <em>bindings</em> al c&oacute;digo de la clase del bean:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * Variable que contiene los bindings
 */</span>
<span style="color: #000000; font-weight: bold;">protected</span> BindingContainer bindings<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setBindings<span style="color: #009900;">&#40;</span>BindingContainer bindings<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">bindings</span> <span style="color: #339933;">=</span> bindings<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> BindingContainer getBindings<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">return</span> bindings<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Y tampoco podemos olvidarnos de inicializar la variable en el fichero <em>faces-config.xml</em>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;">  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;managed-bean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;managed-bean-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>AdfTable2ExcelPageBean<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/managed-bean-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;managed-bean-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.tsoracle.adftable2excel.view.backing.AdfTable2Excel<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/managed-bean-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;managed-bean-scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>request<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/managed-bean-scope<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;managed-property<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>bindings<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/property-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>#{bindings}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/managed-property<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
  <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/managed-bean<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>O si lo preferimos, podemos hacerlo con los asistentes que nos proporciona el entorno. Primero creamos un nuevo <em>managed value</em>:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.18.gif" title="Crear un managed value"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.18t.gif" /></a></p>
<p>Y luego, pinchando sobre el bot&oacute;n <em>Edit</em>, el valor:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.19.gif" title="Editar valor de managed value"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.19.gif" /></a></p>
<p>Ahora queremos que el m&eacute;todo que hemos creado en el <em>ActionListener</em> obtenga el iterador de la tabla y se lo pase a la funci&oacute;n est&aacute;tica. Tenemos que ver en primer lugar c&oacute;mo se llama el iterador. Para ello pulsamos con el bot&oacute;n derecho sobre una zona vac&iacute;a de la p&aacute;gina y le damos a <em>Go to Page Definition</em>:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.15.gif" title="Ir al Page Definition"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.15.gif" /></a></p>
<p>Luego buscamos el iterador:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.16.gif" title="Iterador dentro del page definition"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.16t.gif" /></a></p>
<p>Y nos quedamos con su nombre:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.17.gif" title="Nombre del iterador dentro del page definition"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.17t.gif" /></a></p>
<p>Ahora ya podemos rellenar el c&oacute;digo del m&eacute;todo <em>exportToExcel</em>, tal como se explica en <a href="http://iadvise.blogspot.com/2007/04/export-adf-table-to-excel.html" title="Export ADF Table To Excel" target="_blank">iAdvise</a>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #008000; font-style: italic; font-weight: bold;">/**
 * Método que transforma los datos de la tabla a excel.
 */</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> exportToExcel<span style="color: #009900;">&#40;</span><span style="color: #003399;">ActionEvent</span> actionEvent<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">IOException</span> <span style="color: #009900;">&#123;</span>
    TransformUtil.<span style="color: #006633;">exportHtmlTableToExcel</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>DCIteratorBinding<span style="color: #009900;">&#41;</span>bindings.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;EmployeesView1Iterator&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Finalmente ejecutamos y probamos el bot&oacute;n:</p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.20.gif" title="P&aacute;gina de prueba"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.20t.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.21.gif" title="Descarga del excel"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.21.gif" /></a></p>
<p align="center"><a rel="lightbox[roadtrip]" href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.22.gif" title="P&aacute;gina de prueba y hoja excel generada"><img border="0" src="http://www.tsoracle.com/wp-content/uploads/adftable2excel/adftable2excel.22t.gif" /></a></p>
<p>Por si a alguien le interesa he subido el ejemplo. Despu&eacute;s de descomprimirlo es necesario copiar las librer&iacute;as <em>adf-faces-impl.jar, jsf-impl.jar</em> a <em>WEB-INF/lib</em>: <a href="http://www.tsoracle.com/wp-content/uploads/adftable2excel/AdfTable2Excel.zip" title="Aplicaci&oacute;n de ejemplo">AdfTable2Excel.zip</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/09/02/exportar-tabla-adf-a-excel-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Problemas de memoria</title>
		<link>http://www.tsoracle.com/wparchives/2007/08/31/problemas-de-memoria/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/08/31/problemas-de-memoria/#comments</comments>
		<pubDate>Fri, 31 Aug 2007 14:23:30 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/08/31/problemas-de-memoria/</guid>
		<description><![CDATA[Uno de los primeros problemas con los que te encuentras al comenzar a desarrollar con ADF sobre tomcat es el odiado &#8220;Exception in thread &#8220;TP-Processor2&#8243; java.lang.OutOfMemoryError: PermGen space&#8221;. Encontre alguien a quien le pasaba lo mismo que a mi en Tomcat &#8211; User. La soluci&#243;n la encontr&#233; en la p&#225;gina de Sun sobre las opciones [...]]]></description>
			<content:encoded><![CDATA[<p>Uno de los primeros problemas con los que te encuentras al comenzar a desarrollar con ADF sobre tomcat es el odiado <em>&#8220;Exception in thread &#8220;TP-Processor2&#8243; java.lang.OutOfMemoryError: PermGen space&#8221;</em>. Encontre alguien a quien le pasaba lo mismo que a mi en <a href="http://www.nabble.com/Re:-java.lang.OutOfMemoryError:-PermGen-space-p4732940.html" target="_blank" title="Re: java.lang.OutOfMemoryError: PermGen space">Tomcat &#8211; User</a>. La soluci&oacute;n la encontr&eacute; en <a href="http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp" title="Java HotSpot VM Options" target="_blank">la p&aacute;gina de Sun sobre las opciones de la m&aacute;quina virutal</a> y pasa por agregar a <em>JAVA_OPTS</em> una opci&oacute;n donde se indique el m&aacute;ximo de memora que usar&aacute; el servidor en el <em>catalina.sh</em>:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">JAVA_OPTS=&quot;-XX:+PrintGCDetails -XX:MaxPermSize=500m&quot;</pre></div></div>

<p><span id="more-71"></span><br />
Lo de <em>PrintGCDetails</em> agrega informaci&oacute;n sobre el estado de la memoria a los logs del tomcat.<br />
Todo esto lo hice (como siempre) sin tener mucha idea de qu&eacute; significa cada cosa. Ahora he pasado a la fase dos: <em>&#8220;Exception in thread &#8220;TP-Processor2&#8243; java.lang.OutOfMemoryError: Heap space&#8221;</em>. As&iacute; que me puse a buscar la mejor manera de optimizar la memoria y encontr&eacute; un art&iacute;culo muy interesante donde explica los conceptos de manera secilla y clara. Ser&aacute; m&aacute;s &uacute;til para aquellos que gocen del privilegio de tener un OC4J: <a href="http://iadvise.blogspot.com/2007/04/java-memory-in-ias-environment.html" target="_blank" title="Java &#038; Memory in an iAS environment ">Java &#038; Memory in an iAS environment</a>. Ley&eacute;ndolo fue como descubr&iacute; que con el MaxPermSize s&oacute;lo estoy aumentando el m&aacute;ximo de memoria <em>&#8220;permanent generation&#8221;</em>. Intent&eacute; aumentar tambi&eacute;n el tama&ntilde;o del <em>Heap</em> con los par&aacute;metros <em>-Xms y -Xmx</em>, que entiendo que se refiere al total (joven + vieja + permanente).</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">-XX:+PrintGCDetails -XX:PermSize=64m -XX:MaxPermSiz
e=500m -Xms256m -Xmx512m -server</pre></div></div>

<p>El par&aacute;metro <em>-server</em> hace que la m&aacute;quina virtual se comporte de manera optimizada para servidor. Tarda m&aacute;s en arrancar al principio pero se supone que luego va mejor.<br />
Un compa&ntilde;ero me pas&oacute; la url de la documentaci&oacute;n oficial de Sun <a href="http://docs.sun.com/source/819-0084-10/pt_tuningjava.html" target="_blank" title="Tuning the Java Runtime System">Tuning the Java Runtime System</a>. Gracias a ella ahora comprendo los mensajes de log del recolector de basura que quedan como consecuencia del par&aacute;metro <em>PrintGCDetails</em>. Explica tambi&eacute;n otro problema que me surgi&oacute; despu&eacute;s. Cuando el recolector se llena al m&aacute;ximo el servidor tiene que vaciarlo. En mi caso tardaba algo m&aacute;s de cinco segundos, lo que provocaba fallos en las aplicaciones. As&iacute; que he agregado a la lista de par&aacute;metros estos dos:</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">-XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=1</pre></div></div>

<p>Se supone que esto cambia el algoritmo de recolecci&oacute;n de basurilla haciendo que se limpie m&aacute;s a menudo y con un menor coste de tiempo.<br />
El par&aacute;metro <em>SoftRefLRUPolicyMSPerMB</em> indica el ratio de segundos de vida por mega libre en el <em>heap</em>. Al poner el par&aacute;metro <em>-server</em> la <acronym xml:lang="en" title="Java Virtual Machine">JVM</acronym> ajusta este ratio para retardar lo m&aacute;ximo posible la recolecci&oacute;n. De ah&iacute; que no me hubiera pasado antes. Encontr&eacute; unas <acronym xml:lang="en" title="Frequently Asked Questions">FAQ</acronym>s que explicaban la funci&oacute;n de este par&aacute;metro en <a href="http://java.sun.com/docs/hotspot/HotSpotFAQ.html#gc_softrefs" target="_blank" title="What determines when softly referenced objects are flushed?">Sun Developer Network</a>. Si he comprendido bien el concepto, un valor de 1000 en este par&aacute;metro indica que si mi <em>heap</em> es de 500M y me quedan libres 250M los objetos del recolector tendr&aacute;n 250 segundos de vida.<br />
El parámetro <em>UseConcMarkSweepGC</em> parece que pone a trabajar u tipo específico de recolector de basura denominado <em>concurrent low pause collector</em>. He encontrado los distintos tipos de recolector descritos en <a href="http://www.javafaq.nu/java-articles-archive-163.html" title="What is jvmstat?" target="_blank">www.javafaq.nu</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/08/31/problemas-de-memoria/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Exportar tabla ADF a excel</title>
		<link>http://www.tsoracle.com/wparchives/2007/08/30/exportar-tabla-adf-a-excel/</link>
		<comments>http://www.tsoracle.com/wparchives/2007/08/30/exportar-tabla-adf-a-excel/#comments</comments>
		<pubDate>Thu, 30 Aug 2007 13:21:47 +0000</pubDate>
		<dc:creator>Sir Ragnar</dc:creator>
				<category><![CDATA[ADF, Jdeveloper]]></category>

		<guid isPermaLink="false">http://www.tsoracle.com/wparchives/2007/08/30/exportar-tabla-adf-a-excel/</guid>
		<description><![CDATA[He encontrado un art&#237;culo interesante que explica una forma sencilla de exportar una tabla ADF cualquiera a excel. A&#250;n no lo he probado pero me lo encolo porque tiene buena pinta: Export ADF Table To Excel.
]]></description>
			<content:encoded><![CDATA[<p>He encontrado un art&iacute;culo interesante que explica una forma sencilla de exportar una tabla <acronym xml:lang="en" title="Application Development Framework">ADF</acronym> cualquiera a excel. A&uacute;n no lo he probado pero me lo encolo porque tiene buena pinta: <a href="http://iadvise.blogspot.com/2007/04/export-adf-table-to-excel.html" title="Export ADF Table To Excel" target="_blank">Export ADF Table To Excel</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoracle.com/wparchives/2007/08/30/exportar-tabla-adf-a-excel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>
