Archivo de la categoría: Web Service

Running any program as a Windows NT service

Running a program as a service, ie. starting it when the system starts, do not finishing it when there is not any user logged in, and do not interacting with any user at all, is a simple and easy to do task in *nix. More or less it consists in running the program in background and doing a little bit more.

The problem was to run a program as a service in MS Win. It implies designing and coding your program in a particular way, using the OS API.

I had developed an ad-hoc server for mocking some services over a custom protocol, and I needed to run it on win in background mode, even when I was not logged in. It was coded in Java, and I had no idea about developing a win service. So I looked for a solution… and I found it.

For those who are not interested in using Win API, and still need to run their own program as a service, the solution is Nick Rozanski’s SrvStart.

A really magical solution that does the job.

First dowload it at http://www.rozanski.org.uk/software

Then follow the instructions at http://rozanski.org.uk/services_quick

From the instructions page…


a)
Let's assume that you want to run the following command:

C:\MYPROG\MYPROG.EXE -a -b -c xxxx yyyy zzz

as a Windows NT service called MY_SERVICE.

b)
Unpack the SRVSTART executables to a directory in your $PATH:
srvstart.exe - SRVSTART executable
srvstart.dll - SRVSTART library
logger.dll - LOGGER library
(If you're not sure where to put these files, just unpack them to C:\WINNT\SYSTEM32).

c)
Create a text file called, say, C:\SRVSTART\SRVSTART.INI.

[MY_SERVICE]
startup=C:\MYPROG\MYPROG.EXE -a -b -c xxxx yyyy zzz

d)
Open a Command Prompt in Windows NT. Install your service by typing the following command:

srvstart.exe install MY_SERVICE -c C:\SRVSTART\SRVSTART.INI

Just take a look at it!

Zimbra Webservices (SOAP y REST API)

Siguiendo con el tema de los webservices (ver post anterior) y metiendome más con especificidades de Zimbra, decidí escribir sobre la API SOAP y REST de Zimbra.

La primera pregunta que viene es cómo se compara la API SOAP con la API REST de Zimbra o, mejor aún, cuál tengo que usar. Si vemos la documentación de ambas, encontraremos que la API SOAP de Zimbra soporta mucho más funciones que la API REST. La API REST es para acceder a los datos de la cuenta de un usuario (exportar todos sus mails o importar nuevos mails, por ejemplo), mientras que la API SOAP sirve para ejecutar funcionalidad en el servidor, que eventualmente podría ser acceder a los datos de la cuenta del usuario, pero también realizar tareas administrativas (ej. cambiar el password de una cuenta, crear un nuevo dominio, configurar una clase de servicio, etc.).

Sigue leyendo

Usando Apache HttpComponents

(sucesor de Apache Commons HttpClient)

Para los que no lo conocen, Apache Commons (http://commons.apache.org/) es una colección de bibliotecas (archivos .jar) construidas sobre la API estandar de Java que pretenden abarcar todos los algoritmos y lugares comunes que un programador utiliza habitualmente, posibilitando la reutilización del código y reduciendo notablemente la cantidad de líneas necesarias para codificar en Java.Todo programador Java medianamente serio debería chequear en Apache Commons si ya existe una solución para el problema que debe afrontar antes de ponerse a codificar.Apache Commons posee soluciones para trabajar con diversos asuntos, como “strings”, “collections”, “input/output”, “codecs” (base64, hex, etc), imagenes, “logging”, matemática, “emailing”, etc, etc, etc.

HttpComponents sea tal vez la forma más sencilla en Java de ejecutar un “GET” o un “POST” a una URL. Este podría ser uno de los modos más elementales y de bajo nivel, pero no por ello menos eficaz, de consumir datos de un “webservice”.

Sigue leyendo