<?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>Frank D. Martínez</title>
	<atom:link href="http://www.frankdavidmartinez.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.frankdavidmartinez.com</link>
	<description>Blog de tecnología en Español</description>
	<lastBuildDate>Sun, 08 Mar 2009 18:57:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Glassfish + Quartz + EJB</title>
		<link>http://www.frankdavidmartinez.com/2009/03/glassfish-quartz-ejb/</link>
		<comments>http://www.frankdavidmartinez.com/2009/03/glassfish-quartz-ejb/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 15:22:25 +0000</pubDate>
		<dc:creator>Frank D. Martínez</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Glassfish]]></category>
		<category><![CDATA[Quartz]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.frankdavidmartinez.com/?p=9</guid>
		<description><![CDATA[Después de buscar infinitamente en internet como configurar Quartz en Glassfish para programar Jobs desde un EJB y no encontrar solución, decidí hacerlo desde cero y lo logré, como me dí cuenta que hay muchos post en los forums preguntando como hacer esto, decidí publicar el procedimiento. Ojalá les sirva.
Enfoque:

Crear una aplicación Web que va [...]]]></description>
			<content:encoded><![CDATA[<p>Después de buscar infinitamente en internet como configurar Quartz en Glassfish para programar Jobs desde un EJB y no encontrar solución, decidí hacerlo desde cero y lo logré, como me dí cuenta que hay muchos post en los forums preguntando como hacer esto, decidí publicar el procedimiento. Ojalá les sirva.</p>
<p><strong>Enfoque:</strong></p>
<ol>
<li>Crear una aplicación Web que va a servir de servidor Quartz vía RMI.</li>
<li>Configurar el Glassfish para que permita la conexión RMI entre los EJBs y la aplicación Web.</li>
<li>Crear un EJB de prueba.</li>
</ol>
<p><strong>Crear una aplicación Web que va a servir de servidor Quartz vía RMI:</strong></p>
<p>Crear una aplicación web normal con las siguientes bibliotecas en WEB-INF/lib:</p>
<ol>
<li>quartz-1.6.5.jar</li>
<li>commons-collections-3.2.jar</li>
<li>commons-logging-1.1.jar</li>
</ol>
<p>Incluir un archivo quartz.properties en WEB-INF/classes con las siguientes entradas</p>
<pre class="code"><span style="color: #ff0000;"><strong>org.quartz.scheduler.instanceName = Sched1
org.quartz.scheduler.rmi.export = true
org.quartz.scheduler.rmi.registryHost = localhost
org.quartz.scheduler.rmi.registryPort = 1099
org.quartz.scheduler.rmi.createRegistry = true</strong></span>
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore</pre>
<p>Agregar el listener en el web.xml:</p>
<pre class="code">&lt;listener&gt;
    &lt;listener-class&gt;org.quartz.ee.servlet.QuartzInitializerListener&lt;/listener-class&gt;
&lt;/listener&gt;</pre>
<p>Agregar el listener en el sun-web.xml:</p>
<pre class="code">
    &lt;class-loader delegate="true"/&gt;
</pre>
<p><strong>Configurar el Glassfish para que permita la conexión RMI entre los EJBs y la aplicación Web:</strong></p>
<p>Activar el Security Manager:</p>
<p>En la consola administrativa del Glassfish, entrar a [Configuration -&gt; Security] y activar la casilla [Security Manager]</p>
<p>Editar el archivo server.policy que se encuentra en la carpeta config del dominio y agregar la siguiente regla:</p>
<pre class="code"> grant codeBase "file:${com.sun.aas.instanceRoot}/applications/j2ee-modules/<span style="color: #ff0000;"><strong>[web app name]</strong></span>/WEB-INF/lib/quartz-1.6.5.jar" {
     permission java.security.AllPermission;
 };</pre>
<p>Obviamente hay que reemplazar <strong>[web app name]</strong> por el nombre real de nuestra aplicación web que hicimos al principio.</p>
<p>Bueno hasta aquí ya está listo el servidor Quartz, solo falta copiar el war en el autodeploy del dominio y hacer algun EJB para probar. <strong>Nota: hay que reiniciar el Glassfish después del autodeploy.</strong></p>
<p><strong>Crear un EJB de prueba:</strong></p>
<p>Creamos un EJB que tenga los siguentes jars (bibliotecas) empacadas en el jar.</p>
<ol>
<li>quartz-1.6.5.jar</li>
<li>commons-collections-3.2.jar</li>
<li>commons-logging-1.1.jar</li>
</ol>
<p>Ponemos un archivo quartz.properties en la raiz del jar con las siguientes entradas:</p>
<pre class="code">org.quartz.scheduler.instanceName = Sched1
org.quartz.scheduler.logger = schedLogger
org.quartz.scheduler.rmi.proxy = true
org.quartz.scheduler.rmi.registryHost = localhost
org.quartz.scheduler.rmi.registryPort = 1099</pre>
<p>Y listo, dentro de cualquier EJB podemos obtener el Scheduler así:</p>
<pre class="code"> SchedulerFactory sf = new StdSchedulerFactory();
 Scheduler sched = sf.getScheduler();</pre>
<p>Código completo del ejemplo:</p>
<ol>
<li><a href="/wp-content/uploads/2009/03/quartzapp.zip">Quartz Server WebApp</a></li>
<li><a href="/wp-content/uploads/2009/03/quartzejbclient.zip">EJB Quartz Client</a></li>
</ol>
<p>Nota: Las bibliotecas (jars) fueron removidas, hay que descargarlas por aparte.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.frankdavidmartinez.com/2009/03/glassfish-quartz-ejb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nuevo blog en español</title>
		<link>http://www.frankdavidmartinez.com/2009/02/nuevo-blog-en-espanol/</link>
		<comments>http://www.frankdavidmartinez.com/2009/02/nuevo-blog-en-espanol/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 21:46:30 +0000</pubDate>
		<dc:creator>Frank D. Martínez</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.frankdavidmartinez.com/?p=3</guid>
		<description><![CDATA[Hola todos, actualmente tengo un blog en Inglés en http://www.ibstaff.net/fmartinez/  pero la mayoría de mis clientes y amigos están aquí en Colombia y me han pedido que escriba en español. Por eso estoy abriendo este nuevo blog, la idea es escribir con más frecuencia aquí que en el antiguo.
Usualmente escribo artículos técnicos sobre Java, PHP, [...]]]></description>
			<content:encoded><![CDATA[<p>Hola todos, actualmente tengo un blog en Inglés en http://www.ibstaff.net/fmartinez/  pero la mayoría de mis clientes y amigos están aquí en Colombia y me han pedido que escriba en español. Por eso estoy abriendo este nuevo blog, la idea es escribir con más frecuencia aquí que en el antiguo.</p>
<p>Usualmente escribo artículos técnicos sobre Java, PHP, Linux, Desarrollo de software en general, sin embargo espero utilizar este nuevo espacio para escribir también sobre negocios e ideas de tecnología aquí en Colombia.</p>
<p>WordPress es una plataforma excelente para sitios orientados a contenido, probablemente publique de vez en cuando algún artículo relacionado con desarrollo de plugins o temas para WordPress. <img src='http://www.frankdavidmartinez.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.frankdavidmartinez.com/2009/02/nuevo-blog-en-espanol/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
