Archive for the ‘JEE’ 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.

Conectar VisualVM a JBoss

martes, mayo 24th, 2011

Para ocupar VisualVM con JBoss se deben hacer modificaciones den el run.bat (la verdad es que la documentación expresa que los cambios se deben hacer en el run.conf, pero a mí no me funciono posicionarlo hay).

Se deben agregar las lineas

set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=6789
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.authenticate=false
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.ssl=false

Asumiendo que se ha modificado el run.bat de nuestro servicio en una ip 192.168.1.2, con las líneas anteriormente descritas se ha habilitado el puerto 6789 para conexion con VisualVM, luego de ello se adiciona el JMX Connector

Con lo cual ya tienes configurado para leer tu JBoss.

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.

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();
        }
    }
}

Crear un proxy con axis

lunes, julio 19th, 2010

El siguiente codigo presenta el establecimiento de las variables de entono y la llamada al proceso que genera un proxy en Java con las librerías de Axis.

SET AXIS_HOME=..\axis-1_4\lib
SET CLASSPATH=..\java5\lib;.;%AXIS_HOME%\activation.jar;%AXIS_HOME%\mail.jar;%AXIS_HOME%\axis.jar;%AXIS_HOME%\axis-ant.jar;%AXIS_HOME%\commons-discovery-0.2.jar;%AXIS_HOME%\commons-logging-1.0.4.jar;%AXIS_HOME%\jaxrpc.jar;%AXIS_HOME%\log4j-1.2.8.jar;%AXIS_HOME%\saaj.jar;%AXIS_HOME%\wsdl4j-1.5.1.jar;%CLASSPATH%
SET JAVA_HOME=..\java5
SET PATH=%PATH%;%JAVA_HOME%\bin\
java org.apache.axis.wsdl.WSDL2Java ruta_al_wsdl

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.