JCO startServers() mit Pooldatei?

Rund um Java und SAP®.

JCO startServers() mit Pooldatei?

Postby William4545 » Mon Nov 08, 2004 3:24 pm

Hi,
ich habe bisher nur die Möglichkeit gefunden, direkt im Quellcode den/die Server einzutragen.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. srv[0] = new Server("IP-Adresse","3302","Name",repository);
GeSHi ©

Gibt es die Möglichkeit, das über eine Datei zu regeln?
Also ich will eine Applikation erstellen, womit man die Serverdaten verschlüsselt in eine Datei schreibt. Diese Datei soll dann im server-programm eingelesen werden.

Beim Clientaufruf gibt es ja den JCO.getClientPoolManager.

Ideen?
Steffi
William4545
..
..
 
Posts: 55
Joined: Tue Jul 13, 2004 11:40 am

Postby Philippa2744 » Tue Nov 09, 2004 9:39 am

Moin Steffi,

ich würde überlegen, die Klasse Properties aus dem JDK zu benutzen. Damit kannst Du vom Datenträger eine Datei mit bestimmten Einstellungen (Parametern) laden. Dort kannst Du prinzipiell alle Informationen zur Serveranmeldung hinterlegen.

Die Klasse Properties hat die Methode load, damit kannst Du die Datei vom Datenträger lesen.
Du mußt dazu einen InputStream übergeben:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. public void load(InputStream in)
  2.   throws IOException
  3.  
GeSHi ©


Der Aufbau der Properties-Datei ist im übrigen äußerst simpel. Es handelt sich um eine einfache Textdatei mit Schlüssel, Wert. Z.B.:

Servername=localhost
Username=Lothar
... usw.

Bezüglich Verschlüsselung könntest Du die Werte Deiner Properties-Datei verschlüsseln und nach dem Laden wieder entschlüsseln. Java bietet auch dazu entsprechende Mechanismen. (Ab JDK 1.4 die Packages java.security und java.security.spec). Daneben gibt es noch allerlei opensource-packages bzw. von kommerziellen Anbietern.

Ciao, LoLo
Philippa2744
...
...
 
Posts: 303
Joined: Fri Mar 07, 2003 5:17 pm

Postby Philippa2744 » Tue Nov 09, 2004 9:43 am

Hier noch ein Beispiel für die Verschlüsselung von Datenströmen:

http://www.galileocomputing.de/openbook ... tenstromen

Ciao, LoLo
Philippa2744
...
...
 
Posts: 303
Joined: Fri Mar 07, 2003 5:17 pm

noch ne Frage

Postby William4545 » Tue Nov 09, 2004 11:08 am

Hallo LoLo,
die Klasse Properties ist genau das, was ich suchte. Danke Dir.
Noch knobele ich an der Sache, dass immer nur das letzte Wertepaar genommen wird, statt alle.
zb meine Textdatei:
Name=ich
Name=du
Name=wir

wenn ich dann folgendes nehme:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FileInputStream fis = new FileInputStream(filename);
  2. Properties p = new Properties();
  3. p.load(fis);
  4. System.out.println(p.getProperty("Name"));
  5. p.list(System.out);
GeSHi ©

bekomme ich als Ergebnis nur: "wir" :-(
Aber das werde ich schon noch herausbekommen.

steffi
William4545
..
..
 
Posts: 55
Joined: Tue Jul 13, 2004 11:40 am

Postby Christian4831 » Tue Nov 09, 2004 12:09 pm

Hi,

der key, also in deinem Fall "Name", muss eindeutig sein, darf also nur einmal vergeben werden. Ansonsten überschreibt der letzte Eintrag die vorherigen. Daher müsstest du deine key/value Paare immer in folgender Art und Weise aufbauen:

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. Name1=ich
  2. Name2=du
  3. Name3=wir
  4.  
GeSHi ©


ciao,
Tim
Christian4831
..
..
 
Posts: 91
Joined: Mon Dec 02, 2002 7:33 pm

Postby William4545 » Tue Nov 09, 2004 12:37 pm

hm, das ist natürlich dumm.

Wie kann ich das denn sonst lösen? Über die Datei rüberlaufen lassen und vergleichen nach like "name"??
und dann
statt: System.out.println(p.getProperty("Name"));
ein: System.out.println(p.getProperty(gefundenerLikeWert));
ist aber auch blöd! Es muss doch eine einfachere Möglichkeit geben, diese Sachen auszulesen.

steffi
William4545
..
..
 
Posts: 55
Joined: Tue Jul 13, 2004 11:40 am

Postby Philippa2744 » Tue Nov 09, 2004 1:08 pm

Moin Steffi,

muß ehrlich gestehen, daß ich Dein jetziges Problem nicht so ganz verstehe :-)

Wenn Du eine pooled Connection aufmachen willst, benötigst Du im wesentlichen den server, mandant, user und passwort.
Das sind die keys für Deine Properties-Datei, die Du mit den entsprechenden Werten ablegst.

Wenn Du die Properties-Datei hochlädst, brauchst Du Dir nur die Werte mit den entsprechenden Keys holen.

Falls mehrere Werte hinterlegt werden sollen, würde ich die Keys eben entsprechend durchnummerieren.
Hoffe, das hilft Dir weiter.

Ciao, LoLo
Philippa2744
...
...
 
Posts: 303
Joined: Fri Mar 07, 2003 5:17 pm

Postby William4545 » Tue Nov 09, 2004 1:24 pm

hi LoLo,
ich will nicht von java auf sap. da kann man ja den JCO.getClientPoolManager verwenden.
ich muss mehrere Sap-Systeme auf mein java-Programm zugreifen lassen. Und die muss ich mit
gateway, gatewayService und programID bisher hart ins java-programm reincodieren.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. JCO.Server srv[] = new JCO.Server[1];
  2. srv[0] = new Server("IP-Adresse","gws","Name",repository);
GeSHi ©
da ich aber zu entwicklungszeiten nicht weiss, welche sap-systeme sich anmelden wollen, muss ich das dynamisch lassen. also zur laufzeit sollen dann die sapsysteme reincodiert werden, die benötigten Daten sind in einer Datei vorhanden.
Der Code kann dann zur laufzeit zb so aussehen
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. JCO.Server srv[] = new JCO.Server[3];
  2. srv[0] = new Server("IP-Adresse","gws","Name",repository);
  3. srv[1] = new Server("IP-Adresse","gws","Name",repository);
  4. srv[2] = new Server("IP-Adresse","gws","Name",repository);
GeSHi ©


mein Problem ist nur, wie bekomme ich die Daten zur Laufzeit aus einer Datei?
steffi
William4545
..
..
 
Posts: 55
Joined: Tue Jul 13, 2004 11:40 am


Return to Java & SAP®

Who is online

Users browsing this forum: No registered users and 6 guests