Problem Web Service aufrufen, brauche DRINGEND Hilfe

mcaro

Grünschnabel
Hallo,
ich bin noch relativ neu was Web Services und Java angeht und bräuchte Hilfe, weil ich nicht weiter komme.

Ich habe bisher einen Web Service erstellt der mir folgende Daten zurückliefert:

• Bestellnummer (String 6),
• Artikelbezeichnung (String 20),
• Bestellvolumen (Double 8.2),
• KundenNummer (Integer 4)

Einträge für KundenNummer sind limitiert auf: 4711 bis 4719
Beim Aufruf werden die Datensätze erstellt über eine HashMap.

Ich habe folgende Klassen:

Klasse Bestellung:
Java:
package web.service;

public class Bestellung {
private String bestellnummer;
private String artikelbezeichnung;
private double bestellvolumen;
private int kundennummer;

public Bestellung(String artikelb, double bestellv,
		int kundennr) {

	setArtikelbezeichnung(artikelb);
	setBestellvolumen(bestellv);
	setKundennummer(kundennr);
	
	
	
}

public String getBestellnummer() {
	return bestellnummer;
}

public void setBestellnummer(String bestelln) {
	bestellnummer = bestelln;
}

public String getArtikelbezeichnung() {
	return artikelbezeichnung;
}

public void setArtikelbezeichnung(String artikelb) {
	artikelbezeichnung = artikelb;
}

public double getBestellvolumen() {
	return bestellvolumen;
}

public void setBestellvolumen(double bestellv) {
	bestellvolumen = bestellv;
}

public int getKundennummer() {
	return kundennummer;
}

public void setKundennummer(int kunden) {
	kundennummer = kunden;
}


}
Klasse BestellungServiceimpl:
Java:
package web.service;

import java.util.*;

import javax.jws.WebMethod;
import javax.jws.WebService;


@WebService(targetNamespace = "http://service.web/", endpointInterface = "web.service.BestellungService", portName = "BestellungServiceimplPort", serviceName = "BestellungServiceimplService")
public class BestellungServiceimpl implements BestellungService {

	@Override
	@WebMethod
	public Bestellung getBestellungen(String bestelln) {
		HashMap<String, Bestellung> bestellungen =  new HashMap<String, Bestellung>();
		
		bestellungen.put("123000", new Bestellung("Wasser", 100.0,4711));
		bestellungen.put("124000", new Bestellung("Fanta", 100.0,4712));
		bestellungen.put("125000", new Bestellung("Cola", 100.0,4713));
		bestellungen.put("126000", new Bestellung("Sprite", 100.0,4714));
		bestellungen.put("127000", new Bestellung("Spezi", 100.0,4715));
		bestellungen.put("128000", new Bestellung("Limo", 100.0,4716));
		bestellungen.put("129000", new Bestellung("Kaffee", 100.0,4717));
		bestellungen.put("130000", new Bestellung("Bier", 100.0,4718));
		bestellungen.put("131000", new Bestellung("Tee", 100.0,4719));
		
	Set<String> mySet = bestellungen.keySet();
	Iterator<String> i = mySet.iterator();

	while(i.hasNext()){
		
		String x = (String) i.next();
		if (x.equals(bestelln)){
			
			return bestellungen.get(x);
		}
	
		
	}
	return null;
	
	}

}
Klasse Bestellung:
Java:
package web.service;

import javax.jws.*;

@WebService

public interface BestellungService {
	
@WebMethod

public Bestellung getBestellungen(String bestelln);

}
Und folgenden Client:
Java:
package client;

import web.service.*;
import web.service.BestellungServiceimplService;

public class Client {
	
public static void main(String[] args){
	
	
	BestellungServiceimplService a = new BestellungServiceimplService();
	
	BestellungService b = a.getBestellungServiceimplPort();
	
	Bestellung c = new Bestellung();
	
	c = b.getBestellungen("123000"); 
	
	System.out.println(c.getArtikelbezeichnung());
	System.out.println(c.getBestellnummer());
	System.out.println(c.getBestellvolumen());
	System.out.println(c.getKundennummer());
	
}

}
Jetzt soll die Aufgabe aber erweitert werden.

Unter der URL http://i83lp1.informatik.tu-muenchen.de:50000/DEVA000_cusBService/DEVA000_cusB?wsdl
ist eine WSDL-Beschreibung für den Web Service CustomerService, der Kundendaten verwaltet und
dazu folgende Services anbietet:

• createCustomer: Einfügen eines Kundenstammsatzes
• getCustomer: Lesen eines Kundenstammsatzes unter Vorgabe der Kundennummer
• updateCustomer: Modifizieren eines Kundenstammsatzes
• getAllCustomers: Liste aller Kundenstammsätze

Aufbau des einzelnen Datensatzes „Kunde“
• ID: Kundennummer (Integer 4),
• Name (String 20),
• city: Stadt
• orderVol: Bestellvolumen (Double 8.2),
• BLZ (String 8)

Exisistieren Kundennummern 4711 bis 4719.
Das Client-Programm von oben soll erweitert werden, so dass ausgehend von der Vorgabe einer
Bestellnummer die Kundennummer des Bestellers geliefert und mit Hilfe des neuen Web Services sodann das
Datenfeld BLZ des Kunden ermittelt und ausgeben wird.


Ich habe leider keinen Ansatz wie ich das bewerkstelligen soll.

Bitte um Hilfe.

Danke für eure Zeit im Voraus.
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

hier mal eine kleine Hilfestellung:

Du kannst mittels des Tools wsimport (findet sich im bin-Verzeichnis deines JDKs)
die nötigen Artefakte für den Webservice erzeugen.

Code:
c:\TEMP\java_ws>wsimport -Xnocompile -d . http://i83lp1.informatik.tu-muenchen.de:50000/DEVA000_cusBService/DEVA000_cusB?wsdl
parsing WSDL...
Generating code...

Diesen Code kannst du dann in dein Projekt kopieren und mitkompilieren.

Anschließend kannst du den erzeugten Webservice Client wie folgt verwenden:
Java:
package de.tutorials.training.ws;

import com.sap.nwce.ejb.service.Customer;
import com.sap.nwce.ejb.service.DEVA000CusB;
import com.sap.nwce.ejb.service.DEVA000CusBService;

public class Client {
    
    public static void main(String[] args) throws Exception {

        DEVA000CusB customerService = new DEVA000CusBService().getDEVA000CusBPort();
        Customer customer = customerService.getCustomer(4711);
        System.out.println(customer.getBLZ());
    }
}

Das sollte dir weiterhelfen :)

Gruß Tom
 
Hallo nochmal,

es gibt noch eine kleine Erweiterung der vorangegangen Aufgabe.

Es gibt über die URL http://www.webservicex.net/CurrencyConvertor.asmx?wsdl einen WSDL-Beschreibung für einen Web Service der z.B Wechselkurs von Euro zu einer Fremdwährung liefert.
Das Bestellvolumen des Kunden soll jetzt in eine frei wählbare Währung umgerechnet und angezeigt werden.
Das vorhergehende Programm soll so erweitert werden, dass die beiden vorhergehenden Services nun mit

diesem neuen Service zu einem kleinen Ablauf vereint werden.


Wenn man einen fertigen Java Code sieht, dann kann ich den langsam nachvollziehen, aber ich finde es schwer immer von selbst drauf zu kommen.
Es ist zum Zähne ausbeißen.


Kann mir da jemand wieder weiterhelfen?

Liebe Grüße

Marco
 

Neue Beiträge

Zurück