Archive for the ‘Web’ Category

Configuración de HTTPS sobre JBoss

jueves, junio 30th, 2011

Para activar HTTPS sobre JBoss lo primero que se tiene que tener es un certificado válido. Independientemente de ello se puede crear un certificado no validable a través de una de las herramientas Java y establecerlo en una configuración de JBoss para probar las aplicaciones.

Crear certificado

Para crear el certificado se debe utilizar la herramienta keytool que viene con Java, que se encuentra ubicada en la carpeta bin de la instalación de Java.
La creación del certificado se puede hacer de forma similar a este ejemplo

keytool -genkey -keystore server.keystore -storepass rmi+ssl -keypass rmi+ssl -keyalg RSA -alias serverarocl -validity 3650 -dname "cn=server,ou=admin,dc=aro,dc=cl"

con esto se generará un archivo server.keystore

Configuración de HTTPS en JBoss

Con el archivo generado se debe mover a la carpeta del servidor JBOSS_HOME/server/default/conf por ejemplo y luego configurar el server.xml añadiendo

   
      	

Luego de reiniciar la configuración ya estará aplicada, pero el certificado no es validable, por lo que al primer acceso, con firefox por ejemplo, te solicitará añadir la excepción del sitio

Luego confirmarás excepción de seguridad

Y ya podrás acceder al sitio.
Para tener un certificado válido este debe ser comprado a algún proveedor valido de esta tipo de certificado.

Preparando un datasource para JBoss

martes, mayo 24th, 2011

En JBoss para poder activar un datasource se debe crear un archivo *-ds.xml, dentro del cual se pondra segun la siguiente estructura la definicion (un ejemplo de oracle-ds.xml)

  
  
    jdbc/algoaqui
    jdbc:oracle:thin:@localhost:1521:orcl
    oracle.jdbc.driver.OracleDriver
    usuario
    password
	10
	40
	10
	30000
	32
    org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
      
         Oracle9i
      
  
  

jndi-name : Es el nombre que se le dará al JNDI y con el cual se podrá en el codigo crear el Datasource.
connection-url :Apunta a la conexión, segun el estandar de jdbc.
driver-class :Es la clase del datasource que se va a instanciar. Debieses dejar la librería de conexion en la carpeta %JBOSS_HOME%\server\%TIPO_SERVER%\lib
user-name : Es el nombre de usuario de la conexión
password : Es la password de la conexión
min-pool-size : Es la cantidad mínima de conexiones que se lanza al inicio.
max-pool-size : Es el máximo de conexiones que soportará el datasource pool.
idle-timeout-minutes : Es la cantidad de minutos que obligatoriamente esta abierta una conexión, si se supera este tiempo en una conexión que no posee actividad, entonces se cerrará la conexión.
blocking-timeout-millis : Es la cantidad de tiempo que se espera para tomar una conexión, si la conexión no es entregada en este tiempo se enviará una Exception.
prepared-statement-cache-size : Es un cache para los PreparedStatement más utilizados, de forma de tener preparadas las consultas que se envían cachadas.

Ejemplos de uso de ADT para compilar AIR para Android

sábado, abril 16th, 2011

Luego de crear una aplicacion para AIR a para Android, existieron una serie de pasos que tuve que hacer para la instalación de la aplicación en el amulador del dispositivo, estos fueron:

Instalar el Runtime

adt -installRuntime -platform android -platformsdk path\android-sdk-windows -package path\Runtime.apk

Compilar la aplicacion cuando ya se tiene el SWF que se compila con flex

adt -package -target apk -storetype pkcs12 -keystore myKeystore.p12 aplicacion.apk aplicacion-app.xml aplicacion.swf

Instalar la aplicación a través de la línea de comando, esto presume que el Device está siendo ejecutado

adt -installApp -platform android -platformsdk path\android-sdk-windows -package aplicacion.apk

Llamar a un Webservices Statefull de .Net desde Java con Metro

miércoles, marzo 23rd, 2011

Me ha tocado llamar a un Webservices .Net pero que contenía una situación muy particular, debía inicialmente llamar a un método inicializador, que preparaba al Webservices para poder llamar a los otros métodos que éste contenía.

