예제 #1
0
  public void bind(NameComponent[] nc, org.omg.CORBA.Object obj)
      throws NotFound, CannotProceed, InvalidName, AlreadyBound {
    if (this.destroyed) throw new CannotProceed();

    if (nc == null || nc.length == 0) throw new InvalidName();

    if (obj == null) throw new org.omg.CORBA.BAD_PARAM();

    Name n = new Name(nc);
    Name ctx = n.ctxName();
    NameComponent nb = n.baseNameComponent();

    if (ctx == null) {
      if (this.names.containsKey(n)) {
        // if the name is still in use, try to ping the object
        org.omg.CORBA.Object ref = (org.omg.CORBA.Object) this.names.get(n);
        if (isDead(ref)) {
          rebind(n.components(), obj);
          return;
        }
        throw new AlreadyBound();
      } else if (this.contexts.containsKey(n)) {
        // if the name is still in use, try to ping the object
        org.omg.CORBA.Object ref = (org.omg.CORBA.Object) this.contexts.get(n);
        if (isDead(ref)) unbind(n.components());
        throw new AlreadyBound();
      }

      if ((this.names.put(n, obj)) != null) throw new CannotProceed(_this(), n.components());

      log.debugf("Bound name: " + n.toString());
    } else {
      NameComponent[] ncx = new NameComponent[] {nb};
      org.omg.CORBA.Object context = this.resolve(ctx.components());

      // try first to call the context implementation object directly.
      String contextOID = this.getObjectOID(context);
      JBossNamingContext jbossContext = (contextOID == null ? null : contextImpls.get(contextOID));
      if (jbossContext != null) jbossContext.bind(ncx, obj);
      else NamingContextExtHelper.narrow(context).bind(ncx, obj);
    }
  }
예제 #2
0
  public void rebind(NameComponent[] nc, org.omg.CORBA.Object obj)
      throws NotFound, CannotProceed, InvalidName {
    if (this.destroyed) throw new CannotProceed();

    if (nc == null || nc.length == 0) throw new InvalidName();

    if (obj == null) throw new org.omg.CORBA.BAD_PARAM();

    Name n = new Name(nc);
    Name ctx = n.ctxName();
    NameComponent nb = n.baseNameComponent();

    if (ctx == null) {
      // the name is bound, but it is bound to a context - the client should have been using
      // rebind_context!
      if (this.contexts.containsKey(n))
        throw new NotFound(NotFoundReason.not_object, new NameComponent[] {nb});

      // try remove an existing binding.
      org.omg.CORBA.Object ref = (org.omg.CORBA.Object) this.names.remove(n);
      if (ref != null) ref._release();

      // do the rebinding in this context
      this.names.put(n, obj);
      log.debugf("re-Bound name: " + n.toString());
    } else {
      // rebind in the correct context
      NameComponent[] ncx = new NameComponent[] {nb};
      org.omg.CORBA.Object context = this.resolve(ctx.components());

      // try first to call the context implementation object directly.
      String contextOID = this.getObjectOID(context);
      JBossNamingContext jbossContext = (contextOID == null ? null : contextImpls.get(contextOID));
      if (jbossContext != null) jbossContext.rebind(ncx, obj);
      else NamingContextExtHelper.narrow(context).rebind(ncx, obj);
    }
  }