com.ejie.r01f.businessdelegate
Class BaseAPI
java.lang.Object
com.ejie.r01f.businessdelegate.BaseBusinessDelegateFactory
com.ejie.r01f.businessdelegate.BaseAPI
- Direct Known Subclasses:
- TestAPI
- public abstract class BaseAPI
- extends BaseBusinessDelegateFactory
Clase base para APIs
IMPORTANTE
----------
La función principal de esta clase es:
- "Aislar" al cliente de la forma en que se ejecuta la funcionalidad especificada
en el API (Bzd)
Las funciones del API pueden ser implementadas y llamadas de muchas formas:
- Llamando localmente (memoria) a una clase que implenenta la lógica
- Llamando a un EJB que en su interfaz (local o remota) implementa la lógica
- Llamando a algún web service que expone un método que implementa la lógica
- Haciendo una llamada HTTP / RPC a algún metodo de un módulo que implementa la lógica
- etc
La configuración es:
[Cliente]-->[API]-->[DynamicProxy que devuelve un Bzd]
||
(local/ws/ejb)
||
\/
[Clase que implementa el Bzd]
La implementación del BusinessDelegate local se obtiene utilizando un DynamicProxy especificado
en el fichero de properties de la aplicación:
Class
com.ejie.r01m.services.R01MStorageConfigLoaderBzd
com.ejie.r01m.config.loaders.R01MStorageConfigLoader
Class
com.ejie.r01m.services.R01MTypologyConfigLoaderBzd
com.ejie.r01m.config.loaders.R01MTypologyConfigLoader
Los valores permitidos son:
- Class: Todo está en la misma VM y por lo tanto se puede acceder directamente
a la clase que carga las configuraciones
- EJB: Se utiliza un EJB cuya interfaz remota implementa el BZD y que carga
la configuración
- HTTP: Se accede via un Servlet que devuelve un XML con la configuración
- WS: Se utiliza un WebService que devuelve un XML con la configuracións
La utilizacion normal de esta clase es EXTENDERLA:
public class MyAPI extends BaseAPI {
MyAPIBzd getAPI() {
// Obtener un Bzd configurado en el fichero de propiedades de la aplicación
// bajo un oid dado.
return = (MyAPIBzd)super.getBzd("codigoApp","oidConfigBzd");
}
}
Es tambien posible utilizar el API SIN NECESIDAD DEL FICHERO DE PROPIEDADES.
Para utilizar el API de esta forma es necesario invocar DIRECTAMENTE a los métodos
apropidados pasando los parametros apropiados:
* Para obtener un API soportado "por detrás" por una clase simple:
public class MyAPI extends BaseAPI {
MyAPIBzd getAPI() {
// Obtener un BZD sin fichero de configuracion
return (MyAPIBzd)super.getClassBzd("com.ejie.client.MyAPIBzd","com.ejie.server.MyAPIBzdImpl");
}
}
* Para obtener un API soportado "por detrás" por un EJB:
public class MyAPI extends BaseAPI {
MyAPIBzd getAPI() {
// Obtener un BZD sin fichero de configuracion
return (MyAPIBzd)super.getEJBBzd("com.ejie.client.MyAPIBzd","myAPIEjb","com.ejie.server.ejb.MyAPIEJBHome");
}
}
IMPORTANTE!!!
-------------
La clase se define como abstracta para obligar a una implementacion
concreta en la que se "decida" la forma de utilizarla segun los
ejemplos anteriores
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |