• ↑↓ pour naviguer
  • pour ouvrir
  • pour sélectionner
  • ⌘ ⌥ ↵ pour ouvrir dans un panneau
  • ←→ pour naviguer
  • esc pour rejeter
⌘ '
raccourcis clavier

The Problem

A single atomic name can only identify objects at one level of the hierarchy. How do we refer to objects deep in a tree structure, like /usr/people/ed/.cshrc? We need a way to combine multiple atomic names into a full path.

Core Idea

A compound name is zero or more atomic names combined using a specific syntax (like / in file paths). It represents a full path through the naming hierarchy. Examples: /etc/fstab, /usr/bin, java:comp/env/jdbc.

How It Works

  1. Atomic names are concatenated with a separator (e.g., / for file-like, . for DNS-like)
  2. /usr/people/ed has four atomic names: usr, people, ed
  3. Each level is resolved sequentially: look up usr, then people within usr, then ed within people
  4. In JNDI, compound names can span multiple naming systems (federation)
  5. JNDI compound names may use different syntaxes depending on the provider

Visual Explanation

G /usr/people/ed/.cshrc /usr/people/ed/.cshrc (Compound Name) usr usr /usr/people/ed/.cshrc->usr 1 people people /usr/people/ed/.cshrc->people 2 ed ed /usr/people/ed/.cshrc->ed 3 .cshrc .cshrc /usr/people/ed/.cshrc->.cshrc 4

Key Properties

  • Hierarchical: Represents a path through the naming tree
  • Syntax-dependent: Uses provider-specific separator characters
  • Resolved sequentially: Each component is looked up in the context of the previous component
  • Can span contexts: May traverse multiple subcontexts
  • JNDI examples: java:comp/env/ejb/MyBean, jdbc/myDataSource

Connections

Edge Cases & Gotchas

  • Syntax differences: LDAP uses commas (,), file system uses slashes (/)
  • Escaping: Special characters in atomic names may need escaping in compound names
  • Absolute vs relative: Some compound names are relative to a context
  • Parsing errors: Incorrect syntax causes InvalidNameException