jboss logo

El servidor de apliaciones JBoss tiene un modo sencillo para ejecutar tus aplicaciones, standalone. Para implementar/instalar tu aplicación simplemente copia la carpeta o archivo war al directorio “jboss-home/standalone/deployments” y ejecuta el servidor mediante

cd {JBOSS_HOME}
./bin/standalone.sh

para detener el servidor solo necesitas presionar CTRL+C.

Pero que pasa si necesitas que se siga ejecutando en el fondo, podemos utilizar nohup, disown o screen.

En este caso para detener el servidor necesitamos ejecutar el siguiente comando

{JBOSS_HOME}/bin/jboss-cli.sh --connect command=:shutdown

y finalmente para reiniciar el servidor podríamos crear un script de la siguiente manera

#!/bin/bash
#
# detener jboss as
{JBOSS_HOME}/bin/jboss-cli.sh --connect command=:shutdown
#
# Aquí podrías establecer algunas variables de ambiente para tu aplicación, p.ej.
# export DATABASE_URL="jdbc:oracle:thin:scott/tiger@localhost:1521:oratest"
# iniciar jboss en modo standalone
{JBOSS_HOME}/bin/standalone.sh

Fuentes:
https://community.jboss.org/thread/165815

Anuncios

Cuando tienes varios reportes, es buena idea crear una librería para reutilizar elementos en los reportes. Un ejemplo común es cuando necesitamos usar el mismo encabezado y pie de página para los reportes.

BIRT nos permite agregar algunos elementos dinámicos -tales como el número de páginas, la fecha e incluso un valor obtenido mediante código javascript en un DynamicText- El problema es que esto dependerá de cada reporte, así que ¿cómo agregamos elementos dinámicos desde una librería a nuestro reporte?

Pues habrá que crear una “master page” en la librería donde pongamos elementos “DynamicText” en el encabezado y que estos desplieguen el valor de un parámetro. Después podemos modificar el valor del parámetro en cada reporte, y así, tener un título personalizado pero manteniendo el formato.

Si además, queremos obtener el título mediante una consulta a la base de datos. Lo que tenemos que hacer es crear el DataSource a la base de datos y un DataSet con la consulta que obtiene el título, por ejemplo


SELECT DESCRIPCION
FROM OFICINAS
WHERE ID=:OFICINA

Luego, debemos poner el siguiente código en el evento “beforeFactory” de nuestro reporte


//public final static int MODE_GENERATION = 1; //This mode is for generate the report document. Typically used in Report Engine run task
//public final static int MODE_PRESENTATION = 2; //This mode is for present data that saved in report document, without further data manipulation operation. Typically used in report engine render task
//public final static int DIRECT_PRESENTATION = 3;//This mode is to execute the data query without create report document. It is used in report engine runAndRender task.
//public final static int MODE_UPDATE = 4; //This mode is used to update the existing report document with new queries. Typicially used in IV.
importPackage( Packages.org.eclipse.birt.report.model.api );
importPackage(Packages.java.lang);
importPackage(Packages.java.util);
importPackage(Packages.org.eclipse.birt.report.data.adapter.api);
importPackage(Packages.org.eclipse.birt.report.model.api);
importPackage(Packages.org.eclipse.birt.data.engine.api.querydefn);
var myconfig = reportContext.getReportRunnable().getReportEngine().getConfig();
var des = DataRequestSession.newSession(myconfig, new DataSessionContext(3));
var dsrc = reportContext.getDesignHandle().findDataSource("dsrcOficina");
var dset = reportContext.getDesignHandle().findDataSet("dsetOficina");
des.defineDataSource(des.getModelAdaptor().adaptDataSource(dsrc));
des.defineDataSet(des.getModelAdaptor().adaptDataSet(dset));
var paramBinding = new InputParameterBinding("param_1", new ScriptExpression("\""+ params['IDOFICINA'].value +"\"") );
queryDefinition = new QueryDefinition( );
queryDefinition.setDataSetName( "dsetOficina" );
queryDefinition.addInputParamBinding( paramBinding );
queryDefinition.setAutoBinding(true);
var pq = des.prepare( queryDefinition );
var qr = pq.execute( null );
var ri = qr.getResultIterator( );
if ( ri.next( ) )
{
params["Titulo"].value = ri.getString("DESCRIPCION");
}
ri.close( );
qr.close( );
des.shutdown( );

Es importante poner los nombres exactamente igual que en el diseñador.
En nuestro caso, el parámetro “IDOFICINA” es de tipo String, así que lo ingresamos de la siguiente manera


var paramBinding = new InputParameterBinding( "param_1",new ScriptExpression("\""+ params['IDOFICINA'].value +"\"") );

si fuera un Integer tendría que ser de la siguiente manera


var paramBinding = new InputParameterBinding( "param_1",new ScriptExpression(params['IDOFICINA'].value) );

El valor de ScriptExpression debe ser un bloque de javascript válido, cómo si lo ingresaramos en la ventana “ExpressionBuilder” 🙂

Fuentes:
eclipse forums
birt exchange

jQuery – desde un CDN o desde el servidor

En el enlace de abajo se hace un análisis sobre si cargar jQuery desde un CDN (como el de Google)

<script src=”//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js”></script>

o desde el servidor

<script src=”/path/to/jquery/1.8.2/jquery.min.js”></script>

