Mostrando las entradas con la etiqueta development. Mostrar todas las entradas
Mostrando las entradas con la etiqueta development. Mostrar todas las entradas

jueves, abril 15, 2010

JBOSS Solaris

Hola Tod@s

Después de tener un problema instalando JBOSS en un maquina Solaris Sparc, la cual ocurría por 3 razones principalmente :

* Asignación de Memoria a JVM por parte del SO
* Asignación del Garbage Collector para SO
* Capa 8 .. XD

En si estos es mas una ayuda de memoria. El problema que ocurria era que al subir el servicio la JVM me arrojaba el siguiente problema :

Error occurred during initialization of VM Could not reserve enough space for object heap

Para solucionar este problema hay que hacer lo siguiente en el SO para asignar memoria al proceso :

#ulimit -S -v [mem que se necesita]

Para probar solo se puede corre lo siguiente :

#java -Xmx[mem]-version

Si no da error ya esta corregido el problema, si sigue dando problemas solo hay que asignar mas memoria con el comando ulimit.

Luego me daba el siguiente error :

# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00002b44b1da83ac, pid=2705, tid=1081280832
#
# JRE version: 6.0_18-b05
# Java VM: Java HotSpot(TM) 64-Bit Server VM (16.0-b12 mixed mode linux-amd64 )
# Problematic frame:
# V [libjvm.so+0x6223ac]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#

Este error ocurre por que para Solaris hay que asignarle otro garbage collector para que suba JVM, este problema se corrige asignando el siguiente parámetro al subir el servicio :

-XX:+UseSerialGC

Después de hacer esto el servicio subió sin problemas en el Servidor Solaris Sparc.

Si al hacer esto aun no funciona se puede hacer lo siguiente :

$ ulimit -Sa
$ ulimit -Ha

O ya lo ultimo es, en el archivo /etc/system se debe agregar lo siguiente :

set msgsys:msginfo_msgtql=1048576
set msgsys:msginfo_msgmni=256
set msgsys:msginfo_msgmax=8196
set msgsys:msginfo_msgmnb=8388608
set msgsys:msginfo_msgssz=2048
set msgsys:msginfo_msgseg=2048

Esto ultimo requiere reboot de la maquina.

Eso espero que a alguien mas le sirva esto.

jueves, junio 26, 2008

Eclipse 3.4 GANYMEDE


Hello

Para los Desarrolladores, hoy se libero la versión final de IDE para desarrollo JAVA, eclipse 3.4 o GANYMEDE, como se denomina la versión. Si lo quieres descargar aqui esta el link.

suerte

sábado, mayo 17, 2008

Maven development (Segunda Parte)

Hello

Bueno continuando con la primera parte de maven...ahora vamos a crear un proyecto, asociarlo a nuestro IDE favorito y agregar dependencia a nuestro proyecto, además de interactuar entre dos proyectos nuestros y crear test para estos.

Para empezar, creemos dos proyectos, uno sera una librería matemática (suma, resta...) y el otro sera el que ejecutara los proceso, algo simple pero sirve para entender a lo que voy.
$ mvn archetype:create -DgroupId=org.test.app -DartifactId=math-core
$ mvn archetype:create -DgroupId=org.test.app -DartifactId=math-logic
después de ejecutar estos comando se crearon dos proyectos , con la estructura que les mencione en el cap anterior.

Ahora en mi caso, en estos momento uso eclipse , pero igual me gusta netBeans, pero por costumbre me quedo con el primero. Asi creare los proyectos como eclipse.

Primero voy a las carpetas de los proyectos (math-core y math-logic) y ejecuto el siguiente comando , en los dos directorios :
math-core $ mvn eclipse:eclipse
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

math-logic $ mvn eclipse:eclipse
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------

Después de hacer esto solo abrimos el eclipse y importamos estos dos proyectos , luego, borramos las librerías que genero en las propiedades de los proyectos y agregamos la libreria "MAVEN Manager Dependency". Si no esta la variable es por que no tienes el plugins de maven para eclipse, en ese caso instala esto. Después botón derecho sobre el proyecto y vas a la opción maven la habilitas.

Si prefieres netbeans cambia en el comando eclipse por netbeans y listo.

Continuando, ahora sobre el proyecto math-core trabajaremos primero, le agregaremos la librería "log4j", para manejar un log de los procesos.

Para hacer esto, botón derecho/Maven/Add Dependency, luego en esa ventana ponemos el nombre de la librería , la seleccionamos y listo, ya esta agregada.

