sábado, 7 de julio de 2012

Como trabajar con un proyecto Maven desde el SVN

Bueno, voy a explicar de manera muy simple como trabajar con un proyecto maven y el SVN.

En principio, se supone que tenemos que tener todos los plugins instalados en el eclipse(maven, subersion, etc)..

Entonces bueno se crea un poryecto maven desde 0, donde se empieza a trabajar, yo prefiero arrancar con un archtype clasico, tipo quick-start, o angluno web clasico, y depsues voy metiendo las dependencias en el POM.

Una vez que ya tenemos nuestro proyecto maven, lo subimos al SVN(Ej: google code) de forma normal y clasica.

El tema viene cuando depsues desde otra pc, u otro eclipse queremos bajar ese proyecto y que mantenga la faceta de un PROYECTO MAVEN.

Es muy simple, se baja el proyecto del SVN como cualquier proyecto comun y corriente(Java Project), y luego que ya lo tenemos importado en el workspace, hacemos boton derecho sobre el proyecto que queremos convertir a la faceta maven, y ponemos Import Existing Maven proyect from workspace, y automaticamente nos va a detectar el pom, y ahi le damos aceptar, y nos convierte el proyecto a un proyecto Maven.

Muy simple....

sábado, 26 de febrero de 2011

Como configurar el eclipse.ini para que tome el jdk para ser compatible con MAVEN

Estuve instalando maven 2, en mi eclipse helios, y bueno despues de descargar un par de paquetese instalar maven, y su plugin para eclipse m2eclipse quise probar todo y no me andaba.
Cuando entraba al eclipse y queria crear un proyecto con maven, me decia que tenia que decirle a eclipse donde se encontraba el jdk.
La configuracion de eclipse par que encuentre el JDK y asi poder usar maven es la siguiente:

Entro al directorio de eclipse, y configuro el archivo eclipse.ini que es donde estan todos los paramentros de configuracion de eclipse.
Una vez ahi debajo de esta opcion:

--launcher.XXMaxPermSize
256M

Coloco la siguiente opcion:

-vm


en mi caso seria asi:

-vm
C:\Program Files\Java\jdk1.6.0_21\bin

viernes, 13 de noviembre de 2009

Como levantar propiedades desde un archivo

Pongo una forma rapida y sencilla de poder levantar propiedades de un arhchivo y poder utilizarlas en una aplicaicon java:

Se crea el archivo de propieadades por ej:

prueba.properties:

#Este es un archivo de prueba para cagar propiedades en una aplicacion java

prop.nombre=luciano
prop.apellido=izquierdo
prop.edad=26



Y despues en una clase java se levantan tan siempre como hacer esto:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;


public class Main
{

/**
* @param args
*/
public static void main(String[] args)
{

Properties propiedades = new Properties();
try
{
propiedades.load(new FileInputStream(
"src/prueba.properties"));
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}


System.out.println(propiedades.getProperty("prop.nombre"));
System.out.println(propiedades.getProperty("prop.apellido"));
System.out.println(propiedades.getProperty("prop.edad"));
}

}

jueves, 15 de octubre de 2009

Como cambiar el EndPoint o EPR de AXIS2

Cuando se genera con axis2 un web services, de forma dinamica.. o sea que el WS te cree el WSDL en forma dinamica, el motor de Axis2 tiene un comportamiento, que a mi me trajo algunos problemas.

Es decir, Cuando por ejemplo queremos probar el WS con el cliente de eclipse, uno agarra y pone la direccion del ws.
Ej:

http://IP_PUBLICA/RoboCupWS/services/RoboCupService?wsdl

Luego de esto el cliente de WS nos trae todos los metodos que contiene ese WS y hasta aca todo muy lindo, el problema es que el motor de axis2 genera automaticamente el WSDL y como ENDPOINT pone la ip LOCAL DE LA MAQUINA...
Con lo cual cuando queremos pedir un metodo al ws, se lo estariamos pidiendo a la ip local de esa maquina, la cual para nosotros no existe.... nosotros queriamos que le pida el metodo a la IP PUBLICA.

Bueno la forma de arreglar este problemita es configurando el ENDPOINT en el axis2.

Para hacer esto hacemos lo siguiente:

- Dentro del proyecto del WS , nos vamos a la carpeta WebContent/WEB-INF/conf

Y dentro de esta carpeta vamos a encontrar el archivo de configuracion de axis2, que se llama axis2.xml.

Dentro de este archivo vamos a buscar esto:





y como podemos ver ahi, configurando esto vamos a cambiar el ENDPOINT del ws.

ej:



200.175.45.1-->

o

