/** * Create a new NamingContext, bind it in this Naming Context and return its object reference. * This is equivalent to using new_context() followed by bind_context() with the supplied name and * the object reference for the newly created NamingContext. * * @param n a sequence of NameComponents which is the name to be unbound. * @return an object reference for a new NamingContext object implemented by this Name Server, * bound to the supplied name. * @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound An object is already bound under * the supplied name. * @exception org.omg.CosNaming.NamingContextPackage.NotFound A name with multiple components was * supplied, but the first component could not be resolved. * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Could not proceed in resolving * the n-1 components of the supplied name. * @exception org.omg.CosNaming.NamingContextPackage.InvalidName The supplied name is invalid * (i.e., has length less than 1). * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions. * @see new_context * @see bind_context */ public NamingContext bind_new_context(NameComponent[] n) throws org.omg.CosNaming.NamingContextPackage.NotFound, org.omg.CosNaming.NamingContextPackage.AlreadyBound, org.omg.CosNaming.NamingContextPackage.CannotProceed, org.omg.CosNaming.NamingContextPackage.InvalidName { NamingContext nc = null; NamingContext rnc = null; try { if (debug) dprint("bind_new_context " + nameToString(n)); // The obvious solution: nc = this.new_context(); this.bind_context(n, nc); rnc = nc; nc = null; } finally { try { if (nc != null) nc.destroy(); } catch (org.omg.CosNaming.NamingContextPackage.NotEmpty e) { } } if (updateLogger.isLoggable(Level.FINE)) { // isLoggable call to make sure that we save some precious // processor cycles, if there is no need to log. updateLogger.fine( LogKeywords.NAMING_BIND + "New Context Bound To " + NamingUtils.getDirectoryStructuredName(n)); } return rnc; }
public static void main(String args[]) { // public void run() { String nomOffice = args[0]; // Tableau des id/nom des sites OfficeDBManager db = new OfficeDBManager(); Hashtable<Short, String> codeSite = new Hashtable<Short, String>(); // Table des id des sites short[] idSite = db.getIdSites(); for (int i = 0; i < idSite.length; i++) { codeSite.put(idSite[i], db.getCodeSite(idSite[i])); } try { org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); // Gestion du POA // **************** // Recuperation du POA POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); // Creation du servant // ********************* OfficeImpl monOffice = new OfficeImpl(orb, codeSite); // Activer le servant au sein du POA et recuperer son ID byte[] monOfficeId = rootPOA.activate_object(monOffice); // Activer le POA manager rootPOA.the_POAManager().activate(); /** ****** Enregistrement dans le service de nommage ******* */ // Recuperation du naming service NamingContext nameRoot = org.omg.CosNaming.NamingContextHelper.narrow( orb.resolve_initial_references("NameService")); // Construction du nom a enregistrer org.omg.CosNaming.NameComponent[] nameToRegister = new org.omg.CosNaming.NameComponent[1]; nameToRegister[0] = new org.omg.CosNaming.NameComponent(nomOffice, ""); // Enregistrement de l'objet CORBA dans le service de noms nameRoot.rebind(nameToRegister, rootPOA.servant_to_reference(monOffice)); System.out.println("==> Nom '" + nomOffice + "' est enregistre dans le service de noms."); String IORServant = orb.object_to_string(rootPOA.servant_to_reference(monOffice)); System.out.println("L'objet possede la reference suivante :"); System.out.println(IORServant); // Lancement de l'ORB et mise en attente de requete // ************************************************** orb.run(); } catch (Exception e) { e.printStackTrace(); } }
/** * Implements resolving names in this NamingContext. The first component of the supplied name is * resolved in this NamingContext by calling Resolve(). If there are no more components in the * name, the resulting object reference is returned. Otherwise, the resulting object reference * must have been bound as a context and be narrowable to a NamingContext. If this is the case, * the remaining components of the name is resolved in the resulting NamingContext. This method is * static for maximal reuse - even for extended naming context implementations where the recursive * semantics still apply. * * @param impl an implementation of NamingContextDataStore * @param n a sequence of NameComponents which is the name to be resolved. * @return the object reference bound under the supplied name. * @exception org.omg.CosNaming.NamingContextPackage.NotFound A name with multiple components was * supplied, but the first component could not be resolved. * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Could not proceed in resolving * the first component of the supplied name. * @exception org.omg.CosNaming.NamingContextPackage.InvalidName The supplied name is invalid * (i.e., has length less than 1). * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions. * @see resolve */ public static org.omg.CORBA.Object doResolve(NamingContextDataStore impl, NameComponent[] n) throws org.omg.CosNaming.NamingContextPackage.NotFound, org.omg.CosNaming.NamingContextPackage.CannotProceed, org.omg.CosNaming.NamingContextPackage.InvalidName { org.omg.CORBA.Object obj = null; BindingTypeHolder bth = new BindingTypeHolder(); // Length must be greater than 0 if (n.length < 1) throw new InvalidName(); // The identifier must be set if (n.length == 1) { synchronized (impl) { // Resolve first level in this context obj = impl.Resolve(n[0], bth); } if (obj == null) { // Object was not found throw new NotFound(NotFoundReason.missing_node, n); } return obj; } else { // n.length > 1 if ((n[1].id.length() == 0) && (n[1].kind.length() == 0)) { throw new InvalidName(); } NamingContext context = resolveFirstAsContext(impl, n); // Compute restOfName = name[1..length] NameComponent[] tail = new NameComponent[n.length - 1]; System.arraycopy(n, 1, tail, 0, n.length - 1); // Resolve rest of name in context try { // First try to resolve using the local call, this should work // most of the time unless there are federated naming contexts. Servant servant = impl.getNSPOA().reference_to_servant(context); return doResolve(((NamingContextDataStore) servant), tail); } catch (Exception e) { return context.resolve(tail); } } }
private static void rlist(NamingContext ctx, NameComponent[] base, StringBuffer buf) { BindingListHolder listHolder = new BindingListHolder(new Binding[0]); BindingIteratorHolder iterHolder = new BindingIteratorHolder(); ctx.list(0, listHolder, iterHolder); BindingHolder bindingHolder = new BindingHolder(); if (iterHolder.value == null) return; NameComponent[] name = new NameComponent[base.length + 1]; for (int i = 0; i < base.length; i++) name[i] = base[i]; while (iterHolder.value.next_one(bindingHolder)) { Binding binding = bindingHolder.value; name[name.length - 1] = binding.binding_name[0]; try { String stringName = namingService.to_string(name); buf.append(stringName); } catch (Exception e) { buf.append(e.getMessage()); } if (binding.binding_type.value() == BindingType._ncontext) { // this entry is for a subcontext // add trailing '/' just to distinguish // a subcontext from a regular object buf.append('/'); buf.append('\n'); // recursively list the subcontext contents try { NamingContext subCtx = NamingContextHelper.narrow(ctx.resolve(binding.binding_name)); rlist(subCtx, name, buf); } catch (Exception e) { buf.append(e.getMessage()); } } else { buf.append('\n'); } } }
/** * Implements unbinding bound names in this NamingContext. If the name contains only one * component, the name is unbound in this NamingContext using Unbind(). Otherwise, the first * component of the name is resolved in this NamingContext and unbind passed to the resulting * NamingContext. This method is static for maximal reuse - even for extended naming context * implementations where the recursive semantics still apply. * * @param impl an implementation of NamingContextDataStore * @param n a sequence of NameComponents which is the name to be unbound. * @exception org.omg.CosNaming.NamingContextPackage.NotFound A name with multiple components was * supplied, but the first component could not be resolved. * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Could not proceed in resolving * the n-1 components of the supplied name. * @exception org.omg.CosNaming.NamingContextPackage.InvalidName The supplied name is invalid * (i.e., has length less than 1). * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions. * @see resolve */ public static void doUnbind(NamingContextDataStore impl, NameComponent[] n) throws org.omg.CosNaming.NamingContextPackage.NotFound, org.omg.CosNaming.NamingContextPackage.CannotProceed, org.omg.CosNaming.NamingContextPackage.InvalidName { // Name valid? if (n.length < 1) throw new InvalidName(); // Unbind here? if (n.length == 1) { // The identifier must be set if ((n[0].id.length() == 0) && (n[0].kind.length() == 0)) { throw new InvalidName(); } org.omg.CORBA.Object objRef = null; synchronized (impl) { // Yes: unbind in this context objRef = impl.Unbind(n[0]); } if (objRef == null) // It was not bound throw new NotFound(NotFoundReason.missing_node, n); // Done return; } else { // No: unbind in a different context // Resolve first - must be resolveable NamingContext context = resolveFirstAsContext(impl, n); // Compute tail NameComponent[] tail = new NameComponent[n.length - 1]; System.arraycopy(n, 1, tail, 0, n.length - 1); // Propagate unbind to this context context.unbind(tail); } }
public static void main(String[] args) { loggedUser = args[0]; try { ORB orb = ORB.init(args, null); // initialize ORB o = orb.resolve_initial_references("NameService"); // get reference to Deal object NamingContext ncRef = NamingContextHelper.narrow(o); NameComponent[] nc = new NameComponent[1]; nc[0] = new NameComponent(); nc[0].id = "Auction"; nc[0].kind = ""; a = AuctionHelper.narrow(ncRef.resolve(nc)); isr = new InputStreamReader(System.in); in = new BufferedReader(isr); int sel = 0; System.out.println("******* You have logged in Successfully! ********"); while (sel == 0) { System.out.println("Please make a selection"); System.out.println("\t1. Get all the listed auctions"); System.out.println("\t2. List a new item for auction."); System.out.println("\t3. Lookup an auction."); System.out.println("\t4. Place a bid on an auction."); System.out.println("\t5. Logout."); System.out.print("Please make your selection > "); String f = in.readLine(); try { sel = Integer.parseInt(f); } catch (Exception e) { sel = 42; } switch (sel) { case 1: allItems(); sel = 0; break; case 2: newAuction(); sel = 0; break; case 3: System.out.println("Stub"); sel = 0; break; case 4: placeBid(); sel = 0; break; case 5: a.logout(loggedUser); System.out.println("BYE!"); System.exit(0); default: System.out.println("You have not made a valid selection, please try again."); sel = 0; break; } } } catch (Exception e) { System.out.println("ERROR : " + e); e.printStackTrace(System.out); } }
/** @param args the command line arguments */ public static void main(String args[]) { try { // create and initialize the ORB ORB orb = ORB.init(args, null); // get reference to rootpoa & activate the POAManager POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); rootpoa.the_POAManager().activate(); // create servant Log_viewerImpl log_viewerImpl = new Log_viewerImpl(); log_viewerImpl.setORB(orb); LogFrame frame = new LogFrame(log_viewerImpl); frame.setVisible(true); log_viewerImpl.setFrame(frame); // get object reference from the servant org.omg.CORBA.Object ref = rootpoa.servant_to_reference(log_viewerImpl); Log_viewer href = Log_viewerHelper.narrow(ref); // read stringified Registry to file FileReader fr = new FileReader(IORFILE); BufferedReader br = new BufferedReader(fr); String remoteRegistryIOR = br.readLine(); // get the romote Registry org.omg.CORBA.Object ncobj = orb.string_to_object(remoteRegistryIOR); NamingContext rootNC = NamingContextHelper.narrow(ncobj); frame.println("Obtained Name Service reference."); log_viewerImpl.serRootNC(rootNC); NameComponent[] name = new NameComponent[1]; name[0] = new NameComponent("Logger", ""); try { rootNC.bind(name, href); } catch (org.omg.CORBA.UserException ue) { ue.printStackTrace(); System.exit(-1); } frame.println("Logger Remote Interface bound in Name Service"); // wait for invocations from client frame.println("Logger ready and waiting ..."); orb.run(); frame.println("Logger Exiting ..."); System.out.println("Logger Exiting ..."); } catch (Exception e) { System.err.println("ERROR: " + e); // e.printStackTrace(System.out); } }
/** * Implements all four flavors of binding. It uses Resolve() to check if a binding already exists * (for bind and bind_context), and unbind() to ensure that a binding does not already exist. If * the length of the name is 1, then Bind() is called with the name and the object to bind. * Otherwise, the first component of the name is resolved in this NamingContext and the * appropriate form of bind passed to the resulting NamingContext. This method is static for * maximal reuse - even for extended naming context implementations where the recursive semantics * still apply. * * @param impl an implementation of NamingContextDataStore * @param n a sequence of NameComponents which is the name under which the object will be bound. * @param obj the object reference to be bound. * @param rebind Replace an existing binding or not. * @param bt Type of binding (as object or as context). * @exception org.omg.CosNaming.NamingContextPackage.NotFound A name with multiple components was * supplied, but the first component could not be resolved. * @exception org.omg.CosNaming.NamingContextPackage.CannotProceed Could not * proceed in * resolving the first component of the supplied name. * @exception org.omg.CosNaming.NamingContextPackage.InvalidName The supplied name is invalid * (i.e., has length less than 1). * @exception org.omg.CosNaming.NamingContextPackage.AlreadyBound An object is already bound under * the supplied name. * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions. * @see resolve * @see unbind * @see bind * @see bind_context * @see rebind * @see rebind_context */ public static void doBind( NamingContextDataStore impl, NameComponent[] n, org.omg.CORBA.Object obj, boolean rebind, org.omg.CosNaming.BindingType bt) throws org.omg.CosNaming.NamingContextPackage.NotFound, org.omg.CosNaming.NamingContextPackage.CannotProceed, org.omg.CosNaming.NamingContextPackage.InvalidName, org.omg.CosNaming.NamingContextPackage.AlreadyBound { // Valid name? if (n.length < 1) throw new InvalidName(); // At bottom level? if (n.length == 1) { // The identifier must be set if ((n[0].id.length() == 0) && (n[0].kind.length() == 0)) { throw new InvalidName(); } // Ensure synchronization of backend synchronized (impl) { // Yes: bind object in this context under the name BindingTypeHolder bth = new BindingTypeHolder(); if (rebind) { org.omg.CORBA.Object objRef = impl.Resolve(n[0], bth); if (objRef != null) { // Refer Naming Service Doc:00-11-01 section 2.2.3.4 // If there is an object already bound with the name // and the binding type is not ncontext a NotFound // Exception with a reason of not a context has to be // raised. // Fix for bug Id: 4384628 if (bth.value.value() == BindingType.nobject.value()) { if (bt.value() == BindingType.ncontext.value()) { throw new NotFound(NotFoundReason.not_context, n); } } else { // Previously a Context was bound and now trying to // bind Object. It is invalid. if (bt.value() == BindingType.nobject.value()) { throw new NotFound(NotFoundReason.not_object, n); } } impl.Unbind(n[0]); } } else { if (impl.Resolve(n[0], bth) != null) // "Resistence is futile." [Borg pickup line] throw new AlreadyBound(); } // Now there are no other bindings under this name impl.Bind(n[0], obj, bt); } } else { // No: bind in a different context NamingContext context = resolveFirstAsContext(impl, n); // Compute tail NameComponent[] tail = new NameComponent[n.length - 1]; System.arraycopy(n, 1, tail, 0, n.length - 1); // How should we propagate the bind switch (bt.value()) { case BindingType._nobject: { // Bind as object if (rebind) context.rebind(tail, obj); else context.bind(tail, obj); } break; case BindingType._ncontext: { // Narrow to a naming context using Java casts. It must // work. NamingContext objContext = (NamingContext) obj; // Bind as context if (rebind) context.rebind_context(tail, objContext); else context.bind_context(tail, objContext); } break; default: // This should not happen throw staticWrapper.namingCtxBadBindingtype(); } } }