Seleccionar página

Crear un cliente java de Web Services para Exchange 2007

por | Abr 27, 2008 | Java

Para crear el cliente he usado el IDE eclipse-Red Hat Developer Studio, pero el procedimiento será similar para cualquier IDE.
Supondremos que la dirección del servidor es «my.exchange.com».

El primer paso es bajarse del servidor exchange estos 3 archivos y guardarlos en local:
* https://my.exchange.com/ews/Services.wsdl
* https://my.exchange.com/ews/messages.xsd
* https://my.exchange.com/ews/types.xsd
Después hay que modificar el archivo «Services.wsdl» para añadir el servicio y su url.

Debes añadir al final del archivo (antes de cerrar la etiqueta <wsdl:definitions>) las siguientes lineas:

Ahora tendrás que modificar los archivos «types.xsd» y «messages.xsd» para que maneje correctamente los arrays, mapeandolos a colecciones.
Para cada tipo llamado «ArrayOf…» o «NonEmpyArrayOf…» tendrás que añadirle el atributo maxOccurs=»unbounded»
Ejemplo:

Si ya has generado el cliente y sin haber cambiado esto, las clases «ArrayOf…» y «NonEmpyArrayOf…» y generadas serán incapaces de manejar arrays.
Pero aún tiene solución. Deber añadir a cada clase un campo de tipo List (cualquier Collection vale), y en cada método setXXX añadir el objeto pasado como parámetro al array.
Por ejemplo, en la clase ArrayOfRealItemsType:

// declaras la lista:
private List&lt;ItemType&gt; items = new ArrayList&lt;ItemType&gt;();//sobreescribes los setters para añadir los parámetros a la lista:
public void setPostItem(com.microsoft.schemas.exchange.services._2006.types.PostItemType postItem) {
this.items.add(postItem);
this.postItem = postItem;
}public void setMessage(com.microsoft.schemas.exchange.services._2006.types.MessageType message) {
this.items.add(message);
this.message = message;
}

// etc..

Una vez que has generado el cliente verás que te da algunos fallos de compilación.
Esto es porque por algún motivo los constructores no se generan bien.
Tras arreglar los fallos podemos continuar.

La clase principal para realizar las llamadas al Web Service es ExchangeServiceBindingStub.
Creamos el objeto y le ponemos los parámetros de usuario, password y servidor.

ExchangeServiceBindingStub esb = (ExchangeServiceBindingStub) new ExchangeServicesLocator().getExchangeServicePort(new URL(locator.getExchangeServicePortAddress()));
esb.setUsername(«usuario»);
esb.setPassword(«password»);
esb._setProperty(javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY, «https://my.exchange.com/EWS/Exchange.asmx»);

Antes de continuar debes asegurarte que el servidor tiene activada la autenticación básica, si no te saldrá un error HTTP 402.2 «acceso denegado debido a la configuración del servidor»

Ahora solo queda invocar al método del Web Service que quieras y rellenar los parámetros requeridos.

Te puede interesar…

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *