JCO startServers() mit Pooldatei?

Rund um Java und SAP®.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

JCO startServers() mit Pooldatei?

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
Hi,
ich habe bisher nur die Möglichkeit gefunden, direkt im Quellcode den/die Server einzutragen.

Code: Alles auswählen.

srv[0] = new Server("IP-Adresse","3302","Name",repository);
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

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von LoLo ( / / 0 / 3 ) »
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: Alles auswählen.

public void load(InputStream in)
  throws IOException
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

Beitrag von LoLo ( / / 0 / 3 ) »
Hier noch ein Beispiel für die Verschlüsselung von Datenströmen:

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

Ciao, LoLo

noch ne Frage

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
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: Alles auswählen.

FileInputStream fis = new FileInputStream(filename);
Properties p = new Properties();
p.load(fis);
System.out.println(p.getProperty("Name"));
p.list(System.out);
bekomme ich als Ergebnis nur: "wir" :-(
Aber das werde ich schon noch herausbekommen.

steffi

Beitrag von Tim (ForumUser / 91 / 0 / 0 ) »
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: Alles auswählen.

Name1=ich
Name2=du
Name3=wir
ciao,
Tim

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
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

Beitrag von LoLo ( / / 0 / 3 ) »
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

Beitrag von steffi_ma (ForumUser / 55 / 0 / 0 ) »
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: Alles auswählen.

JCO.Server srv[] = new JCO.Server[1];
srv[0] = new Server("IP-Adresse","gws","Name",repository);
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: Alles auswählen.

JCO.Server srv[] = new JCO.Server[3];
srv[0] = new Server("IP-Adresse","gws","Name",repository);
srv[1] = new Server("IP-Adresse","gws","Name",repository);
srv[2] = new Server("IP-Adresse","gws","Name",repository);
mein Problem ist nur, wie bekomme ich die Daten zur Laufzeit aus einer Datei?
steffi

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.