Últimas noticias
Loading...

Últimos artículos

viernes, 5 de abril de 2013
Relacionar el Código INE con su Código Postal

Relacionar el Código INE con su Código Postal

Si has buscado un poco por internet, ya te habrás dado cuenta de que no es sencilla la tarea que se presenta en esta entrada del blog. 

Correos no facilita de manera gratuita su listado oficial de Códigos Postales (algo increíble, pero cierto), y las fuentes gratuitas (como CodigosPostales.com o GeoNames) incorporan su propia codificación de nombres de municipio que no coinciden exactamente con las del INE.


Por suerte, el INE proporciona una base de datos del Censo Electoral que podemos utilizar para obtener la información del código postal: el Callejero del Censo Electoral (ojo, que ocupa 45 MB aprox.)

En este artículo te damos una solución a este problema.


sábado, 3 de septiembre de 2011
Eliminar la vista de módulos de la página de entrada de Scarab

Eliminar la vista de módulos de la página de entrada de Scarab



Entre la infinidad de parámetros que nos proporciona Scarab, resulta a veces complicado encontrar el modo de modificar el comportamiento de alguna funcionalidad.

En este caso, trataba de buscar la forma que no me apareciesen los módulos dados de alta en la aplicación en la pantalla de bienvenida (y que fueran visibles para cualquier persona que accediese a la página).

Para ello basta con modificar la siguiente propiedad desde el apartado 'Configuración de la aplicación':

scarab.anonymous.enable => false

De esta forma tan sencilla, eliminamos de la 'home' de Scarab la lista de nuestros módulos.


lunes, 22 de septiembre de 2008
Algunos comandos útiles en Microsoft Windows

Algunos comandos útiles en Microsoft Windows

En ocasiones hay algunas aplicaciones de Windows que por un motivo u otro desaparecen y resulta complicado encontrarlas.

Para acceder a estas herramientas, se pueden ejecutar los siguientes comandos (Inicio - Ejecutar...):
  • Herramienta de restauración del sistema: %systemroot%\system32\restore\rstrui.exe
  • Hotplug (desconexión de dispositivos externos, usb...): %systemroot%\system32\Rundll32.exe shell32.dll,Control_RunDLL hotplug.dll
  • Microsoft Word: winword
  • Microsoft Excel: excel
  • Escritorio Remoto: mstsc

martes, 1 de julio de 2008
Importar certificados en Java

Importar certificados en Java

Cuando desarrollamos una aplicación en Java que va ha hacer uso de un recurso seguro (mediante un certificado), debemos asegurarnos que este certificado podrá ser validado por una entidad certificadora que reconozca Java. Debido a que Java es un lenguaje multi-plataforma, no utiliza la información de certificados alojada en el Sistema Operativo.







Por defecto, la máquina virtual de Java dispone de las Entidades Certificadoras (CA) más comunes, como Verisign o Thawte. Sin embargo, suele darse el caso, sobretodo en entornos de desarrollo, que necesitemos utilizar una Entidad Certificadora "de prueba". En este caso, debemos importar esta CA en el almacén de claves de la máquina virtual que estemos utilizando.


Importar Certificado en el almacén de certificados (keystore)


La máquina virtual de Java (JVM) cuenta con un almacén de claves (keystore) que incorpora las entidades más habituales y la posibilidad de agregar aquellas que nos sean necesarias. El keystore se encuentra en la ruta: JVM_PATH\lib\security\cacerts. Por ejemplo:


C:\Archivos de programa\Java\jre1.6.0_05\lib\security\cacerts
C:\Archivos de programa\Java\jdk1.5.0_15\jre\lib\security


Para añadir una nueva entidad certificadora a la JVM que estemos utilizando, debemos utilizar el comando keytool (JVM_PATH\bin\keytool):



keytool -import -keystore "C:\Archivos de
programa\Java\jre1.6.0_05\lib\security\cacerts" -file
c:\NuevaEntidadCertificadora.cer -alias CA_SwitchOffAndLetsGo -storepass
changeit



Puede observarse que el almacén de certificados contiene la contraseña por defecto 'changeit'. El nombre que especifiquemos en el alias, debe ser único en el keystore y servirá de referencia futura en el almacén. Podemos listar los certificados instalados utilizando la opción list del keytool:



keytool -list -keystore "C:\Archivos de
programa\Java\jre1.6.0_05\lib\security\cacerts" -storepass changeit



Importar Certificado utilizando el panel de control de Java (Windows)


Atención: con esta opción únicamente se añadirán los certificados a la instalación activa de la JVM en Windows.


Para añadir la nueva entidad, se accederá al Panel de Control de Windows, y se seleccionará la opción "Java". Seguidamente se marcará la pestaña "Seguridad" y se pulsará sobre el botón "Certificados".


En el apartado de Certificados, se seleccionará la opción "Importar" y se localizará el archivo que contiene el certificado (si el certificado tiene extensión .cer se tendrá que seleccionar la opción 'Todos los archivos'). El nuevo certificado aparecerá en la pestaña "Usuario".

martes, 10 de junio de 2008
Modificar un mensaje SOAP desde Java

Modificar un mensaje SOAP desde Java

El propósito del siguiente artículo, es explicar el modo en que se puede modificar un mensaje SOAP en una llamada a un Web Service desde NetBeans. Esto es muy útil en aquellos casos en que consumimos un WebService generado en otro lenguaje de programación, y no encontramos la forma de acceder a algún objeto que se encuentra dentro del mensaje.

