icono_twiter icono LinkedIn icono Facebook Icono Xing
Roberto Canales Mora

Creador y propietario de AdictosAlTrabajo.com, Director General de Autentia S.L., Ingeniero Técnico de Telecomunicaciones y Executive MBA por el Instituto de Empresa 2007.
Twitter:

Autor de los Libros: Planifica tu éxito: de aprendiz a empresario y Informática profesional, las reglas no escritas para triunfar en la empresa

Puedes consultar mi CV y alguna de mis primeras aplicaciones (de los 90) aquí

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2005-06-23

Tutorial visitado 15.862 veces Descargar en PDF
http

Invocación de Servidor DCOM desde Java

Hace ya unos pocos años que disponemos de la tecnología de componentes de Microsoft, bien la llamemos COM, DCOM, ActiveX, CDOM+ (ya que realmente poca gente sabe la diferencia entre estos términos) ...

Hoy en día mal se concibe el desarrollo Windows sin el uso intensivo de estos componentes (sobre todo en VBasic).  Ya es de lo mas normal que una aplicación llame a Excel o Word o arranque el Outlook para mandar un correo.

Es posible que también nos interese invocar a estos componentes desde Java  lo cual veréis que no es tan complicado... Para hacerlo, hasta ahora había utilizado Microsoft Visual J++ y su herramienta JActiveX pero, hay que buscar más opciones por dos razones:

  • Incapacidad de encontrar nuevas referencias a integración Java en el Web de Microsoft (SDK for Java, máquina virtual, etc.)
  • Deseo de mucha gente de usar software gratuito

Hoy os voy a comentar como se puede hacer con una solución llamada JACOB http://danadler.com/jacob

Descarga

Nos vamos al Web y descargamos el producto: JAva COM Bridge

 

Nos interesan fundamentalmente dos ficheros (jacob.dll y jacob.jar) 

Vamos a instalarlos como una extensión de java ( http://danadler.com/jacob/jacobfaq.html )

Verificamos que tenemos una máquina virtual java instalada

 

 En el directorio %java_home%/jre/bin copiamos la dll

  En el directorio %java_home%/jre/lib/ext copiamos el jar

  Voy a montar el ejemplo con jcreator (para variar un poco ;-) )

 El código es bastante simple y vamos a atacar al servidor de Automatización OLE del tutorial anterior, construido en Visual C++

import com.jacob.com.*;
import com.jacob.activeX.*;


public class LlamadaDcom {

static void depura(String cadena)
{
    System.out.println("LlamadaDcom " + cadena);
}

public static void main(String[] args) {

   depura("Arrancamos la aplicación");

   ActiveXComponent sC = new ActiveXComponent("dcombasico.Application");
   Dispatch sControl = (Dispatch)sC.getObject();

   Variant result = Dispatch.call(sControl, "retornaHora");
   depura("El resultado " + result.toString());

 }
}

 Y simplemente compilando y ejecutando, ya lo tenemos

 Otras soluciones a estudiar

Hay muchas otras opciones ... cada una con sus ventajas e inconvenientes (escribidme si conocéis alguna más)

BeanXporter

JCOM

jacoZoom

Java2COM

Bridge2Java

Weblogic COM

J-Integra

Microsoft Visual J++

Conclusiones

Siempre hay muchas opciones para hacer las cosas.... la gracia es buscar la más adecuada en cada caso.

Como complemento os diré utilizando las nuevas capacidades de anotaciones de Java 1.5 (o también con Xdoclet), podríamos ser capaces de construir clases envoltorio Java (Wrappers) de nuestros componentes DCOM de un modo bastante sencillo

Cuando mucha gente me pregunta sorprendido que porque comparto todas estas cosas ... la respuesta es sencilla ... que es más importante saber como se hace algo puntualmente o la visión de saber cuando es apropiado su uso (que solo dan los años de experiencia ;-). El conocimiento táctico dura meses, el estratégico años ....

Enlace interesante de última hora: http://congreso.javahispano.org/files/doc/j2ee/WBEM.pdf

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Fecha publicación: 2006-07-19-08:53:13

Autor:

[david silupu] HOLA QUE TAL... ESTE TUTORIAL ME PARECE RECONTRA SUPER INTERESANTE... PERO LO QUE DESEO ES SABER COMO PUEDO LLAMAR A UN COMPONENTE COM+,.. ES DECIR TENGO UNA DLL HECHA EN VB Y REGISTRADA CON EL REGSV32, Y LO UNICO QUE HACE ES RETORNARME UN MENSAJE, LO QUE QUIERO SABER ES COMO LLAMARLA DESDE JAVA... HE TRATADO DE HACER EL EJEMPLO Q ESTA RESUELTO EN EL TUTORIAL PERO ME SALEN UNOS ERRORES... OTRA COSA PODRIAS EXPLPICAR BIEN COMO SE INSTALA EL JACOB. PORFAVOR NO OLVIDES ..SOLOQUIERO LLAMAR A UNA DLL REGISTRADA COMO COMPONENTE DESDE JAVA