Archive for 2011

Instalar JBoss como servicio en Solaris

sábado, noviembre 26th, 2011

Existe en Solaris una forma de configurar un servicio a través de generar un script y crear un archivo XML para la configuracion del servicio.

Encontre en este sitio una explicación de los servicios y del comportamiento de los servicios. En el esta explicado como hacerlo para JBoss 5.x, pero en mi caso tuve que hacer modificaciones para JBoss 4.2.3.GA.

Primero crea un script llamado jboss

#!/sbin/sh

. /lib/svc/share/smf_include.sh

getproparg() {
	val=`svcprop -p ${1} ${SMF_FMRI}`
	[ -n "$val" ] && echo $val
}

if [ -z ${SMF_FMRI} ]; then
	echo "SMF framework variables are not initialized."
	exit ${SMF_EXIT_ERR}
fi

METHOD=${1}	# %m	(start/stop)
INSTANCE=${2}	# %i	(instance name)

# read other properties...
JBOSS_USER=root
JBOSS_HOME=/usr/local/jboss-4.2.3.GA
JBOSS_HOST=`getproparg instance/host`
JBOSS_PROFILE=${INSTANCE}
JBOSS_PARTITION=`getproparg instance/partition`
JBOSS_UDP_ADDRESS=`getproparg instance/udp_address`
JBOSS_UDP_PORT=`getproparg instance/udp_port`
JBOSS_PROP=`getproparg instance/properties`
JBOSS_EXTRA_OPTS=

if [ -z ${JBOSS_HOME} ]; then
	echo "jboss/home property not set"
	exit ${SMF_EXIT_ERR_CONFIG}
fi

if [ ! -z ${JBOSS_PARTITION} ]; then
	JBOSS_EXTRA_OPTS="${JBOSS_EXTRA_OPTS} -g ${JBOSS_PARTITION}"
fi

if [ ! -z ${JBOSS_UDP_ADDRESS} ]; then
	JBOSS_EXTRA_OPTS="${JBOSS_EXTRA_OPTS} -u ${JBOSS_UDP_ADDRESS}"
fi

if [ ! -z ${JBOSS_UDP_PORT} ]; then
	JBOSS_EXTRA_OPTS="${JBOSS_EXTRA_OPTS} -m ${JBOSS_UDP_PORT}"
fi

if [ ! -z ${JBOSS_PROP} ]; then
	JBOSS_EXTRA_OPTS="${JBOSS_EXTRA_OPTS} -D${JBOSS_PROP}"
fi

if [ ! -d ${JBOSS_HOME}/server/${JBOSS_PROFILE} ]; then
	echo "jboss/profile ${JBOSS_PROFILE} not found"
	exit ${SMF_EXIT_ERR_CONFIG}
fi

case "${METHOD}" in
'start')
	su ${JBOSS_USER} -c "${JBOSS_HOME}/bin/run.sh -c ${JBOSS_PROFILE} -b ${JBOSS_HOST}" ${JBOSS_EXTRA_OPTS} &
	;;

'stop')
	su ${JBOSS_USER} -c "${JBOSS_HOME}/bin/shutdown.sh -S"
	;;

*)
	echo "Usage: ${0} {start|stop}"
	exit 1
	;;
esac

exit ${SMF_EXIT_OK}

De esto lo más importante es el usuario y la ruta de JBoss, en general, como en casi cualquier sistema operativo es mejor crear un usuario para el servicio, en este caso jboss, aqui esta establecido el root directamente, lo que podría ser una falla de seguridad.

Este debe copiarse

cp jboss /lib/svc/method/
chmod +x /lib/svc/method/jboss

Luego debe crearse un XML para inciar el serivio, el del sitio original, yo lo modifique para JBoss-4.2.3.GA, las diferencias son que en la carpeta server las aplicacione son all, minimal y default, en cambio en JBoss 5.x son más.

El XML sería entonces






    

        
        
            
        

        
        
            
        


        

        

        
        
            
            
        

        
        
            
                
                
                
                
                
            
        
        
            
                
                
                
                
                
            
        
        
            
                
                
                
                
                
            
        

        

        

    


Luego de crearlo debes incorporarlo como servicio a través del siguiente comando

svccfg import jboss.xml

Para aplicar la configuracion de multicast debes cambiar las propiedades a través del siguiente comando

svccfg -s svc:/application/jboss:default setprop instance/host=0.0.0.0
svcadm refresh jboss:default

Luego de lo cual puedes aplicar el comando para inciar (y habilitar)

svcadm restart jboss:default

Para reiniciar

svcadm restart jboss:default

O para detener

svcadm restart jboss:default

Ejemplo de datepicker de jQuery UI

sábado, noviembre 19th, 2011

En el desarrollo de sistemas uno de los costos más importantes es trabajar con las fechas, en todo sentido, desde la interfaz hasta la base de datos. En el caso de la interfaz uno debe necesariamente proveerle al usuario un ordenamiento adecuado para que él no se equivoque en el ingreso de datos.

Es aquí donde una herramienta útil es jQuery UI, que dentro de uno de sus componentes tiene el datepicker, si descargas lo ejemplos encontrarás que son bastante útiles, pero en algunos casos, cuando tu quieres comenzar a hacer modificaciones es donde los problemas pasan. A mi personalmente me sucedieron dos cosas, la primera tiene que ver con los nombre, en las pantallas de los sistemas que trabajo existe siempre más de una fecha, por lo que debo crear más de una función pero ya el ejemplo original de datepicker no funciona ya que debo cambiar el nombre y asignarle otro id. De esta forma puedes tener dentro de una página la cantidad de datepicker que necesites.

Que nombre debes cambiar, esta imagen tiene realtado del nombre que debes cambiar:

ejemplo de datepicker

datepicker