Imaginemos que tenemos el siguiente mensaje SOAP para la llamada a un WebService:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<cabeceraSOAP xmlns="http://switchoffandletsgo.blogspot.com/">
<ipOrigen>string</ipOrigen>
</cabeceraSOAP>
</soap:Header>
<soap:Body>
<SumaNumeros xmlns="http://switchoffandletsgo.blogspot.com/">
<intNum1>int</intNum1>
<intNum2>int</intNum2>
</SumaNumeros >
</soap:Body>
</soap:Envelope>

Se puede observar que el WebService tiene un método SumaNumeros que recibe dos enteros y devolvería la suma de ambos. Además contiene una cabecera SOAP en la que se debe enviar la dirección IP de origen.

Al generar las clases necesarias para realizar la llamada utilizando el WSDL del WebService, NetBeans no es capaz de reconocer la cabecera del mensaje SOAP, con lo que no podemos establecer directamente la variable cabeceraSOAP. Por lo tanto, tendremos que agregar un Handler que intervenga antes de realizar la llamada, y añada al mensaje la cabecera que necesitemos.

Para ello creamos una nueva clase, por ejemplo SumaNumerosHandler y pedimos que implemente la clase SOAPHandler<SOAPMessageContext>:


public class SumaNumerosHandler implements SOAPHandler<SOAPMessageContext> {

}

Después le pedimos a NetBeans que realice los imports necesarios y que implemente los métodos abstractos, con lo que nos aparecerá la definición de los métodos que tenemos que implementar:


public Set<QName> getHeaders() {
throw new UnsupportedOperationException("Not supported yet.");
}


public boolean handleMessage(SOAPMessageContext arg0) {
throw new UnsupportedOperationException("Not supported yet.");
}


public boolean handleFault(SOAPMessageContext arg0) {
throw new UnsupportedOperationException("Not supported yet.");
}


public void close(MessageContext arg0) {
throw new UnsupportedOperationException("Not supported yet.");
}

En concreto vamos a centrarnos en el método handleMessage, que se ocupará de capturar la salida o entrada del mensaje SOAP. Para el resto de métodos que no nos ocupan, vamos a definir una serie de valores de retorno por defecto:


public Set<QName> getHeaders() {
return Collections.EMPTY_SET;
}


public boolean handleFault(SOAPMessageContext messageContext) {
return true;
}


public void close(MessageContext context) {
}

Método handleMessage

Como se puede observar, este método recibe un parámetro SOAPMessageContext. Esta interface da acceso al mensaje SOAP en cada petición o respuesta que se realiza en la comunicación, pudiendo modificar el contenido de este mensaje.

Para obtener el mensaje, llamamos al método getMessage():

SOAPMessage msg = messageContext.getMessage();

También necesitaremos conocer la dirección en la que viaja el mensaje, esto es, si se trata de un mensaje de salida o de entrada. En nuestro caso, necesitaremos modificar únicamente el mensaje de salida (petición). Podemos obtener esta información mediante el método get(), tal como se ilustra en el siguiente fragmento de código:

boolean bolMsgSalida= (Boolean) messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

Por último, para añadir la cabecera a nuestro mensaje de salida, vamos a hacer uso de una serie de objetos que nos permitirán editar y modificar el mensaje SOAP:

// Obtenemos el contenedor del mensaje SOAP
SOAPPart sp = msg.getSOAPPart();

// A partir del contendor, obtenemos el nodo "Envelope"
SOAPEnvelope env = sp.getEnvelope();

// Instanciamos un objeto SOAPFactory para crear cualquier elemento perteneciente a un mensaje SOAP, en nuestro caso, los nodos que formarán la cabecera
SOAPFactory soapFactory = SOAPFactory.newInstance();

// Definimos los elementos a incluir en el mensaje
SOAPElement soapElementoCabecera = soapFactory.createElement("cabeceraSOAP","","http://switchoffandletsgo.blogspot.com/");

SOAPElement soapIpOrigen= soapFactory.createElement("ipOrigen","", "http://switchoffandletsgo.blogspot.com/");

// Rellenamos la información del nodo ipOrigen
soapIpOrigen.addTextNode("192.168.0.1");

// Incluimos los elementos dentro de los objetos correspondientes
soapElementoCabecera.addChildElement(soapIpOrigen);

SOAPHeader soapHeader = env.addHeader(); // Crea un elemento cabecera SOAP

soapHeader.addChildElement(soapElementoCabecera);

Si no se ha producido ninguna excepción, el método devolverá true.

Este manejador de mensajes SOAP, debería generar el siguiente nodo dentro del mensaje que se enviará al servidor:

<soap:Header>
<cabeceraSOAP xmlns="
http://switchoffandletsgo.blogspot.com/">
<ipOrigen>1921.168.0.1</ipOrigen>
</cabeceraSOAP>
</soap:Header>
Finalmente, debemos asignar el nuevo manejador al Web Service que queremos consumir. Para ello, accederemos a la carpeta "Web Service References" de nuestro proyecto de NetBeans, y pulsaremos con el botón derecho sobre el Web Service que queremos asignar. En el menú desplegable aparecerá la opción "Configure Handlers...".


Únicamente tendremos que añadir "Add..." nuestra clase SumaNumerosHandler y aceptar.

A partir de este ejemplo, las opciones son infinitas, podemos modificar cualquier parte del mensaje SOAP, entrante o saliente, según sean nuestras necesidades. En todo caso, siempre que sea posible, la mejor opción reside en utilizar las clases y métodos que genera NetBeans a partir del WSDL del Web Service.

Main Post

Quick Message
Press Esc to close
Copyright © 2013 Apaga y vámonos All Right Reserved