Con Netbeans generamos el proxy para el webservices a través de las librerías de Metro, pero luego, al intentar llamar al primer método y luego al segundo, se generaba un error debido a que el webservices reclamaba porque no se había llamado al método inicializador, aun cuando las dos lineas estaban puestas consecutivamente en el código. Esto porque era un Webservices Satatefull, o sea, que debíamos conservar el estado de las llamadas consecutivas para poder ser utilizadas.

De esta forma el siguiente ejemplo muestra como llamar a uno de este tipo de Webservices, se presume que aqui existe un proxy a Objeto que tiene dos métodos llamados metodoInicializador y segundoMetodo:

public class Main {
    public static void main(String[] args) {
         try {
            QName sName = new QName("https://algunNamespace.cl", "Objeto");
            Objeto objeto= new Objeto(new URL("https://algunServidor.cl/Objeto?wsdl"), sName);
            BindingProvider bp = ((BindingProvider) objeto.getWSHttpBindingIObjeto());
            bp.getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY,true);
            bp.getRequestContext().put(BindingProvider.SOAPACTION_USE_PROPERTY, new Boolean(true));
            ((IObjeto)bp).metodoInicializador("abcd");
            Data data =((IObjeto)bp).segundoMetodo("xxyyzz");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Statefull v/s Stateless

miércoles, marzo 23rd, 2011

En el medio de los EJB o webservices existen dos tipos de ellos que separan marcadamente la forma de como operar con ellos: Statefull y Stateless.

Estos dos tipos tienen que ver con la capacidad de guardar o no guardar el estado del EJB o Webservices. La diferencia implica el como se puede trabajar con ellos, por ejemplo si quisieramos sumar dos números y no podemos guardar el estado debiesemos hacer la operacion en una sola llamada:

suma(a,b)

En el caso que se pudiese guardar el estado de más llamadas a métodos consecutivas se podría hacer:

setA(numero)
setB(numero)
suma()

Con esto se entiende que se puede llamar a dos metodos y estos conservan la información de la instancia que se esta ocupando, luego de la primera llamada (establecer A) el EJB o Webservices conserva el estado y puede ser establecido B, para el StateFull (que conserva el estado) es válido, pero en el caso del Stateless luego de establecer A (setA) «olvida» que se estableció, por lo que luego al establecer B ya no recuerda que A fue establecido, ni menos al llamar a suma(), el Stateless no podría sumar ni A ni B porque no se acuerda que fueron establecidos. Por lo mismo para trabajar con Stateless hay que hacerlo a través de hacer todo en una sola operación como fue ejemplificado al principio: suma(A,B).

Instalar JBoss como servicio en Windows

jueves, noviembre 26th, 2009

Si eres de las personas que ya instalo JBoss en Windows y deseas instalar como servicio al este servidor de aplicaciones primero debes descargar una aplicacion desde aqui.

Dentro del comprimido existe una carpeta bin con los siguientes archivos (la imagen es para windows 64 bits, descarga la versión de 32bits si no posees un sistema operativo de 64)…

… toma los archivos de la carpeta /bin/ que trae el comprimido y copiala en %JBOSS_HOME%/bin/ luego ejecuta el service.bat

service install
Service JBoss Application Server 5.0 installed

Con esto podras iniciar el servidor JBoss desde la consola de servicios.

Importante

Como saben, la consola de servicios de Windows tiene tres botones, uno para inciar, detener y reiniciar, yo recomiendo evitar el boton reiniciar para este servicio, el reinicio puede provocar que el servicio se detenga en la consola pero no la ejecución del proceso Java que inicio el servicio, lo que no es detectado por el programa y entonces se inicia nuevamente el servicio pero los puertos (8080 por ejemplo) aun siguen tomados por el JBoss que aun no se ha detenido, por lo que el nuevo servicio que se inicia se inicia con error. No he investigado si es configuración del servicio o algun problema de mi configuración de windows, por lo que no puedo emitir alguna solución de este punto.