Las interfaces EGL permiten acceder a un servicio EGL, a un servicio Web (que puede haberse escrito en EGL) o a código Java.
Interface HelloWorld type JavaObject {javaName = "HelloWorld", packageName = "com.ibm.examples.helloWorld"} function sayHello(name String) returns (String); end
Puede crear una interfaz que describa las funciones que desea codificar en un servicio EGL. Una vez terminada la interfaz, usted u otros usuarios pueden codificar el servicio, que se dice que implementa la interfaz. El significado principal es que el servicio contiene todas las funciones descritas en la interfaz. La interfaz proporciona un tipo de contrato que el servicio debe satisfacer.
Un servicio puede implementar varias interfaces, y varios servicios pueden implementar la misma interfaz.
El efecto de declarar una variable de un componente de interfaz sobre el entorno de ejecución es el mismo que el de declarar una variable del componente de servicio relacionado, pero el uso de la interfaz evita la necesidad de desvelar la lógica del servicio. Conservar la lógica alejada de terceros puede ser adecuado por razones de competencia (puede que desee ocultar el código fuente a los desarrolladores externos a la organización) o de reducción de la complejidad (puede que desee que los desarrolladores, sean o no de la organización, se centren en las funciones suministradas por el servicio en lugar de hacerlo en los detalles de la implementación).
El acceso a un servicio Web creado fuera de la organización requiere que el usuario tenga la definición WSDL (Web Service Description Language) específica del servicio, que detalla cómo acceder al servicio.
La definición WSDL se utiliza como entrada al asistente WSDL de EGL, que crea un componente de interfaz específico del servicio que será la base de una variable en el código.
Al acceder a un servicio por medio de una interfaz, ésta debe estar enlazada a la ubicación en la que reside la implementación del servicio. Este enlace incluye detalles relativos al protocolo utilizado para acceder a la implementación.
La situación habitual es especificar la información de enlace en una variable declarada en un tipo especial de biblioteca EGL denominada biblioteca de enlace de servicio, que se describe en la sección Componente de biblioteca de tipo ServiceBindingLibrary. Otra posibilidad es que una interfaz reciba el enlace en una sentencia de asignación, como es posible cuando la interfaz o servicio del lado derecho de la sentencia de asignación se declara en una biblioteca de enlace de servicios o cuando dicha interfaz o servicio ha recibido un enlace en una sentencia de asignación anterior. Una tercera posibilidad es que una interfaz que actúa como parámetro de función reciba el enlace recibiendo un argumento que ya tiene un enlace.
Puede utilizar una interfaz EGL de tipo JavaObject para acceder a algunas o a todas las funciones disponibles en una interfaz o clase Java. En esta utilización, una interfaz EGL proporciona una vista del código Java.
Una estrategia eficiente para la organización consiste en solicitar a un desarrollador experto tanto en EGL como en Java que cree componentes de interfaz para que los utilicen otros desarrolladores de EGL. Para obtener una lista de los componentes de interfaz suministrados para uso general, consulte la sección Interfaces de tipo JavaObject.
EGL ofrece un amplio conjunto de interfaces que permiten a los desarrolladores acceder a controles de interfaz de usuario JSF durante la ejecución; por ejemplo, para cambiar el color de un recuadro de texto en respuesta a la entrada del usuario. Para obtener una visón general de esa posibilidad, consulte la sección Árbol de componentes JSF.
Al interactuar con el árbol de componentes JSF, puede pasar por alto el hecho de que (a partir de EGL versión 6.0.1), la tecnología de interfaces de EGL no permite crear instancias de objeto Java desde el interior del código EGL. Para obtener detalles sobre el particular, consulte la sección Creación de instancias e interfaces EGL de tipo JavaObject.
Conceptos relacionados
Creación de instancias e interfaces EGL de tipo JavaObject
Árbol de componentes JSF
Componente de biblioteca de tipo ServiceBindingLibrary