mit java implementiert (java 2 standard edition)
DESCRIPTION
P2P Seminar – JXTA im Detail. mit Java implementiert (Java 2 Standard Edition). Nicole Hänelt, Mike Rohland, Julia Schenk, Rafael Grote. P2P – JXTA – Überblick. Definition Welche Protokolle gibt es? Peer Discovery Protocol API Peer Resolver Protocol API Peer Membership Protocol API - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/1.jpg)
1
mit Java implementiert
(Java 2 Standard Edition)
Nicole Hänelt, Mike Rohland,
Julia Schenk, Rafael Grote
P2P Seminar – JXTA im Detail
![Page 2: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/2.jpg)
2
1) Definition2) Welche Protokolle gibt es?3) Peer Discovery Protocol API4) Peer Resolver Protocol API5) Peer Membership Protocol API6) Peer Information Protocol API7) Pipe Binding Protocol API8) Peer Endpoint Protocol API9) Beispiel
P2P – JXTA – Überblick
![Page 3: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/3.jpg)
3
Ein Protokoll ist ein wieder verwendbares Verfahren um die Datenübertragung zwischen Computern zu regeln.(JXTA: Java P2P Programming; 22. March 2002)
Ein Protokoll (engl.: protocol) enthält Standards für die kontrollierte Übermittlung von Daten (www.net-lexikon.de; gesehen am 14.05.2004)
P2P – JXTA – Definition
![Page 4: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/4.jpg)
4
1) Definition
2) Welche Protokolle gibt es?3) Peer Discovery Protocol API4) Peer Resolver Protocol API5) Peer Membership Protocol API6) Peer Information Protocol API7) Pipe Binding Protocol API8) Peer Endpoint Protocol API9) Beispiel
P2P – JXTA – Überblick
![Page 5: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/5.jpg)
5
Welche Protokolle gibt es?
Grundservices, die in einem P2P-Netzwerk ausgeführt werden können müssen:
• Discovery• Membership • Communication
– Pipe Binding Protocol– Endpoint Protocol– Resolver Protocol
• Peer Information Protocol
P2P – JXTA – Protokolle
![Page 6: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/6.jpg)
6
(JXTA: Java P2P Programming; 22. March 2002)
P2P – JXTA – Protokolle
![Page 7: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/7.jpg)
7
1) Definition2) Welche Protokolle gibt es?
3) Peer Discovery Protocol API4) Peer Resolver Protocol API5) Peer Membership Protocol API6) Peer Information Protocol API7) Pipe Binding Protocol API8) Peer Endpoint Protocol API9) Beispiel
P2P – JXTA – Überblick
![Page 8: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/8.jpg)
8
• Dienen zur generellen Beschreibung einer jeden Resource, die im P2P-Netz bereitgestellt wird
• Werden in XML-Dokumente gefasst
• Es gibt keine DTDs oder Schemata für Advertisments, es reicht wenn ein Advertisment wohlgeformt ist
• von JXTA vorgegebene Lebensdauer
• LöschenflushAdvertisements( String id, int type ) throws IOException;
P2P – JXTA – Peer Discovery API
Advertisements
![Page 9: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/9.jpg)
9
Peer Group Advertisement1 <?xml version="1.0"?>2 <!DOCTYPE jxta:PGA>3 <jxta:PGA xmlns:jxta="http://jxta.org">4 <GID>5 urn:jxta:uuid-AAA122616461AAAAAAA1246150325033026 </GID>7 <MSID>8 urn:jxta:uuid-
DEADBEEFDEAFBABAFEEDBABE0000000103069 </MSID>10 <Name>11 Test12 </Name>13 <Desc>14 Wir testen….15 </Desc>16 </jxta:PGA>
P2P – JXTA – Peer Discovery API
![Page 10: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/10.jpg)
10
Discovery Query Message
<?xml version=“1.0“ encoding=“UTF-8“?><jxta:DiscoveryQuery>
<Type>2</Type><Threshold>1</Threshold><Attr>Name</Attr><Value>*pader*</Value><PeerAdv>
<?xml version=“1.0.“?><!DOCTYPE jxta:PA><jxta:PA xmlns=jxta=“http://jxta.org“><PID>urn:jxta:365738865...7424832749C</PID></jxta:PA>
</PeerAdv></jxta:DiscoveryQuery>
P2P – JXTA – Peer Discovery API
![Page 11: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/11.jpg)
11
Discovery Response Message<?xml version=“1.0“ encoding=“UTF-8“?><jxta:DiscoveryResponse>
<Type>2</Type><Count>1</Count><Attr>Name</Attr><Value>*pader*</Value><PeerAdv>
<?xml version=“1.0.“?><!DOCTYPE jxta:PA><jxta:PA xmlns=jxta=“http://jxta.org“>
<PID>urn:jxta:1235738865...742483DE4</PID></jxta:PA>
</PeerAdv><Response Expiration=“36000000“>
<?xml version=“1.0“?><!DOCTYPE jxta:PipeAdvertisement><jxta:PipeAdvertisement xmlns=“http://jxta.org“>
<Id>urn:jxta:uuid-05773264AB...EF56A468375</Id><Type>JxtaUnicastSecure</Type><Name>Jxta.webcam.paderborn</Name>
</jxta:PipeAdvertisement></Response>
</jxta:DiscoveryResponse>
P2P – JXTA – Peer Discovery API
![Page 12: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/12.jpg)
12
(JXTA: Java P2P Programming; 22. March 2002)
P2P – JXTA – Peer Discovery API
![Page 13: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/13.jpg)
13
Local Discovery
Im lokalen Cache (Cache Management Ordner) nach Advertisements suchen
getLocalAdvertisements(int type, String attribute, String value);
Suche nach einem Peer „Bla“getLocalAdvertisements(DiscoveryService.PEER, „Name“, „Bla“);
P2P – JXTA – Peer Discovery API
Veröffentlichung von Advertisements publish(Advertisement adv, int type);
![Page 14: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/14.jpg)
14
1 private void findLocalAdvertisements ( ) { 2 System.out.println( ”looking local: ” );3 try {4 Enumeration enu = discoveryService.getLocalAdvertisements(DiscoveryService.ADV, null ,null);5 if ((enu != null) && enu.hasMoreElements( )) { 6 System.out.println(”found local Advertisement: ”);7 while (enu.hasMoreElements( )) { 8 Advertisement adv = (Advertisement)enu.nextElement( );9 try { 10 Document doc = adv.getDocument(new MimeMediaType (”text/xml”));11 doc.sendToStream(System.out);12 }13 catch (IOException e) { 14 e.printStackTrace(System.err);15 }16 }17 }18 }19 catch (IOException e) { 20 e.printStackTrace(System.err);21 }22 }
P2P – JXTA – Peer Discovery API
Mögliche Implementierung
(Oliver Steinhauer: JXTA Seminar, FU Gießen-Friedberg, SS03)
![Page 15: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/15.jpg)
15
Remote Discovery
Eine Anfrage an alle RendezvousPeers senden um ihre lokale DB zu durchsuchen
getRemoteAdvertisements( String peerid, int type, String attribute, String value, int threshold );
Problem:
Der Peer weiß nicht, wann die Advertisements gefunden wurden.
P2P – JXTA – Peer Discovery API
Veröffentlichung von Advertisements remotePublish(Advertisement adv, int type);
![Page 16: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/16.jpg)
16
Remote Discovery mit Listener
getRemoteAdvertisements( String peerid, int type, String attribute, String value, int threshold, DiscoveryListener listener );
Bei jeder Antwort wird der DiscoveryListener aufgerufen.
discoveryEvent(DiscoveryEvent discoveryEvent); // behandelt // Event vom Discovery Service
Das DiscoveryEvent Objekt
getResponse(); // liefter DiscoveryResponseMsg
DiscoveryResponseMsg
getResponses(); // liefert Aufzählung der Advertisements zurück
P2P – JXTA – Peer Discovery API
![Page 17: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/17.jpg)
17
1) Einführung2) Welche Protokolle gibt es?3) Peer Discovery Protocol API
4) Peer Resolver Protocol API5) Peer Membership Protocol API 6) Peer Information Protocol API7) Pipe Binding Protocol API 8) Peer Endpoint Protocol API9) Beispiel
P2P – JXTA – Überblick
![Page 18: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/18.jpg)
18
P2P – JXTA – Peer Resolver API
Peer Resolver API
- wird zur Suche im P2P Netz benutzt- dazu werden Anfragen (query) an andere Peers versendet- und Antworten (response) empfangen
- keine Übermittlungsgarantien- Rendezvous Peers können Übermittlung ablehnen oder dabei ausfallen
- keine Antwortgarantien- weder wenn keine Antworten vorhanden noch Antworten vorhanden
![Page 19: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/19.jpg)
19
P2P – JXTA – Peer Resolver API
Resolver API Classes
- ResolverInterface – Interface zur Implementierung des ResolverServices
- ResolverService – Interface definiert QueryHandler Verwaltung
- GenericResolver – Interface definiert senden von Messages
- QueryHandler – Interface zur Message Verarbeitung
- ResolverQuery – Standardimplementierung
- ResolverResponse – Standardimplementierung
![Page 20: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/20.jpg)
20
P2P – JXTA – Peer Resolver API
QueryHandler im Detail
-int processQuery(ResolverQuery query)- Ablaufsteuerung mittels Rückgabewert:
- ResolverService.OK- ResolverService.Repropagate
- void processResponse (ResolverResponse response);
-keine weitere Ablaufsteuerung da Endpunkt
![Page 21: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/21.jpg)
21
P2P – JXTA – Peer Resolver API
I Benutzen des ResolverServices
ResolverServiceImpl resolver;resolver = (ResolverServiceImpl)group.
getResolverService();TestQueryHandler handler = new
TestQueryHandler(handlerName,credential);resolver.registerHandler(handlerName, handler);
Starten:
Beenden:
resolver.unregisterHandler(handlerName);
![Page 22: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/22.jpg)
22
P2P – JXTA – Peer Resolver API
II Benutzen des ResolverServices
// xml AbfrageDokument erstellenStructuredTextDocument doc = null;doc = (…)StructuredDocumentFactory.
newStructuredDocument(new MimeMediaType("text/xml"),"Pong");
Element e = doc.createElement("timestamp 1", format.format(new Date(now)));
doc.appendChild(e);String credential = „p2pSeminar";
Abfragen:
![Page 23: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/23.jpg)
23
P2P – JXTA – Peer Resolver API
III Benutzen des ResolverServices
// Query erstellenResolverQueryMsg message = null;String xml = serializeDoc(doc);message = new ResolverQuery(handlerName
, credential, group.getPeerID().toString(), xml, 1);
// und versenden; löst eine RunTimeException // aus, sofern der Peer nicht vorhandenresolver.sendQuery(peerID, message);
![Page 24: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/24.jpg)
24
1) Einführung2) Welche Protokolle gibt es?3) Peer Discovery Protocol API 4) Peer Resolver Protocol API
5) Peer Membership Protocol API6) Peer Information Protocol API7) Pipe Binding Protocol API 8) Peer Endpoint Protocol API9) Beispiel
P2P – JXTA – Überblick
![Page 25: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/25.jpg)
25
P2P – JXTA – Peer Membership API
Peer Membership API
- Mechanismus um PeerGroup beizutreten
- nicht zum Management einer PeerGroup gedacht
- Peer muss Anforderungen des Membership Protokolls erfüllen- im Erfolgsfall wird ein credential vergeben
- kein zentrales Verzeichnis aller Gruppenmitglieder
![Page 26: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/26.jpg)
26
P2P – JXTA – Peer Membership API
AuthenticationCredential und Credential
Credential -> Berechtigungsnachweis (dict.leo.org; gesehen am 19.05.2004)
AuthenticationCredential enthält:- Authentifizierungsmethode- anfängliche Identifizierungsinformationen
Credential enthält:- Identifizierungsinformationen
![Page 27: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/27.jpg)
27
P2P – JXTA – Peer Membership API
MembershipServiceService
![Page 28: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/28.jpg)
28
P2P – JXTA – Peer Membership API
I Ablauf eines PeerGroup Beitritts
// 1. MembershipService von der PeerGroup // empfangenMembershipService membership;membership = (MembershipService)
newGroup.getMembershipService();
// 2. AuthenticationCredential erstellenAuthenticationCredential authCredauthCred = new AuthenticationCredential
(newGroup,authenticationMethod);
![Page 29: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/29.jpg)
29
P2P – JXTA – Peer Membership API
II Ablauf eines PeerGroup Beitritts
// 3. Authenticator vom MembershipService // empfangenAuthenticator authenticator =(Authenticator)membership.apply(authCred);
// 4. Authenticator Objekt ausfüllenauthenticator.methodXYZ(valueABC);
![Page 30: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/30.jpg)
30
P2P – JXTA – Peer Membership API
III Ablauf eines PeerGroup Beitritts
/* 5. Authenticator mittels isReadyForJoin() testen und 6. mit Authenticator beim MembershipService
anmelden*/ if( authenticator.isReadyForJoin()){ finalCredential = membership.join(authenticator);} Credential empfangen
![Page 31: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/31.jpg)
31
1) Einführung2) Welche Protokolle gibt es?3) Peer Discovery Protocol API 4) Peer Resolver Protocol API 5) Peer Membership Protocol API
6) Peer Information Protocol API7) Pipe Binding Protocol API 8) Peer Endpoint Protocol API9) Beispiel
P2P – JXTA – Überblick
![Page 32: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/32.jpg)
32
Peer Endpoint Protokoll (Core)
Rendezvous Protokoll(Standard)
Peer Resolver Protokoll (Core)
Peer Information Protokoll(Standard)
Pipe Binding Protokoll(Standard)
Peer Discovery Protokoll(Standard)
Protokollhierarchie von JXTA
Core - required components and behaviours for all JXTA implementations
Standard – optional but recommended
P2P – JXTA – Peer Information API
![Page 33: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/33.jpg)
33
Peer Information Protokoll
- Sobald ein Peer lokalisiert ist, ist es interessant seinen Status und seine Fähigkeiten abzufragen PIP
- Zwei Nachrichtentypen:- Peer Info Query Message (Status des Remote Peers abfragen)- Peer Info Response Message (Seinen Status einem anderen Peer zugänglich machen)
- Spezielle Implementation des Peer Resolver Protokolls- Peer publiziert seine PeerAdvertisement andere Peers lokalisieren diese und ziehen daraus Informationen über den zugehörigen Peer - Dient dem Standard JXTA Service PeerInfoService (optional aber empfohlen)
P2P – JXTA – Peer Information API
![Page 34: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/34.jpg)
34
PIP Query Message
<xs:element name="PeerInfoQueryMessage" type="jxta:PeerInfoQueryMessage"/>
<xs:complexType name="PeerInfoQueryMessage"> <xs:sequence> <xs:element name="sourcePid" type="jxta:JXTAID"/> <xs:element name="targetPid" type="jxta:JXTAID"/> <!-- if not present then the response is the general peerinfo --> <xs:element name="request" type="xs:anyType" minOccurs="0"/> </xs:sequence></xs:complexType>
request Feld kann genutzt werden um einen speziellen Request zu bezeichenen, wenn nicht Anfrage liefert default Set von Informationen
P2P – JXTA – Peer Information API
![Page 35: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/35.jpg)
35
<xs:element name="PeerInfoResponse" type="jxta:PeerInfoResponse"/>
<xs:complexType name="PeerInfoResponseMessage"> <xs:sequence> <xs:element name="sourcePid" type="jxta:JXTAID"/> <xs:element name="targetPid" type="jxta:JXTAID"/> <xs:element name="uptime" type="xs:unsignedLong" minOccurs="0"/> <xs:element name="timestamp" type="xs:unsignedLong" minOccurs="0"/> <xs:element name="response" type="xs:anyType" minOccurs="0"/> <xs:element name="traffic" type="jxta:piptraffic" minOccurs="0"/> </xs:sequence></xs:complexType>
<xs:complexType name="piptraffic"> ... <xs:complexType name="piptrafficinfo"> .......
P2P – JXTA – Peer Information API
PIP Response Message
![Page 36: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/36.jpg)
36
- Peer Informationen lokalisieren und speichern in Form des PeerInfoAdvertisements.
PeerInfoService Interface
P2P – JXTA – Peer Information API
![Page 37: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/37.jpg)
37
PeerInfoAdvertisement
P2P – JXTA – Peer Information API
![Page 38: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/38.jpg)
38
1) Einführung2) Welche Protokolle gibt es?3) Peer Discovery Protocol API 4) Peer Resolver Protocol API 5) Peer Membership Protocol API6) Peer Information Protocol API
7) Pipe Binding Protocol API 8) Peer Endpoint Protocol API9) Beispiel
P2P – JXTA – Überblick
![Page 39: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/39.jpg)
39
JXTA ... Pipes ...
- Virtuelle Kommunikationskanäle zwischen Computern, beschrieben durch PipeAdvertisements
- Bieten virtuelle Eingangs – und Ausgangsmailboxen, die nicht physisch an eine spezielle Peer Lokation gebunden sind
- Eindeutig identifiziert durch Pipe ID
- Zwei Enden:- Input Pipe (empfangendes Ende)- Output Pipe (sendendes Ende)
P2P – JXTA – Pipe Binding API
![Page 40: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/40.jpg)
40
Pipe Binding Protokoll- Regelt den Aufbau eines virtuellen Kanals zwischen zwei oder mehreren Knoten
- JXTA HTTP Transport, JXTA TCP/IP Transport, JXTA TLS Transport
- Wird verwendet um die Enden einer Pipe mit den jeweiligen Endpunkten der Knoten zu verbinden
P2P – JXTA – Pipe Binding API
![Page 41: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/41.jpg)
41
PipeAdvertisement
- Wird vom Pipe Service genutzt, um die Endpunkte für lokalen Input und Output der Pipe zu erstellen
- Enthält Pipe ID
- Muss Pipe Type enthalten- JxtaUnicast: unsicher und nicht zuverlässig- JxtaUnicastSecure: Sicher (nutzt TLS)- JxtaPropagate: senden an mehre
- Kann optionalen symbolischen Namen enthalten
P2P – JXTA – Pipe Binding API
![Page 42: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/42.jpg)
42
<xs:element name="PipeAdvertisment" type="jxta:PipeAdvertisment"/>
<xs:complexType name="PipeAdvertisement"> <xs:sequence> <xs:element name="Id" type="jxta:JXTAID"/> <xs:element name="Type" type="xs:string"/> <xs:element name="Name" type="xs:string" minOccurs="0"/> </xs:sequence></xs:complexType>
Pipe Advertisement Schema
P2P – JXTA – Pipe Binding API
![Page 43: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/43.jpg)
43
PipeService
P2P – JXTA – Pipe Binding API
![Page 44: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/44.jpg)
44
Der Pipe Prozess
(1)Peer der Information möchte öffnet eine input Pipe
(2)Peer der Information möchte veröffentlicht seine Pipe
(3)Peer mit Daten öffnet output Pipe zur input Pipe
(4)Peer mit output Pipe sendet Daten
(1) Gruppe veröffentlicht Pipe Advertisement(2) Listener Peer erstellt input Pipe aus Advertisement(3) Talk Peer erstellt output Pipe, die an den listener Peer adressiert ist(4) Talk Peer sendet Nachricht auf die Pipe(5) Listener empfängt Nachricht
Ich such mir jemanden zum reden
Ich hab ein offenes Ohr, wer erzählt mir was
P2P – JXTA – Pipe Binding API
![Page 45: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/45.jpg)
45
Verbinden von Pipes
- Blind Pipe- Listener Pipe ist immer blind und akzeptiert Verbindung von jedem Peer- Blind Output Pipe- Blind Output Pipe with Listener- Blind Input Pipe- Blind Input Pipe with Listener
- Peer-addressed Pipe- Adressed Output Pipe Output Pipes können sowohl blind als auch explizit adressiert sein
P2P – JXTA – Pipe Binding API
![Page 46: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/46.jpg)
46
- Bidirektionale Pipes- Der BidirectionalPipeService ist ein optionaler Service, mit dem (welch Wunder !) bidirektionale Pipes erzeugt werden können
- Reliable Pipes- Mit dem ReliablePipeService können Nachrichten zuverlässig über Pipes gesendet werden- Nachrichten werden in der Reihenfolge empfangen in der sie auch gesendet wurden- Die Nachricht erreicht garantiert ihren Empfänger- Können auch verschlüsselt werden
Pipes, Pipes, Pipes…
P2P – JXTA – Pipe Binding API
![Page 47: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/47.jpg)
47
1) Einführung2) Welche Protokolle gibt es?3) Peer Discovery Protocol API 4) Peer Resolver Protocol API 5) Peer Membership Protocol API6) Peer Information Protocol API7) Pipe Binding Protocol API
8) Peer Endpoint Protocol API9) Beispiel
P2P – JXTA – Überblick
![Page 48: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/48.jpg)
4819.05.04 48
P2P – JXTA – Peer Endpoint API
Peer Endpoint Protocol
- Nachrichtenaustausch zwischen Peers
- wird hauptsächlich von anderen Protokollen benutzt
- direkte Benutzung sinnvoll für• Implementierung neuer Endpoint-Protokolle• Implementierung eigener Pipes• Überwachung bzw. Steuerung des Netzes
- Zugriff über Interface PeerGroup:EndpointService getEndpointService();
![Page 49: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/49.jpg)
4919.05.04 49
P2P – JXTA – Peer Endpoint API
Filter Listener
- zum Manipulieren oder Blockieren von Nachrichten
- Registrieren in EndpointService void addIncomingMessageFilterListener(
MessageFilterListener listener,String namespace,String name);
- Interface MessageFilterListener Message filterMessage(Message message,
EndpointAddress srcAddr,EndpointAddress dstAddr);
![Page 50: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/50.jpg)
5019.05.04 50
P2P – JXTA – Peer Endpoint API
Ping
boolean ping(EndpointAddress addr);
- prüft Erreichbarkeit eines Peers
- ist unabhängig vom benutzten Protokoll
- unterscheidet sich vom traditionellen Netzwerk-Ping
• einzige Information: true oder false
• Verlässlichkeit hängt vom Protokoll ab
![Page 51: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/51.jpg)
5119.05.04 51
P2P – JXTA – Peer Endpoint API
Endpoint Messenger
- zum Senden von Nachrichten an einen Endpoint
- Messenger getMessenger(EndpointAddress addr)
- Interface Messengerboolean sendMessage(Message msg)
throws IOException;void close();
- entspricht OutputPipe (→ Pipe Binding)
![Page 52: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/52.jpg)
5219.05.04 52
P2P – JXTA – Peer Endpoint API
Endpoint Listener
- Registrieren in EndpointService boolean addIncomingMessageListener(
EndpointListener listener,String serviceName,String serviceParam);
- Interface EndpointListener void processIncomingMessage(
Message message,EndpointAddress srcAddr,EndpointAddress dstAddr);
![Page 53: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/53.jpg)
53
1) Einführung2) Welche Protokolle gibt es?3) Peer Discovery Protocol API 4) Peer Resolver Protocol API 5) Peer Membership Protocol API6) Peer Information Protocol API7) Pipe Binding Protocol API 8) Peer Endpoint Protocol API
9) Beispiel
P2P – JXTA – Überblick
![Page 54: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/54.jpg)
5420.05.04 54
P2P – JXTA – Beispiel: Peer Group Discovery
Beispielprogramm: Peer Group Discovery
- Programmablauf
• Verbinden mit Rendezvous-Peer• Senden einer DiscoveryRequest-Message• Auflistung aller Peers der gefundenen PeerGroups
- Quelle
Sun Microsystems, Project JXTA 2.0: Java Programmers Guide, 2003, Seiten 39-43
http://www.jxta.org/docs/JxtaProgGuide_v2.pdf http://www.jxta.org/ProgGuideExamples.zip
![Page 55: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/55.jpg)
5520.05.04 55
P2P – JXTA – Beispiel: Peer Group Discovery
Start JXTA I
public class GroupDiscoveryDemoimplements DiscoveryListener {
static PeerGroup netPeerGroup = null; private DiscoveryService discovery; private RendezVousService rdv;
private void startJxta() { try { netPeerGroup =
PeerGroupFactory.newNetPeerGroup(); } catch ( PeerGroupException e) {...}
![Page 56: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/56.jpg)
5620.05.04 56
P2P – JXTA – Beispiel: Peer Group Discovery
Start JXTA II
discovery = netPeerGroup.getDiscoveryService(); rdv = netPeerGroup.getRendezVousService();
//Wait until we connect to a rendezvous peer System.out.print("Waiting to connect..."); while (! rdv.isConnectedToRendezVous()) { try { Thread.sleep(2000); } catch (InterruptedException ex) {} } System.out.println("connected!");}
![Page 57: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/57.jpg)
5720.05.04 57
P2P – JXTA – Beispiel: Peer Group Discovery
Discovery Message
public void run() {
try { // Register as a DiscoveryListener discovery.addDiscoveryListener(this);
while (true) { System.out.println("Sending a Dis... // look for any peer group discovery.getRemoteAdvertisements(null,
DiscoveryService.GROUP,null,null,5); ... // 60 Sekunden warten }
![Page 58: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/58.jpg)
5820.05.04 58
P2P – JXTA – Beispiel: Peer Group Discovery
Discovery Listener I
public void discoveryEvent(DiscoveryEvent ev){
DiscoveryResponseMsg res = ev.getResponse(); String name = "unknown";
// Get the responding peer's advertisement PeerAdvertisement peerAdv =
res.getPeerAdvertisement();
// some peers may not respond with peerAdv if (peerAdv!=null) name = peerAdv.getName();
System.out.println (" Got a Di..." + name);
![Page 59: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/59.jpg)
5920.05.04 59
P2P – JXTA – Beispiel: Peer Group Discovery
Discovery Listener II
// now print out each discovered peer group PeerGroupAdvertisement adv = null; Enumeration enum = res.getAdvertisements();
if (enum != null ) { while (enum.hasMoreElements()) { adv = (PeerGroupAdvertisement)
enum.nextElement(); System.out.println(...+ adv.getName()); } } }
![Page 60: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/60.jpg)
6020.05.04 60
P2P – JXTA – Beispiel: Peer Group Discovery
Main
static public void main(String args[]) {
GroupDiscoveryDemo myapp = new GroupDiscoveryDemo();
myapp.startJxta(); myapp.run();
}
}
![Page 61: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/61.jpg)
6120.05.04 61
P2P – JXTA – Beispiel: Peer Group Discovery
AusgabeWaiting to connect to rendezvous...connected!
Sending a Discovery messageGot a Discovery Response [3 elements]
from peer : unknownPeer Group = footballPeer Group = mygroupPeer Group = baseball
Sending a Discovery messageGot a Discovery Response [2 elements] from ...Peer Group = testgroup1Peer Group = soccer
![Page 62: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/62.jpg)
62
Daniel Brookshier, Darren Govoni, Navaneeth Krishnan, Juan Carlos Soto: JXTA: Java™ P2P ProgrammingSams Publishing, March 22, 2002http://java.sun.com/developer/Books/networking/jxta/jxtap2pch03.pdf
Oliver Steinhauer: JXTA Seminar, FU Gießen-Friedberg, SS03
Kai Wolter: JXTA, Universität Paderborn, 2002
Brendon J. Wilson, JXTA, New Riders, 2002
www.developer.com
www.jxta.org
www.net-lexikon.de
P2P – JXTA – Quellen
![Page 63: mit Java implementiert (Java 2 Standard Edition)](https://reader034.vdocument.in/reader034/viewer/2022051115/568149e9550346895db71545/html5/thumbnails/63.jpg)
63
The End…
Nicole Hänelt, Mike Rohland,
Julia Schenk, Rafael Grote
P2P Seminar – JXTA im Detail