fenderstratocaster.com-->


De esta manera ya tenmos configrado el ENDPOINT del ws, y no vamos a tenr ningun problema.

IMPORTANTE:

Tener en cuenta que haciendo esto, estamos harcodeando el ENDPI¿OINT, por lo cual esto ya no va a ser dinamico, y si el dia de mañana sacamos el WS de ese server y lo migramos a otro server, vamos a tener que cambiar el dns o ip del ENDPOINT para ese nuevo server.

miércoles, 2 de septiembre de 2009

Como acceder al ServeltContext de un Servicio Web Axis2

Trabajando con Axis2 neceistaba tener un Servelet por afuera del Servicio, que sea un servidorcito UDP, y que parsee una trama UDP, que me llegaba todo el tiempo a ese servlet.

Entonces necesitaba parsear los datos UDP, y poder mandarlos atravez del WS.

Para eso iba a neceistar que mi servicio WS, pudiera agarrar esos datos parseados del Servlet. El metodo de comunicacion entre ese Servlet y mi Servicio del WS de axis2 iba a tener que ser el Contexto de la aplicacion, osea el ServletContext, entonces me puse a buscar la manera de poder acceder desde el servicio de axis2 al servletcontes de la aplicacion, y lo pude hacer gracias a esta data:


If you are using Axis2 Web Archive (WAR) distribution, then you can easily get these information from the messagecontext.

Accessing Remote IP address from the message context: You can get the remote IP address of the client corresponding to the current message as follows:

String remoteAddress = (String)msgCtx.getProperty("REMOTE_ADDR");


----

Accessing ServletContext from the message context: You can obtain the ServletContext
from message context as follows:

ServletContext servletContext = (ServletContext)MessageContext.getProperty
("transport.http.servletContext");

ServletContext servletContext = (ServletContext)MessageContext.getCurrentMessageContext().getProperty("transport.http.servletContext");


----

Accessing HttpServletRequest from the message context: You can obtain the
HttpServletRequest from message context as follows:

HttpServletRequest httpServletRequest = (HttpServletRequest)MessageContext.getProperty
("transport.http.servletRequest");


Esta ultima es la que utilice para acceder al contexto.







lunes, 27 de julio de 2009

Aca voy a poner varios ejemplos de como recorrer vectores, arrays, o colecciones de datos como list, etc etc.....

Como recorrer un HashTable:

Hashtable a = getHashTable();

Enumeration e = a.keys();
Object obj;
while (e.hasMoreElements()) {
obj = e.nextElement();
System.out.println("clave "+ obj +": " + a.get(obj));
}


------------------------------------------------------------------------------------------

Como recorrer un MAP:


Map hm = new HashMap();
hm.put("1","Luis");
hm.put("2","Amaya");
hm.put("3","Julio");
Iterator it = hm.entrySet().iterator();
while (it.hasNext()) {
Map.Entry e = (Map.Entry)it.next();
System.out.println(e.getKey() + " " + e.getValue());

Como leer del puerto serie

Trabajando con J2ME tras un modem java de siemens, tenemos que leer por el puerto seria la inforamcion que nos mandaba un instrumento electrico, esta fue la manera que encontramos para poder leer efectivamente del puerto serie:

sbResult=new StringBuffer();

comando = desp.getNextCommand();

out.write(comando.getQuery("31").getBytes());
out.flush();

int inputChar;

do
{
inputChar= is.read();
if (inputChar!=-1)
sbResult.append((char) inputChar);
//miLog.INFO("de a uno:" + inputChar);
if(inputChar==3)
break;
}while (is.available()>0);

miLog.INFO( serviceName + " RESPUESTA : " + sbResult.toString());


Este metodo no me funciono del todo bien , ya que aveces se me corrian las lecturas, es por eso que haciendo pruebas lo cambie por el siguiente codigo.

do
{
inputChar= is.read();
if (inputChar!=-1)
sbResult.append((char) inputChar);
if(inputChar==3)
break;
// }while (is.available()>0);
}while (true);

miLog.INFO( serviceName + " RESPUESTA : " + sbResult.toString());


Despues de varias pruebas, tampoco pudimos hacer andar esta forma, finalmente encontramos esta forma que realmente no es muy linda, pero bueno ya estamos muy jugados con el tiempo, se probo y anda asi que asi quedo:



do
{

do
{
inputChar= is.read();
if (inputChar!=-1)
sbResult.append((char) inputChar);
if(inputChar==3)
break;
}while (is.available()>0);
if(inputChar==3)
break;
}while (true);

miLog.INFO( serviceName + " RESPUESTA DUCATI: " + sbResult.toString());