Puedes descargar el codigo del ejemplo blog_jQuery_datepicker_20111119

Lo segundo que es útil mencionar es el CSS, cada una de las fuentes y medidas estan hechas con la unidad «em» dentro del CSS de jQuery esto significa que las medidas estan tomadas desde la última medida establecida de tamaño de la fuente, por lo que si tienes un tamaño 12, las fuentes utilizadas en el calendario se veran sólo un poco más pequeñas.

ORA-00439: función no activada: Online Index Build

lunes, noviembre 14th, 2011

Como ya escribí anteriormente, se puede hacer una reconstrucción de índices en línea en Oracle, pero puede aparecerte el siguiente error:

ORA-00439: función no activada: Online Index Build

Primero debes ver que tengas activada la funcionalidad con la siguiente consulta

select * from v$option

Esto debiese generarte una salida como la siguiente

PARAMETER                             VALUE                                                            
------------------------------------- ----- 
Partitioning                          TRUE
Objects                               TRUE
Real Application Clusters             FALSE
Advanced replication                  TRUE
Bit-mapped indexes                    TRUE
Connection multiplexing               TRUE
Connection pooling                    TRUE
Database queuing                      TRUE
Incremental backup and recovery       TRUE
Instead-of triggers                   TRUE
Parallel backup and recovery          TRUE
Parallel execution                    TRUE
Parallel load                         TRUE
Point-in-time tablespace recovery     TRUE
Fine-grained access control           TRUE
Proxy authentication/authorization    TRUE
Change Data Capture                   TRUE
Plan Stability                        TRUE
Online Index Build                    TRUE
Coalesce Index                        TRUE
Managed Standby                       TRUE
Materialized view rewrite             TRUE
Materialized view warehouse refresh   TRUE
Database resource manager             TRUE
Spatial                               TRUE
Visual Information Retrieval          TRUE
Export transportable tablespaces      TRUE
Transparent Application Failover      TRUE
Fast-Start Fault Recovery             TRUE
Sample Scan                           TRUE
Duplexed backups                      TRUE
Java                                  TRUE
OLAP Window Functions                 TRUE
Block Media Recovery                  TRUE
Fine-grained Auditing                 TRUE
Application Role                      TRUE
Enterprise User Security              TRUE
Oracle Data Guard                     TRUE
Oracle Label Security                 FALSE
OLAP                                  TRUE
Table compression                     TRUE
Join index                            TRUE
Trial Recovery                        TRUE
Data Mining                           TRUE
Online Redefinition                   TRUE
Streams Capture                       TRUE
File Mapping                          TRUE
Block Change Tracking                 TRUE
Flashback Table                       TRUE
Flashback Database                    TRUE
Data Mining Scoring Engine            FALSE
Transparent Data Encryption           TRUE
Backup Encryption                     TRUE
Unused Block Compression              TRUE

 54 filas seleccionadas 

Fijate en la linea Online Index Build debiese ser TRUE, si es false debes instalar por separado el producto o la version que tienes de oracle no soporta la funcionalidad (puede ser una versión standard, sin soporte de esta funcionalidad)

También puede dar en el caso que no se tenga permiso para ejecutar la funcionalidad, ya que si el usuario solo tiene privilegios de CONNECT no podrá realizar la tarea, por lo que se puede verificar el GRANT

GRANT ALTER ANY INDEX TO "USUARIO";

En donde «USUARIO» es el usuario que esta ejecutando la consulta, ahora si el usuario que estabas utilizando al darte este error era SYS o SYSTEM, entonces es necesariamente la primera causa.

Reconstrucción de índices en línea en Oracle

sábado, noviembre 12th, 2011

Una de las funcionalidades que comenzó en Oracle 9i es la de reconstruir índices «en línea», esto significa que mientras se procede a leer y recontruir la tabla de índices el original se mantiene intacto hasta el momento del término de la operación de reconstrucción.

Para proceder a la reconstrucción en línea debe escribirse

ALTER INDEX el_nombre_del_indice REBUILD ONLINE;

Demorará más para las tablas que son constantemente usadas, o que soy muy grandes, pero en general ningún usuario sentirá esta reconstrucción.

Bajar un archivo a traves de FTP por un bash en Linux

domingo, octubre 16th, 2011

Una tarea comun, por motivos diversos es el de descargar un archivo desde un servidor para poder operar con el desde otro servidor. En algunos casos estas tareas se automatizan a través de un cron, en otros se hace manualmente. Sea como fuere un script que me ha dado resultado es el siguiente:

#!/bin/bash
clear
USER="usuario"
PASS='clave'
FTPSERVER="ftp.servidor.xyz"

FILE1="nombre_del_archivo"

ftp -i -n $FTPSERVER <<EOF
user $USER $PASS
cd /carpeta_que_contiene_el_archivo
bin
get $FILE1
EOF
exit

Instalar Java de Sun(… perdón Oracle)

sábado, agosto 20th, 2011

Debes descargar el binario especifico de Java, en mi caso jdk-6u27-linux-x64-rpm.bin, cambia el permiso de ejecución y lo ejecutas

chmod 755 jdk-6u27-linux-x64-rpm.bin
./jdk-6u27-linux-x64-rpm.bin

Luego de instalado debes incluirlo como alternativa en la configuración si es que previamente lo tienes instalado.

alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_27/bin/java 2
alternatives --config java
Hay 3 programas que proporcionan 'java'.

  Selección    Comando
-----------------------------------------------
   1           /usr/lib/jvm/jre-1.5.0-gcj/bin/java
*  2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
 + 3           /usr/java/jdk1.6.0_27/bin/java

Presione Intro para mantener la selección actual[+], o escriba el número de la selección: 

Seleccionas el 3, y estas con java instalado. Para probarlo ejecutas

java -version
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)