Archive for the ‘Java’ Category

Instalar Subclipse en Eclipse

miércoles, mayo 25th, 2011

Subclipse es una herramienta para trabajar con versionamiento de código fuente a través de Subversion (svn). Para instalar este plugin debes hacerlo igual que todos los plugin existentes para eclipse, pero por si no sabes como instalar un plugin aqui va la información.

Primero debes ir al menu Help > Install new software…

Luego aparecera una pantalla, en la cual debes presionar el boton Add…

Debes rellenar las casillas segun la información presentada aquí, pero puedes extraela desde https://subclipse.tigris.org

Luego de lo cual aparecerá la siguiente pantalla donde deberas seleccionar al menos los items aqui desplegados:

Te informará de lo que descargará…

Y te pedirá que aceptes la licencia luego de leerla(s)…

Y comenzará la instalación, que dependiendo de la velocidad de tu red, durará más o menos.

Finalmente te solicitará reiniciar Eclipse (no el computador) para aplicar los cambios.

Falla al crear virtual machine en Eclipse

miércoles, mayo 25th, 2011

Existe la posibilidad de que pase un error recurrente al ejecutar eclipse.exe, el mensaje sería más o menos así

Para evitar este error edita el archivo eclipse.ini, existen dos lineas ubicables

-Xms40m
-Xmx1024m

-Xmx1024m indica el tamaño máximo de la memoria que debe ubicarse para la ejecución de Java, por lo que si no inicia eclipse ese es el numero que debes disminuir, prueba con 756m, 512m, y como mínimo con 256m sólo para ver si parte. Un numero menor a eso, puede partir Eclipse, pero el trabajo se te tornará realmente lento.

Por otra parte, si es que ya te partió puedes echarle la culpa a la memoria, por lo que debes revisar dos cosas, ver si la memoria fisica esta mala (para ello utiliza alguna distriibución de linux que lo haga) o si instalaste hace poco algun programa que tipicamente instalan agentes o cosas similares, que te puedan quitar memoria en el inicio de tu computador.

Si no te inicia, puede ser otra cosa.

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.

VisualVM una herramienta para Java

martes, mayo 24th, 2011

Muchas veces has querido averiguar que es lo que está sucediendo dentro de la máquina virtual de Java, Java 6 ya viene con una herramienta para ello, pero también puede ser descargada desde https://visualvm.java.net/.

Al ejecutar la aplicación puedes verificar el funcionamiento de las aplicaciones Java que están en tu equipo (localhost) o remotamente. Aqui un ejemplo de la ejecución:

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