# KontoManager WebService



## jaja (18. Dez 2010)

Hallo kannst du das lösen und wieviel kostet es ?
_
Schreiben Sie einen WebService, der die Logik des KontoManagers (siehe Aufgabe 2) simuliert.
Dieser speichert die Konten in der Textdatei „konto.txt“.
Der KontoManager hat folgende Funktionalitäten:


		Code:In die Zwischenablage kopieren


void  fuegeKontoHinzu(Konto input)




		Code:In die Zwischenablage kopieren


int zaehleKonten()




		Code:In die Zwischenablage kopieren


ArrayList holeAlleKonten()




		Code:In die Zwischenablage kopieren


Konto holeKonto(int kontonummer)

 
Schreiben Sie für den oben erstellten WebService einen WebService Client, der alle Methoden des WebService nutzt und die Rückgabewerte auf der Kommandozeile des Clients ausgibt.

_


----------



## JohannisderKaeufer (19. Dez 2010)

Server

```
package wskonto;

public class Konto {
	private int kontonummer;
	private int guthaben;

	public Konto() {

	}

	public Konto(int kontonummer) {
		this.kontonummer = kontonummer;
		this.guthaben = 0;
	}

	public int getKontonummer() {
		return kontonummer;
	}

	public void setKontonummer(int kontonummer) {
		this.kontonummer = kontonummer;
	}

	public int getGuthaben() {
		return guthaben;
	}

	public void setGuthaben(int guthaben) {
		this.guthaben = guthaben;
	}
}
```


```
package wskonto;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.StringTokenizer;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService
public class KontoManger {
private Map<Integer, Konto> konten = new HashMap<Integer, Konto>();
	public KontoManger(){
		loadKonten();
	}
	
	private void loadKonten() {
		try {
			Scanner scanner = new Scanner(new File("konten.txt"));
			while(scanner.hasNext()){
				StringTokenizer tokenizer = new StringTokenizer(scanner.nextLine(),";");
				Konto konto = new Konto(Integer.parseInt(tokenizer.nextToken()));
				konto.setGuthaben(Integer.parseInt(tokenizer.nextToken()));
				konten.put(konto.getKontonummer(), konto);
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
	}

	public void fuegeKontoHinzu(Konto input) {
		konten.put(input.getKontonummer(), input);
		saveKonten();
	}
	private void saveKonten() {
		try {
			FileWriter writer = new FileWriter(new File("konten.txt"));
			for(Konto konto : konten.values()){
				writer.write(konto.getKontonummer()+";"+konto.getGuthaben()+"\n");
			}
			writer.flush();
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	public int zaehleKonten(){
		return konten.values().size();
	}
	public ArrayList holeAlleKonten(){
		ArrayList<Konto> kontenliste = new ArrayList<Konto>();
		for(Konto konto : konten.values()){
			kontenliste.add(konto);
		}
		return kontenliste;
	}
	public Konto holeKonto(int kontonummer){
		return konten.get(kontonummer);
	}
	
	public static void main(String[] args){
		Endpoint endpoint = Endpoint.create(new KontoManger());
		endpoint.publish("http://localhost:8080/kontomanager");
	}
}
```

Server starten (KontoManger ausführen und WSClient-Code generieren lassen

```
wsimport -keep -s src http://localhost:8080/kontomanager?wsdl
```

Client

```
package wskonto.client;

import wskonto.Konto;
import wskonto.KontoManger;
import wskonto.KontoMangerService;

public class KontoClient {
	public static void main(String[] args) {

		KontoMangerService service = new KontoMangerService();
		KontoManger manager = service.getKontoMangerPort();
		System.out.println(manager.zaehleKonten());
		Konto konto = new Konto();
		konto.setKontonummer(3);
		konto.setGuthaben(200);
		manager.fuegeKontoHinzu(konto);
		System.out.println(manager.zaehleKonten());
		for(Object currentKonto : manager.holeAlleKonten()){
			System.out.print("KNR "+((Konto)currentKonto).getKontonummer());
			System.out.println("SALDO "+((Konto)currentKonto).getGuthaben());
		}
		Konto nummereins = manager.holeKonto(1);
		System.out.print("KNR "+((Konto)nummereins).getKontonummer());
		System.out.println("SALDO "+((Konto)nummereins).getGuthaben());
	
		
	}
}
```


Fünf minuten sind dafür aber reichlich knapp kalkuliert.


----------



## jaja (23. Dez 2010)

ih weis nicht was ich sagen soll vielen vielen dank tausen dank mehr als tausen dank  bedanke mich nochmals herzlich bin idr was schuldig


----------

