Programación Avanzada en Java

Page 86

RegistrationHomeHelper.narrow( nctx.resolve(fullname)); En el caso del ORB ORBacus, los clientes también necesitan un "Basic Object Adapter" si se usan retrollamadas en el método SellerBean.auditAccounts. El contexto de nombrado también se configura de forma diferente para el servidor ORBacus arrancado anteriormente: Object obj = ((com.ooc.CORBA.ORB)orb).get_inet_object ( "localhost", 1060, "DefaultNamingContext"); NamingContext nctx = NamingContextHelper.narrow(obj);

Clases Helper y Holder Las referencias a objetos remotos en CORBA usan una clase Helper para recuperar un valor desde ese objeto. Un método usado comunmente es el método Helper, que asegura que el objeto está encastado correctamente. Las clases Holder contienen valores devueltos cuando se usan parámetros inout o out en un método. El llamador primero ejemplariza la clase Holder apropiada para ese tipo y recupera el valor desde la clase cuando la llamada retorna. En el siguiente ejemplo, el valor del contador customSearch se configura y recupera después de que se haya llamado a customSearch. En el lado del servidor el valor del contador se selecciona llamando a count.value=newvalue. IntHolder count= new IntHolder(); sfield=regRef.customSearch(sfield,count); System.out.println("count now set to "+count.value);

Recolección de Basura Al contrario que RMI, CORBA no tiene un mecanismo de recolección de basura distribuido. Las referencias a un objeto son locales al proxy del cliente y al sirviente del servidor. Esto significa que cada Máquina Virtual Java1 (JVM) es libre de reclamar un objeto y recoger la basura si no tiene más referencias sobre él. Si un objeto no es necesario en el servidor, necesitamos llamar a orb.disconnect(object) para permitir que el objeto sea recolectado.

Retrollamadas (Callbacks) CORBA El nuevo método findLowCreditAccounts es llamado desde el AuctionServlet usando la URL http://localhost:7001/AuctionServlet?action=auditAccounts. El método AuctionServlet.auditAccounts llama al método SellerBean.auditAccounts, que devuelve un ArrayList de registros de Registration. //AuctionServlet.java private void auditAccounts(ServletOutputStream out, HttpServletRequest request) throws IOException{ //

... SellerHome home = (SellerHome) ctx.lookup("seller"); Seller si= home.create();

if(si != null) { ArrayList ar=si.auditAccounts(); for(Iterator i=ar.iterator(); i.hasNext();) { Registration user=(Registration)(i.next()); addLine("<TD>"+user.getUser() + "<TD><TD>"+user.getBalance()+ "<TD><TR>", out); } addLine("<TABLE>", out); } El objeto SellerBean llama al método CORBA RegistrationHome.findLowCreditAccounts implementado en el fichero RegistrationServer.java, y se pasa una referencia a sí mismo. La referencia es pasada siempre que la clase SellerBean implemente el interface ReturnResults declarado en el Registration.idl. //SellerBean.java public ArrayList auditAccounts() { try{ NameComponent[] fullname = new NameComponent[2]; fullname[0] = new NameComponent("auction", "");


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.