Para verificar que se agrego la dependency, mirar el archivo pom.xml y en la parte de dependencias se debe haber agregado lo siguiente o algo parecido.

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.9</version>
</dependency>



Después de esto creen una classe que contenga methodos, uno que sume, reste y multiplique, estos methodo que retornen el resultado y se pasen loa valores .

Ej:
(...)
public Integer suma(Integer x, Integer y) {
return x + y;
}

public Integer resta(Integer x, Integer y) {
return x - y;
}

public Integer mul(Integer x, Integer y) {
return x * y;
}

public Integer div(Integer x, Integer y) {
return x / y;
}
(...)


después de esto creamos los test para probar estos methodos. Dentro de la carpeta "src/test/java", Creamos una classe que llame a estas.

Ej :

package org.test.app;

import junit.framework.TestCase;

public class CalculatorTest extends TestCase {

private Calculator _cal;

private Integer x = 19;

private Integer y = 40;

public CalculatorTest() {
_cal = new Calculator();
}

public void testSuma() {
System.out.println("Suma : " + _cal.suma(x, y));
}

public void testResta() {
System.out.println("Resta : " + _cal.resta(x, y));
}

public void testMul() {
System.out.println("Mul : " + _cal.mul(x, y));
}

public void testDiv() {
System.out.println("Div : " + _cal.div(x, y));
}

}


Ejecutamos el test con el siguiente comando :

math-core $ mvn clean test

y la salida debiera ser algo así :
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.test.app.CalculatorTest
Suma : 59
Resta : -21
Mul : 760
Div : 0
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.304 sec

Results :

Tests run: 4, Failures: 0, Errors: 0, Skipped: 0


Ahora dentro de la classe que suma agregamos los methodos de las librerías para saber que hace el methodo al ser llamado, y esto lo hacemos usando la dependencia que le agregamos.

Como ya finalizamos. procedemos a instalar nuestra librería , para que esta pueda ser usada por otros proyectos , esto lo hacemos de la siguiente forma :

math-core $ mvn clean install


Al hacer esto, maven compila, corre nuestros test y instala el JAR del proyecto en nuestro repositorio local.

Como ya terminamos la librería que calcula, ahora trabajamos con el proyecto que la referencia "math-logic"

En este proyecto, agregamos la dependencia llamada "math-core", y con esto aparecerá dentro dentro de nuestro pom.xml lo siguiente :

<dependency>
<groupId>org.test.app</groupId>
<artifactId>math-corej</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
y con esto ya podemos utilizar la librería dentro de este proyecto.Asi que creamos una classe que se le entregen dos parametros y que llame a los methodo de la libreria .

Ej :
package org.test.app;

public class Main {

/**
* @param args
*/
public static void main(String[] args) {
Integer x = new Integer(args[0]);
Integer y = new Integer(args[1]);

Calculator cal = new Calculator();
cal.suma(x, y);
cal.resta(x, y);
cal.mul(x, y);
cal.div(x, y);
}

}
Ahora, piensen que este ultimo proyecto puede ser un proyecto WEB o GUI y por medio de una interface le entreguen los parámetros a otra librería.

y con esto esta listo, creamos un test y llamamos desde acá a las methodos de calculo

bueno, con esto termine el pequeño manual de Maven.

Suerte...

miércoles, mayo 07, 2008

Maven development (Primera Parte)


En estos pequeños how to no voy a habla ni de historia ni voy a entrar tan a fondo, eso se los dejo a ustedes, Yo voy crear un proyecto usando MAVEN. y si tienen dudas me consultan o googlean...;-)

Pero que puedo hacer con maven, bueno todo esto :

* Builds
* Documentacion
* Reporting
* Dependencies
* SCMs
* Releases
* Distribucion

En si el uso de maven es simple, uno maneja las dependencias del proyecto, las versiones de este, en un archivo centralizado. este archivo se llama pom.xml y debe quedar en el / del proyecto.

Maven maneja una estructura de directorio que es de la siguiente forma :
/pom.xml
/src
..../main
......../java
..............(package)
......../resources
................../META-INF
..................(properties)
......../webapp
................./WEB-INF
................(pagina web)
..../test
........./java
........./resources
La cantidad de carpetas va depender del tipo de proyecto que creen, maven soporta creación de : JAR, WAR, EJB, EAR.

Instalar :

Primero, para usar maven se debe descargar y luego descomprimir donde a uno mejor le acomode ($MAVEN_HOME). Después de descomprimir se debe setear al PATH la carpeta $MAVEN_HOME/bin, además de setear como variable de ambiente el JAVA_HOME, después de hacer esto solo basta ejecutar lo siguiente y les debiera salir algo parecido.
iflores@slacker ~ $ mvn -version
Maven version: 2.0.8
Java version: 1.6.0_06
OS name: "linux" version: "2.6.24-16-generic" arch: "i386" Family: "unix"
Si les salio esto, maven ya esta listo para usarse en su ambiente de desarrollo.

Mi primer proyecto maven :

Para crear un proyecto maven existen varias tipos de creación dependiendo de la archetype (arquitectura), la creación básica es de la siguiente forma :
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
En este caso nuestra aplicación seria un JAR, nuestros proyecto se llamaría "my-app" y nuestra ubicación en repositorio seria "com.mycompany.app".

Creemos nuestro primer proyecto, el cual se llamara "mavenTest" y su ubicación sera "org.maven.app", así que ejecutamos el siguiente comando para crear el proyecto

iflores@slacker workspace $ mvn archetype:create -DgroupId=org.maven.app -DartifactId=mavenTest
....
[INFO] BUILD SUCCESSFUL
...


Luego si vemos la ubicación donde ejecutamos el proyecto se creo una carpeta llamada "mavenTest",dentro de esta nos creo lo siguiente.

mavenTest
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- org
| `-- maven
| `-- app
| `-- App.java
`-- test
`-- java
`-- org
`-- maven
`-- app
`-- AppTest.java


Ahora si vemos el archivo pom.xml, este quedo de la siguiente forma :

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.maven.app</groupId>
<artifactId>mavenTest</artifactId>

<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Maven Quick Start Archetype</name>
<url>http://maven.apache.org</url>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>

<scope>test</scope>
</dependency>
</dependencies>
</project>



Si miramos mas a fondo el POM, en este archivo se definió el groupId y artifactId, que definimos en la creación, además de la versión que por defecto es 1.0-SNAPSHOT, además del tipo de packaging, que en este caso es JAR. Estos parámetros si uno los desea los puede cambiar, al igual que la versión. cada ves que uno hace un install del proyecto este se instala en el repositorio local que genera el MAVEN en ~/.m2 y ahí queda nuestro JAR, WAR o EAR creado, con la versión que le generamos, si cambiamos la versión se instala una nueva con la nueva versión y se conserva la anterior en el repositorio. Para una completa referencia del POM ver esto

Ahora ya con la estructura creada ya puedo empezar a desarrollar dentro de los directorios creados dejando en :
src/main/java : Las classes java
src/main/resources : Los properties o archivos de configuración para el JAR
src/test/java : Los test para las classes JAVA


Después de haber creado unas classes probemos el build del maven, para empaquetar el proyecto solo ejecutamos el siguiente comando :

mvn package


y el comando debiera terminar de la siguiente forma :

...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11 seconds
[INFO] Finished at: Thu May 08 22:53:09 CLT 2008
[INFO] Final Memory: 5M/17M
[INFO] ------------------------------------------------------------------------


Y maven nos crea una carpeta llamada "target" en el proyecto y dentro de esta nos deja el JAR, que fácil !!!!.

que otros comando puedo ejecuta con maven, bueno acá hay algunos mas :

1. validate
2. generate-sources
3. process-sources
4. generate-resources
5. process-resources
6. compile

Para mas información sobre el build de maven ver esto.

Bueno con esto concluyo la primera parte de este howto, en la segunda parte hablare sobre las dependencias, test, integración con IDES.

Suerte

Mas info :

* Maven Getting Started Guide.
* Maven in 5 Minutes.

Maven2 + ejb3 + Struts2 + velocity

Hello

Bueno estos días he estado pensando en mi blog y analizando el flujo de gente que lo ve, y es mas de la que me esperaba (30 visitas diarias), Así que decidí volverlo un poco mas practico, con lo cual voy a espesar a publicar pequeños tutoriales , primeramente voy a empezar con lo siguiente :

* Maven2 : Crear un proyecto y manejar sus dependencias
* Ejb3 : Crear un pequeño modelo de datos con ejb3
* Struts2 : Un pequeño proyecto jee con struts2 usando lo anterior.
* Velocity : Crear pagina con velocity, macros

Bueno esto es para empezar y ver si la gente pika y hace consultas para ir viendo otras cosas mas, me voy a centrar primera mente en tópicos de desarrollo ya que es lo que hago mas a menudo, luego iré viendo que otros tópicos tomo, y si me hacen comentarios sobre otros temas realizare unos pequeños tutoriales, así que esperen que los realizare en este mismo orden.

suerte...