Tuesday, February 22, 2011

Leer un fichero dentro de un Bundle

Cuando se empaqueta un Bundle estes es publicado todo en un jar. Para poder leer, por ejemplo ficheros de congfiguracion dentro del jar hay que hacer lo siguiente:

configurationURI = FileLocator.toFileURL(
                    FileLocator.find(Activator.getBundleContext().getBundle(), new Path(
                            "./resources/config.properties"), null)).getPath();
A partir de esta ruta ya puedes abrir el fichero con un new File();

Además que no se te olvide marcar en en fichero build.porperties que publicas el fichero, ya que si no, no te lo incluye en el jar

Monday, February 14, 2011

Como saber la fecha de compilacion de una clase desde GlassFish

Cuando realizas pruebas te interesa saber si estas usando la última versión de tu código compilado. Sobre todo cuando pruebas en un servidor de aplicaciones. Debido a que no se si existe algún método que te lo de, he realizado un pequeño código a partir de lo que he leido por distintos foros.

     String classfilename =context.getRealPath("WEB-INF/classes/clasejava.class");

            File file = new File(classfilename);
            Long lastModified = file.lastModified();
            Date date = new Date(lastModified);
            context.log("Date compilated :" + date);


Mejoraría si no tuviera que parametrizarlo con el nombre de la clase para mejorarlo.

Thursday, February 3, 2011

Acceder al contexto del servlet desde una implemetacion de web service

¿Como desde una implemetacion de un Web service, puedo leer el contexto de un servlet?

La respuesta a esta pregunta, que a priori es muy sencilla, se vuelve un poco compleja. He estado buscando informacion por la red y he visto que la gente usaba Spring. Pero ¿para que? Así que, he seguido buscando y al final encontré una solucion para el estandar de J2EE 6 .

@webService
public class MiServicio{

@Resource
private WebServiceContext webServiceContext;
ServletContext  context;

public boolean damePath(){

if(webServiceContext != null){
            context=(ServletContext)webServiceContext.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
return  context.getContextPath();
 }

}

}

 Hay muchos comentarios que al acceder al contexto, devuelve Null.  Esto es debido a que cuando llamas a un WS el metodo, no es persistente. Es decir las variables son inicializadas. Así que cada metodo del WS debe aceder a la carga del contexto para que este valor no sea nulo.