CORBA und JNDI

Werbung
Die Referenzarchitektur
für verteilte Objektsysteme
CORBA
■ CORBA als Architekturmodell
■ Interface Definition Language
■ Objekt Referenzen
■ Verzeichnisdienst
Software Components and Services
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
2 von 43
The Industrial Revolution
■ Craftsmanship: separation of duties
■
Specialization increases efficiency
■ Manufactory 18th century: collocation of craftsmen
■
■
Craftsmen are collocated
■ Task is reduced to single "core" competence
Auxiliary task are centralized
■ Automation 19th century
■
Manpower partially replaced by machines
■ Assembly (line) of components 20th century
■
■
Assembly of prefabricated components
Separation into:
■ Component builder
■ Assembler
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
3 von 43
The Hardware Revolution
Levels of abstractions
■
Single electronic components
■ Resistors, transistors
■
Integrated logic gates: TTL
■
Highly integrated circuits
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
4 von 43
The Software Revolution
Levels of abstractions
■
Individual programming statements
■
Software library function calls
■ ANSI C library
■ Win32 API calls
■
Software components/services
■ Components: ActiveX (COM/OLE)
■ The only universal component standard that
ever succeeded
■ Technically and commercially
■ Now abandoned by Microsoft
■ Base of WinRT/UWP
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
5 von 43
Software Components and Services
■ A software component is… (according Szyperski)
■
■
■
■
i) a unit of composition and subject to third-party composition
ii) with contractually specified interfaces
iii) explicit context dependencies only.
iv) software component can be deployed independently
■ A service is…
■
■
i) ... iii) ditto
iv) already deployed Æ federated, located and accessed remotely
A service is a remotely accessible, instantiated component
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
6 von 43
CORBA
Architektur
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
7 von 43
Common Object Request Broker Architecture
eine
eineArchitektur,
Architektur,kein
keinProdukt!
Produkt!
Definition und Entwicklung einer Architektur für kooperierende
objekt-orientierte Software-Bausteine in verteilten heterogenen
Systemen
OMG (Object Management Group)
■ herstellerübergreifendes Konsortium
■ gegründet 1989 von 11 Firmen,
■ umfasst heute über 700 Mitglieder, sogar MS ist dabei.
■ Ziel war die Bereitstellung von Konzepten („open“) für die Entwicklung verteilter
Systeme mit objektorientierten Modellen.
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
8 von 43
ORB – die Kommunikations-Schiene
■ Der ORB (Object Request
Broker) ist selbst ein verteiltes
System.
■ Seine Dienste gehen weit über
die „reine“ Kommunikation
hinaus:
Client
Server
■ Verzeichnisdienste für das Publizieren/Suchen/Finden
von dienstbaren Objekten
und deren Interfaces (Syntax) und Fähigkeiten (Semantik)
■ Absolute Transparenz (Ort, Plattform, etc.)
■ Weitere Funktionen im Sinne von „Middleware“
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
9 von 43
OMA – Object Management Architecture
■ CORBA definiert damit auch eine
Infrastruktur mit einigen
Standard-Diensten
Application Objects
ORB
Common Object Services Common Facilities
(standardisiert)
(nützlich, fakultativ)
■ COSS (Common Object Services Specification):
Realisierung ist für CORBA-konforme Produkte zwingend,
jedoch sind noch längst nicht alle Services spezifiziert.
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
10 von 43
CORBA Common Object Services
■ Lifecycle
Erzeugen, entsorgen, kopieren, verlagern, ... von Objekten
■ Naming
Erzeugen von Namensräumen („naming contexts“)
Abbildung von Namen auf Objektreferenzen
Lokalisierung von Objekten
nicht URL, sondern
„machine-readable“
■ Transaction
Protokoll für 2 Phase Commit
...
Sind die 2(3) Services die absolut notwendig sind
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
11 von 43
...CORBA Common Object Services
...
■ Event Distribution
Weiterleitung asynchroner Ereignisse (Observer Pattern)
über sogenannte „Event Channels“
■ Concurrency
■ Persistence, Replication, Externalization
■ Licensing, Security
■ Trading
hochgestecktes Ziel, Objekte, deren Dienste und Schnittstellen
dynamisch handeln und verhandeln zu können
...
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
12 von 43
Common Facilities
Höherwertige Dienste für ein breites Anwendungs-Spektrum
(analog zu grossen Klassenbibliotheken)
Horizontal Common Facilities
■ secure time
■ printing
■ mobile agents
■ information management
... ein bisschen Data Warehousing
... IIM, ITIL Configuration Management
... Workflow
■ systems management
■ task management
■ ...
Vertical Common Facilities
■ Basisfunktionen für diverse Marktsegmente
(Banking, Gesundheitswesen, etc.)
■ vgl. „application frameworks“, „business objects“ und dergleichen
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
13 von 43
Ausserhalb des ORB Core ...
■ „Statische“ Schnittstelle
generiert (wie RPC, RMI)
■ Dynamische Schnittstelle
(Client kann zur Laufzeit das Schnittstellenverzeichnis abfragen und den geeigneten
Methodenaufruf zusammenbauen)
■ Objektadapter (anwendungsunabhängige Funktionen des Serverobjekts)
BOA (Basic Object Adapter)
– Minimalmodell
POA (Portable Object Adapter) – Erweitertes Modell
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
14 von 43
Interface Definition Language
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
15 von 43
IDL – die Interface-Definition
■
■
■
■
Wie beim RPC steht im Zentrum die Definition des Server-Interfaces.
Die Sprache IDL ist CORBA-spezifisch und „unabhängig“.
IDL ist selbst objektorientiert (Vererbung).
Aus einem Stück IDL werden die konkreten Elemente für die jeweilige Plattform
generiert.
■ Ein ORB kann sowohl IDL-Definitionen als auch deren dazugehörige
Implementationen „verwalten“
grundsätzlicher
Aufbau
[oneway] <op_type_spec>
<identifier>
(param1,....,paramL)
[raises(except1,...,exceptN)
] [context(name1,...,nameM)]
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
16 von 43
IDL – allgemeines
■ Eine Deklaration, umwandelbar in „Target Code“
■ Sieht syntaktisch „gewohnt“ aus, ist aber weder C/C++ noch Java.
■ Methoden-Signaturen spezifizieren neben Parameter-Typen auch
ob es sich um „input“ oder „output“ handelt.
■ wichtig für die Übertragung von Argument-Werten und/oder
Synchronisation von “by-reference” übergebenen Variablen
■ Pro IDL-File können mehrere Interfaces deklariert werden.
■ Hat ein „Modul“-Konzept für „scoping“-Zwecke,
mit der Möglichkeit der Verschachtelung (nesting).
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
17 von 43
IDL – Beispiel
module SomeDBApp {
module services {
struct Person {
string name;
int
in;
long
balance
}
typedef sequence<string> PersonNameSeq;
exception AlreadyOnLine{};
exception Duplicate{};
interface Server {
boolean init(in string name) raises(AlreadyOnLine);
}
interface someLookup {
PersonNameSeq doit(in string name, out Person p) raises(Duplicate);
}
}
...
}
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
18 von 43
IDL-to-Java
> idlj -fall ThisOrThatServer.idl
interface ThisOrThatServer
class ThisOrThatServerHelper
■ CORBA Streams für Objekt-Transport
class ThisOrThatServerHolder
■ hält out/inout-Argumente
class _ThisOrThatServerStub
■ client-side proxy
class ThisOrThatPOA
■ enthält den Adapter für Server
Eigentlich klar. Aber doch aufwendig!
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
19 von 43
Client - Struktur
■ Der Client sieht den Server als Objekt;
Argumente/Parameter sind Objekte
■ Jedes Interface (seine Signatur)
spezifiziert Objekte, die alle „gehandelt“
werden müssen.
■ Dies erfordert die Abbildung von
„Pointers“ und dergleichen
auf ORB-taugliche Referenzen.
■ Eine Menge „Library-Routines“ besorgt
die Abbildung der Datentypen (à la XDR).
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
Proxies
20 von 43
Server - Struktur
■ Skeletons besorgen den
konkreten Aufruf der
Methode, Prozedur,
Subroutine, wie immer das
dann halt heisst.
■ Auch hier erfolgt die Abbildung von
ORB-tauglichen Referenzen auf
„Pointers“.
■ Eine Menge „Library-Routines“
besorgt die Abbildung der Datentypen
(à la XDR).
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
21 von 43
Object Adapter
■ Server-Objekt muss sich hier
anmelden, als:
■
■
■
■
Shared Server
Unshared Server
Server per Method
Persistent Server
Object
Adapter
■ Server-Objekt muss sich auch beim
„Implementation Repository“
anmelden
■
■
■
■
■
■
Generierung und Interpretation von Objekt-Referenzen
Objekt-Lebenszyklus-Management
Methoden-Aufrufe
Abbildung von Objektreferenzen auf konkrete Implementation
Sicherheit der Interaktionen
Registrierung von (Objekt-) Implementationen
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
22 von 43
Integration „fremder“ Systeme
■ Die Integration von sogenannten „Legacy Systems“ ist einer der wichtigeren
Zwecke einer Enterprise Architektur.
■ Man steckt diese (produktiven) Altlasten einfach in ein CORBA-Hemd.
■ simpel:
■ normal:
■ schwierig:
Die Applikation lässt sich BOA- oder POA-tauglich machen
Die Applikation benötigt einen speziellen Adapter
Die Applikation muss in etwas verpackt werden, das
nach aussen weitgehend einen Standard ORB spielen kann
(Transaktionen, Security)
■ Kommunikation zwischen ORBs ist durch ein IOP
(Inter-ORB-Protocol) definiert.
■ IIOP (über TCP/IP) ist nur eines von vielen.
Object
ObjectSystem
System
as
another
as anotherORB
ORB
IOP
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
23 von 43
Messaging Service
■ Asynchrones Kommunikations-Paradigma (im Gegensatz zu RPC)
Motivation:
■ mobile Geräte sind nicht immer „online“
■ bei grossen, komplexen Systemen sind unausweichlich auch
nicht immer alle Dienste erreichbar
■ Zeitliche Entkopplung von Sender und Empfänger
■ Sender blockiert nicht
■ Nachricht kann immer irgendwo zwischengespeichert werden, bis der
Empfänger erreichbar ist und sie entgegennimmt
■ Meldungen können umgeleitet werden (Kaskaden, Zuständigkeiten); RouterAgenten implementieren „Policies“ zur Erreichung bestimmter Ziele
(Zeitlimiten, Prioritäten, Reihenfolgen, QoS, )
■ Von der Anwendung geforderte Semantik muss mit darüberliegenden
Protokollen realisiert werden
■ Sicherheit/Fehlerbehandlung sind nicht ganz trivial
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
24 von 43
AMI – Asynchronous Method Invocation
■ synchron
■ verzögert synchron (non blocking)
■ one way („maybe“)
Bisher (vgl.
RPC):
AMI
Callback
■ Client gibt beim Aufruf eine Objektreferenz mit
■ Callback-Objekt muss sich nicht notwendigerweise im Client
befinden, sondern kann irgendwo existieren
■ Kommunikations-Exceptions werden
im Callback-Objekt geworfen
Polling
■ Client erhält als Sofort-Antwort ein Objekt zurück
■ Dieses wird dann das Resultat bereithaben; der Client kann
sich periodisch danach erkundigen (poll)
■ Client kann Event-Listener drauf setzen (???)
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
25 von 43
Objekte „by Reference“ oder „by Value“
„parameter passing by reference“
■ Objekte werden als Pointer oder Referenzen gehandelt (siehe später).
„parameter passing by value“
■ Argument-(Objekt) erscheint im Parameter als Kopie:
es wurde durch „marshalling“ serialisiert und übertragen,
daraus macht eine „factory“ eine Kopie mit eigener Identität
■
■
■
■
Was geschieht mit zyklischen Strukturen? Was mit Alias-Referenzen?
Wie transportiert man das Verhalten des Objekts (Methoden) ?
Ausführbarer Code in heterogener Umgebung (Maschine, Sprache) ?
Auch so eine „factory“-Lösung möglich?
Vorderhand Beschränkung auf „valuetypes“
■ Struct inIDL
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
26 von 43
CORBA Components
Stichwort Komponenten ...
■ Gemeint ist damit eine Möglichkeit und die dazugehörige Systematik, verteilte
Anwendungen nicht nur „modularisiert“ zu entwickeln,
sondern sie „sich im Verlaufe der Lebenszeit entwickeln zu lassen“.
Also dynamisches Wachstum, allmähliche "Alterung zur Reife".
Nutzen (dieselben Begriffe wie bei der Objektorientierung), dazu:
■ grafische Tools zum Zusammenstecken und Plazieren von Komponenten
Elemente eines Komponenten-Modells
■
■
■
■
Konfiguration
Persistenz
Verpackung
Lizenzierung
■
■
■
■
Definition
Interaktion
Komposition
Introspektion
Weitgehend von JEE abgedeckt
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
27 von 43
CORBA Components
■ Komponenten leben in sogenannten Containern, welche bestimmte
Basisdienste bereitstellen (bsp. CORBA Object Services)
Definition
■ spezielles CORBA-Objekt
■ funktionale Schnittstelle (mehrere Interfaces)
■ Konfigurations-Attribute
Interaktion
■ Event-Modell (Publish/Subscribe)
■ in IDL deklariert, können Transaktionscharakter haben
Komposition
■ Aggregation (vgl. Analyse-Muster bei OOD)
■ bedeutet hier auch Verbindung durch Kommunikationskanäle
Introspektion
■ Ermittlung einer Schnittstelle (Signaturen) zur Laufzeit
■ Dynamische Anreicherung des Interface Repository
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
28 von 43
CORBA und DCOM
Microsoft „Distributed Component Object Model“,
Wurde durch .NET Remoting in WCF abgelöst
■ Weitgehend gleiche Zielsetzung mit anderen Begriffen
■
■
■
IDL heisst MIDL
Repository heisst Registry
Aufgaben von ORB und Object Adapter werden
von „Service Control Manager“ wahrgenommen
■ DCOM ist proprietär
■ Einige Unterschiede
■
Schnittstellen-Aggregation, keine Schnittstellen-Vererbung
■
DCOM hat „einen“ Garbage Collector“ mit Referenzzähler
DCOM definiert auf seiner „Schiene“ ein Binärformat
(CRL = common runtime layer)
■
■ DCOM ist faktisch an seiner Komplexität gescheitert
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
29 von 43
CORBA und Java
■ Java nimmt für sich ebenfalls Plattformunabhängigkeit in Anspruch
■ JEE bietet auch eine Menge von „Common Object Services“
■ Interoperabilität durch Zusammenführung von Java RMI und CORBA
IIOP
Java RMI läuft über IIOP (und irgendeinen Standard ORB)
■ IDL kann automatisch aus Java-Programmen generiert werden
■
■
■
„reverse mapping“ IDL
Interface
CORBA-Objekte werden ohne IDL-Kenntnisse nutzbar
anderssprachige Objekte können von Java angesprochen werden
■ Das „single language“ Paradigma von Java wird aufgebrochen
■
Java-Objekte werden über CORBA zugreifbar
■ alles natürlich mit „Einschränkungen“ -> hat sich nicht durchgesetzt
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
30 von 43
CORBA und Open Source
■ Zwar ist die OMG ein Konsortium mit den üblichen Problemen
■
Standardisierung = langwieriger Prozess, komplexe Resultate
■ Jedoch sind die Standards offen: konforme Implementierungen
finden Absatz und Einsatz, egal unter welchem Lizenzierungs-Schema
OpenSource (u.v.a.)
Kommerzielle Produkte (u.v.a.)
■
■
■
■
■
■
■
■
■
■
■
JRE
MICO
JacORB
TAO
omniORB
ILU
IBM:
Borland:
BEA:
OOC:
ExperSoft:
Websphere
Visibroker
ObjectBroker
ORBacus
PowerBroker
■ Implementierungsstand ist allerdings sehr unterschiedlich
■ Ernstzunehmende JEE Applikationsserver haben einen eingebauten ORB.
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
31 von 43
Objekt Referenzen
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
32 von 43
Objektreferenzen
■ Referenzen auf Objekte im eigenen Kontext sind klar definiert
■
Pointer, References, Adressen
■ Problem: Objektreferenz über Maschinen-/und Sprachgrenzen hinweg
Abbildung
Sprachspezifische Objektreferenzen
C, C++
Pointer
Java
(Objekt-) Variable
ORB-spezifische Objektreferenzen
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
33 von 43
Objektreferenzen
■ Interoperable Object References (IOR)
■ Jeder ORB muss pro unterstützte Programmierumgebung
„dieselbe“ Sprachbindung für Objekte anbieten.
■ Dadurch wird „Interoperabilität“ erreicht.
IIOP version
version implemented by the ORB
Host
TCP/IP address of the ORB's host machine
Port
port number where the ORB is listening for client requests
Key
Value uniquely identifies the server to the ORB exporting the service
Components
A sequence that contains additional information applicable to object method
invocations, such as supported ORB services and proprietary protocol support
An IOR specifies the wire protocol for talking to an object as well as specifying the
object's network location.
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
34 von 43
IOR -- „stringified“
■ Eine IOR enthält binäre Werte.
■ Jedoch wird aus praktischen Gründen eine String-Version umgewandelt
werden
ServerServerObjekt
Objekt
string_to_object()
string_to_object()
Referenz
Referenz
für
fürdas
das(Server)
(Server)
Objekt
Objekt
School of Engineering
object_to_string()
object_to_string()
IOR:000000000000001649444c3a6578616d706
IOR:000000000000001649444c3a6578616d706
c652f48656c6c6f3a312e300000000000000100
c652f48656c6c6f3a312e300000000000000100
00000000000070000102000000000f3231322e3
00000000000070000102000000000f3231322e3
234362e3137372e313600000b0c000000000021
234362e3137372e313600000b0c000000000021
afabcb0000000020036657d7000000010000000
afabcb0000000020036657d7000000010000000
00000000000000004000000000a000000000000
00000000000000004000000000a000000000000
010000000100000020000000000001000100000
010000000100000020000000000001000100000
002050100010001002000010109000000010001
002050100010001002000010109000000010001
0100
0100
Implementation
Implementation
Repository
Repository
Instantiierung des Servers
Interface
Interface
Repository
Repository
Info für den Client
© E. Mumprecht, K. Rege, ZHAW
35 von 43
Java
Verzeichnisdienst
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
36 von 43
Verzeichnisdienst in Java
■ Jedes nicht-triviale System benötigt Verzeichnisdienste, weil die Komponenten
kommen und gehen, mobil und volatil sind.
■ Beispiele:
Internet
e-Mail
General Purpose
Unix/Linux
Novell
Windows
RPC
RMI
CORBA
WebServices
SNMP
DNS
X.500
LDAP
NIS
NDS
Registry; ADS
Portmapper
RMI-Registry
ORB/COS-Naming
UDDI
MIB
■ Jeder Verzeichnisdienst hat seine Eigenheiten.
■ Jedoch lassen sich viele Verzeichnisdienste in Java über ein
gemeinsames Modell ansprechen: JNDI
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
37 von 43
Java Naming and Directory Interface
Anwendungen
Anwendungen
JNDI API
■ Gemeinsames Interface
Naming Manager
■ Gemeinsame Grundfunktion
JNDI SPI
■ Interface für „Plugins“ (Service Provider)
über
überContext
ContextFactories
Factories
Konkrete
KonkreteVerzeichnisdienste
Verzeichnisdienste
JNDI-Packages
javax.naming
javax.naming.directory
javax.naming.event
javax.naming.ldap
javax.naming.spi
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
38 von 43
JNDI Grundkonzepte
■ Namen und Objekte sind zeitweilig aneinander gebunden.
■ Solche Bindungen (Bindings) existieren in einem Kontext.
■ Also repräsentiert ein Context eine konkrete Sammlung von Bindings.
■ Operationen (auf einen Context) sind u.a.
object = context.lookup(name)
context.bind(name,object)
bindings = context.listBindings()
■ Namen bestehen aus verschiedenen Teilen.
Sie werden in Form von Strings und auch als Names gehandelt.
■ Ein Binding ist eine Assoziation name
object.
■ Manchmal sind Objekte lediglich über Hinweise zu haben:
So lässt sich ein object allenfalls über eine reference „nachbilden“.
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
39 von 43
Der JNDI-Context
■ Ein Context muss mit Hilfe einer Factory erstellt werden.
■ Der Hersteller/Lieferant des „Service Providers“ liefert für „seinen“
Verzeichnisdienst, bzw. sein Plugin, die Factory-Klasse.
■ Beispiele:
... ORB/COS-Naming
Context context = null;
Hashtable details = new Hashtable();
details.put(InitialContext.INITIAL_CONTEXT_FACTORY,
„org.jnp.interfaces.NamingContextFactory“);
details.put(InitialContext.PROVIDER_URL,„jnp://localhost:8888“);
context = new InitialContext(details);
... LDAP
DirContext context = null;
Hashtable details = new Hashtable();
details.put(Context.INITIAL_CONTEXT_FACTORY,
„com.sun.jndi.ldap.LdapCtxFactory“);
details.put(Context.PROVIDER_URL,
„ldap://ldap.zhaw.ch:389/dc=zhaw,dc=ch“);
context = new InitialDirContext(details);
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
40 von 43
Einige Context Providers
(nach javasoft.com)
LDAP
LDAP oder ADS
RMI Registry
[com.sun.jndi.rmi.registry.RegistryContextFactory]
DSML
Directory Services Markup Language (OASIS e-Business Standard)
DNS
[com.sun.jndi.dns.DnsContextFactory]
File System
[com.sun.jndi.fscontext.RefFSContextFactory]
JNDI2R
Windows Registry
...
...
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
41 von 43
JNDI – Directory Context
■ Konkrete Verzeichnisdienste arbeiten mit Attributen
in verschiedensten Organisationsformen
■ Das Interface DirContext erlaubt den „lookup“ aufgrund von Attributen
■ Beispiel:
Hashtable details = new Hashtable();
details.put(Context.INITIAL_CONTEXT_FACTORY,
„com.sun.jndi.dns.DNSContextFactory“);
details.put(Context.PROVIDER_URL,
„dns://ns1.zhaw.ch/zhaw.ch“
DirContext dns = new InitialDirContext(details);
normaler
normalerDNS-Lookup
DNS-Lookup
Attributes ia = dns.getAttributes(„hostname“, new String[] {„A“});
Attributes mx = dns.getAttributes(„dns://ns1.zhaw.ch/zhaw.ch“,
new String[] {„MX“};
MX-Anfrage an Mail-Domain
MX-Anfrage an Mail-Domain
■ Attributwerte lassen sich auch modifizieren.
■ Damit sind z.B. auch Update-Operationen im konkreten Verzeichnis möglich.
■ Mehrere Operationen lassen sich auch als Transaktionen verpacken.
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
42 von 43
JNDI
■ mag etwas einschüchtern
■ spart jedoch bereits bei kleineren Aufgaben eine Menge Aufwand
■ hat für komplexere Systeme einiges zu bieten
Literatur
Das Tutorial (ist vollständig on-line, hat als Buch 823 Seiten)
http://docs.oracle.com/javase/jndi/docs.html
Praktische Leitfäden
http://docs.oracle.com/javase/1.5.0/docs/guide/jndi/
Speziell für CORBA: “The COS Naming Service Provider”
http://docs.oracle.com/javase/1.5.0/docs/guide/jndi/jndi-cos.html
School of Engineering
© E. Mumprecht, K. Rege, ZHAW
43 von 43
Herunterladen