Datos personales

Mi foto
Martin Hermosilla
Ingeniero Civil Informático de la Universidad Diego Portales.
Ver todo mi perfil

Twitter Updates

viernes 16 de abril de 2010

Technorati Claim Verification

99VA73XKQ82V

miércoles 12 de agosto de 2009

Juez de Texas prohibe la venta de Microsoft Word por violación de Patente

Un Juez del distrito este de Texas ha dictado sentencia sobre la demanda interpuesta por i4i Inc. contra Microsoft por violación de patente de su producto Microsoft Word. De acuerdo a la demanda, Microsoft Word usa XML en la lectura y escritura de archivos XML, DOCX y DOCM. La demanda se basa en la violación de la patente #5.787.449 de XML fechada en 1998. La resolución tendrá efecto dentro 60 días y establece que Microsoft debe suspender las ventas y demostraciones de Word.

Microsoft deberá pagar a i4i algo así como USD$290 Millones en daños y perjuicios. La respuesta de Microsof es breve y precisa: "Estamos decepcionados con el veredicto de la corte. Creemos que la evidencia claramente demuestra que no hemos violado la patente y mas aún que la patente de i4i es invalida. Apelaremos al veredicto"


Fuente: martinh.cl


jueves 30 de julio de 2009

Lance Davis, Administrador del proyecto CentOs Perdido en Acción

En una carta abierta publicada en el sitio de CentOS, Russ Herrold,Ralph Angenendt,Karanbir Singh,Jim Perrin,Donavan Nelson, Tim Verhoeven,Tru Huynh y Johnny Hughes piden al administrador del proyecto quien se encuentra desaparecido en acción que de señales de vida.

La raíz de este problema esta en que Lance Davis es Administrador con poder sobre el dominio, el canal IRC y otros servicios que el sitio CentOS ofrece. para mayor información ir al sitio web de Centos: http://www.centos.org/
 blog it

miércoles 15 de julio de 2009

Java web app y SharePoint WebServices Parte 1

Fue una tortura de grandes proporciones el intentar conectar una aplicación web que se ejecuta sobre tomcat, con un servidor SharePoint. El objetivo es poder acceder a ciertas listas publicadas en el servidor SharePoint. El método de acceso a ellas SharePoint WebServices.

Luego de escarbar la web en busca de ayuda para solucionar mi problema el como conectar una aplicación Java como cliente de los WebServices que publica el servidor SharePoint, encontré cientos de consejos y tutoriales, lamentablemente ninguno decía especificamente que hacer, eran fragmentos de fragmentos de código, con un centenar de cosas asumidas.

Uno asume que todas las versiones de Java son capaces de realizar autentificacion NTLM, y no es así, en la Version 1.4 de Java se incluye NTLM para Windows, a partir de la version 1.5 se incluye no solo para Windows, tambien otras Plataformas (Linux/Unix).

No hay que olvidar que otros se han dado el trabajo de realizar librerias de libre distribución o simplemente pagadas que resuelven todo este problema. Pero pagar por una libreria en este caso no es una alternativa. A parte que le quita lo desafiante de poder solucionar este problema de forma personal no?.

Despues de intentar con JAX-WS y XFire, regresé a mi herramienta de WebServices Favorita, Axis, pero esta vez escogí Axis2 en su versión 1.4.1. En la especificación mencionan soporte para autentificacion NTLM, así que bingo, comence los pasos para crear el cliente del WebService.

Ya que no pude generar el Cliente directamente del sitio web SharePoint, por la autentificación NTLM, decidí bajar el WSDL del servicio Web y a partir de este generar el stub. Una vez creado el Stub, comienzo a codificar la clase que se encargara de ser el cliente del Servicio Web. Obviamente tal como está creado el stub no es capaz de realizar la autentificación con el servidor SharePoint, para ello usamos el fragmento de código que ha sido ejemplificado en varios blogs. Usaré como ejemplo el servicio de Listas de SharePoint: https://spserver/site/_vti_bin/Lists.asmx

Axis 2 crea el stub ListsStub.class su uso:

ListsStub stub = new ListsStub( endpoint );

Options options = new Options();
stub._getServiceClient().setOptions(options);
stub._getServiceClient().getOptions().setTo( new EndpointReference(endpoint) );

HttpTransportProperties.Authenticator auth = new HttpTransportProperties.Authenticator();
auth.setHost( host );
auth.setPort( port);
auth.setUsername( user );
auth.setPassword( pass );
auth.setDomain( domain );
auth.setReal( host );
auth.setPreemptiveAuthentication( true );

ArrayList authSchemes = new ArrayList();
authSchemes .add( HttpTransportProperties.Authenticator.NTLM );
auth.setAuthSchemes( authSchemes );

stub._getServiceClient().getOptions().setProperty( HTTPConstants.AUTHENTICATE, auth );


Lamentablemente este fragmento de código por si solo no es suficiente. Para poder realizar la conexión con el servidor SharePoint, necesitamos agregar código a la clase cliente para poder ayudar al Http Transport en el proceso de autentificación NTLM. Esto me llevó a investigar un poco más pués en todos los webs que hablan de este tema, pareciera bastar con el código antes descrito. Sin explicar en ningun lado que el Servidor SharePoint tiene un Certificado Autoemitido y al realizar la conexión por SSL nos arruina toda la autentificación NTLM.


En la próxima entrega, les contaré como enfrente el problema del Certificado del Servidor SharePoint y cómo logre la conexión para poder ser capaz de consumir el WebService Lists de SharePoint.

algunas referencias:

http://markmail.org/message/qw6zixsto633xkts
http://rabout.com/?q=ms_dynamics_crm_3_api_axis2
http://www.scribd.com/doc/15301394/Axis2-Authentication
http://ws.apache.org/axis2/1_4_1/contents.html