jueves, 20 de septiembre de 2012

Quartz DailyCalendar Spring Configuration


Sólo un ejemplo de configuración del DailyCalendar con Spring, con el parámetro "InvertTimeRange" seteado en TRUE. Este parámetro se usa porque el Calendar no acepta un rango que ocupe dos días, por ejemplo:

- Si yo pretendo que se excluyan el rango desde las 23 hasta las 7 y pongo directamente 23-7, entonces me va a arrojar el siguiente error:


org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.quartz.impl.
calendar.DailyCalendar]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Invalid time range: 23:0:0:0 - 7:0:0:0.

- La solución es setear el parámetro InvertTimeRange en TRUE, de esta manera, el rango especificado es el único NO EXCLUIDO. Con lo cual, bastaría poner 7-23 para que excluya todo el resto. Abajo un ejemplo de implementación:

<bean id ="calendarioRestringeNoche" class="org.quartz.impl.calendar.DailyCalendar">
        <!-- Hora de inicio de rango -->
        <constructor-arg index="0"><value>7</value></constructor-arg>
        <!-- Hora de fin de rango -->
        <constructor-arg index="1"><value>23</value></constructor-arg>
        <property name="invertTimeRange" value="true"></property>
  </bean>

jueves, 16 de agosto de 2012

Migración Weblogic11g - Descriptores de Despliegue


Cuando migramos aplicaciones entre versiones de Weblogic, los descriptores de despliegue siempre dan problemas. Por suerte el mismo Weblogic nos da una herramienta para automatizar la tarea de actualización. Pasos:
  • Abrir línea de comandos.
  • Ir a nuestro BEAHOME, localizar y ejecutar el archivo "setWLSEnv.cmd" (en mi caso se encuentra en C:\beaOSB\wlserver_10.3\server\bin).
  • Dentro de la misma ventana, nos situamos en la carpeta donde tenemos subidos los EARs y WARs (C:\beaOSB\user_projects\glomanto\glomanto\servers\AdminServer\upload en mi caso) y ejecutamos la siguiente sentencia:
java weblogic.DDConverter -d Guido MIG-Ventas.ear
Donde lo resaltado en rojo es el directorio donde se van a crear los nuevos descriptores y lo resaltado en azul es el nombre del EAR/WAR que se quiere actualizar en cuestión.

----------------------------------------------------------------------------------------------------------------

When migrating applications between Weblogic versions, the deployment descriptors are always a headache. Luckily, Weblogic gives us a tool for automating this task. Steps:
  • Open command line.
  • Navigate to our BEAHOME, locate and execute the "setWLSEnv.cmd" file (which in my case is located in C:\beaOSB\wlserver_10.3\server\bin).
  • In the same window, go to the folder where you have the EARs and/or WARs.  (C:\beaOSB\user_projects\glomanto\glomanto\servers\AdminServer\upload in my case) and execute the following command:
java weblogic.DDConverter -d Guido MIG-Ventas.ear
Where the red parameter indicates the directory where the DD will be generated and the blue one is the name of the EAR/WAR you're trying to migrate.



viernes, 10 de agosto de 2012

ANT - Can´t find Javac

Tenés configurada correctamente la JDK en el Eclipse y aún así al intentar compilar tu proyecto con ANT te salta el siguiente error:


Unable to find a javac compiler;
   com.sun.tools.javac.Main is not on the classpath.
   Perhaps JAVA_HOME does not point to the JDK


Pasa solucionarlo: Window => Preferences => Ant => Runtime => Global Entries => Add External JAR => buscá el "tools.jar" en el /bin/lib/ de tu JDK, agregalo y listrom.

martes, 3 de julio de 2012

Junit - Test Source Folder

The input type of launch configuration does not exist


Si nos cruzamos con este error al momento de intentar ejecutar tests unitarios, solo tenemos que configurar el build-path del proyecto y agregar la carpeta donde se encuentran nuestros test como source.



If we come across this error when trying to execute some of our test classes, we only need to configure the project's build-path by setting the folder in which our tests reside, as a "source folder".

jueves, 19 de abril de 2012

Weblogic - Case Sensitive

Otra entrada corta, a modo de recordatorio, y por lo tanto seguramente poco útil para otras personas aparte de mí.
A partir de la versión 9, WL es case sensitive, lo cual puede generar quilombos con por ejemplo interacciones entre 8 y 11 (cuek). Si es Linux no hay dramas el tema es Windows
Para solucionar esto nos tenemos que dirigir a la consola y dentro de la siguiente ruta
"Domain-> Security-> Advanced" vamos a ver la opción de "Web App Files Case Insensitive".

Si lo dejamos en "OS" evalúa que hacer según el sistema operativo.

-----------------------------------------------------------------------------------------------

Another short entry, and only as a reminder, so it won't be of any use to anybody but me.

Weblogic is, from version 9 onwards, case sensitive, which often means trouble.
To solve this we need to open WL's console and go to the following address "Domain-> Security-> Advanced". In that screen we'll be able to change the  "Web App Files Case Insensitive" option. 
We can choose then to write "OS" which means that Weblogic will evaluate the OS and act accordingly.

jueves, 15 de marzo de 2012

ANT + Netbeans

Entrada cortita, más personal, menos genérica, a modo de aclaración y recordatorio:

Problemas del tipo "Package/Symbol not Found", o sea, falta un jar. :P

Siempre chequear en el project.properties para asegurarnos que el jar conflictivo esta agregado efectivamente al classpath de javac.
La miríada de build-impl que te genera la poronga del netbeans es solamente para compilar en el classpath del Eclipse.

lunes, 27 de febrero de 2012

Javascript - Fechas/Dates

Agregar días laborales o hábiles - Add Business Days


No falla. En toda aplicación siempre te hacen programar algún calendario específico del negocio del cliente que te hace volverte loco. Y como la clásica es hacer offsets solamente sobre días hábiles (ej: "necesito que permita seleccionar entre 5 y 10 días hábiles después del día de hoy"). 
Por eso, acá dejo una función liviana y adecuada para lidiar con los problemas de mostrar, sumar y restar días hábiles. Esto combinado con el jQuery Calendar (para no mostrar fines de semana) funciona de pelos.


Importante: hay que pasarle un int, (parseInt() de ultima) 


En fin, la función en sí la encontré acá:
http://javascript.about.com/library/blbusdayadd.htm


Pero por las dudas la copio no vaya a ser que desaparezca la página.
Number.prototype.mod = function(n) {return ((this%n)+n)%n;}Date.prototype.addBusDays = function(dd) {var wks = Math.floor(dd/5);var dys = dd.mod(5);var dy = this.getDay();if (dy === 6 && dys > -1) {   if (dys === 0) {dys-=2; dy+=2;}   dys++; dy -= 6;}if (dy === 0 && dys < 1) {   if (dys === 0) {dys+=2; dy-=2;}   dys--; dy += 6;}if (dy + dys > 5) dys += 2;if (dy + dys < 1) dys -= 2;this.setDate(this.getDate()+wks*7+dys);}

Para invocarla, simplemente:
var due = new Date();

due.addBusDays(9);




---------------------------------------------------------------------------------------------


It happens all the time. Most webapp requirements come with a crazy customized calendar which gives us developers headaches. 
Personally i don't like to use calendars that are entirely programmed by other developers (since most times they don't work well or they behave in a different way than i would've wanted.)
IMO the best way to face this kind of requirements is using several modular javascript functions that work together. 
One of the most common functions in a regular calendar is the ability to add business days (the function is above this text). I found it here: http://javascript.about.com/library/blbusdayadd.htm