Algo que no se menciona es que estamos confiando en que el archivo del CDN no contiene otro código además del de jQuery, seguramente Google guarda información acerca de los sitios que cargan la librería desde sus servidores. En fin, creo que estoy siendo un poco paranoico, de cualquier forma Google sigue la filosofía de “Don’t be evil” 🙂

via Cargar jQuery desde un CDN o desde servidor | EtnasSoft.

En OpenSUSE, para suspender o hibernar tu computadora, tienes que dar clic en “Shutdown” y luego seleccionar la acción que deseas. Yo buscaba algo más rapido 😉
Para crear un script para suspender tu computadora, crea el archivo suspend.sh, p. ej.
gnomesu gedit /usr/share/local/suspend.sh
y coloca el siguiente texto en él

#!/bin/bash
#Script to suspend computer

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
 /org/freedesktop/Hal/devices/computer \
 org.freedesktop.Hal.Device.SystemPowerManagement.Suspend \
 int32:0

Para crear un script para hibernar tu computadora, crea el archivo hibernate.sh, p. ej.
gnomesu gedit /usr/share/local/hibernate.sh
y coloca el siguiente texto en él

#!/bin/bash
#Script to hibernate computer

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
/org/freedesktop/Hal/devices/computer \
org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate

Finalmente puedes crear accesos directos, que podrás agregar a tus favoritos, generando los archivos
/usr/share/applications/suspend.desktop

[Desktop Entry]
X-SuSE-translate=true
Name=Suspend
GenericName=Suspend
Comment=Suspend computer
Exec=suspend.sh
Icon=suspend.svg
Terminal=false
Type=Application
Categories=Utility;
Version=1.0

y /usr/share/applications/hibernate.desktop

[Desktop Entry]
X-SuSE-translate=true
Name=Hibernate
GenericName=Hibernate
Comment=Hibernate computer
Exec=hibernate.sh
Icon=hibernate.svg
Terminal=false
Type=Application
Categories=Utility;
Version=1.0

las imágenes las puedes descargar de aquí y las tienes que colocar en /usr/share/icons/hicolor/scalable con el nombre correspondiente.

Fuentes:
https://bbs.archlinux.org/viewtopic.php?pid=551909
https://cirovladimir.wordpress.com/2011/05/04/opensuse-11-4-run-gedit-as-administrator/
http://www.manucornet.net/GNOME/logout_dialog/

Casi siempre ejecuto las mismas aplicaciones después de iniciar mi computadora. Pues para no estar dando clic en cada ícono, lo que hice fue crear un script y añadir un “lanzador de aplicaciones” -que lo ejecute, en mi barra de programas-. El problema fue, cómo hacer para que al iniciar VirtualBox arrancará la máquina virtual. Pues la solución la encontré en el manual. Simplemente crea un archivo de texto con la extensión “.sh” y agrega lo siguiente:

#!/bin/sh
firefox &
gnome-terminal &
pidgin &
VBoxManage startvm EL_NOMBRE_DE_TU_MAQUINA_VIRTUAL &

Luego crea el lanzador de aplicaciones y pon el siguiente comando -recuerda poner el nombre de tu script-

sh /home/cirovladimir/myApps.sh

Listo! Cuando des clic en el lanzador te abrirá Firefox, una terminal de comandos, el cliente de mensajería Pidgin y -por supuesto- iniciará tu máquina virtual.


Tengo un encabezado estándar que uso en la mayoría de reportes, el cual he compartido a través de una librería. El detalle es que el título para cada reporte es diferente, así que en la plantilla coloqué etiquetas cuyo valor depende del parámetro que se les pase. Es común también que el título contenga el período que comprende el reporte. El formato de fecha que comunmente utilizamos es “dd/MM/yyyy” p. ej. 14/06/2011. Para dar este formato a las fechas -que recibo como párametros- utilizo el siguiente código en el evento “initialize” del reporte:

importPackage(Packages.java.text);
sdf = new SimpleDateFormat(“dd/MM/yyyy”);
params[“Titulo”]=”Reporte del “+sdf.format(params[“FechaInicio”])+” al “+sdf.format(params[“FechaFin”]);

Fuentes:
Eclipse Forums

En Ant hay algunas cosas que no se pueden realizar con las tareas que incluye por default o de librerias de terceros, como ant4eclipse o antcontrib. Para esas tareas complejas (a veces, en realidad, sencillas) existe algo llamado scripting, el cual es una tarea que utilizamos mediante la etiqueta <script>. En esta tarea podemos utilizar muchos lenguajes de programacion, siempre y cuando instalemos las librerias necesarias, tales como: java, javascript o jruby. Aqui mostrare como instalar y utilizar un <script> de javascript que fue el que mas se me facilito.

Descarga el archivo rhino1_7R2.zip de esta pagina y descomprimelo. Abre el Eclipse y da clic en el menu “Window->Preferences”, luego busca la entrada “Ant->Runtime” y selecciona “Global Entries”. Da clic en “Add External JARS…” y selecciona el archivo js.jar del archivo que descomprimiste. Con esto ya tenemos el soporte en Ant para correr scripts de javascript, ahora vamos a ver como utilizarlo con un ejemplo sencillo.

<?xml version="1.0" encoding="UTF-8"?>
<project name="test-javascript" default="run" basedir="." >

	<target name="run">
		<script language="javascript">
		  <![CDATA[
			importPackage(java.lang, java.util, java.io);
			System.out.println("Hello from javascript!");
		  ]]>
		  </script> 
	</target>
</project>