Axis2 und wiederverwenden der Serverobjekte

J

Jizzi

Gast
Hallo,

seit einiger Zeit bastle ich ein wenig an WebServices, baue mir dafür Java-Klassen (Datenklassen und jene mit den Funktionsaufrufen) und mache anschließend ein java2wsdl etc. Das funktioniert auch soweit alles super und habe auf diesem Wege schon viele WebServices erstellt (erfolgreich ;) ).

Nun habe ich aber ein Problem:
Ich habe einen WebService names WSFlights, der das und das macht. Jetzt habe ich einen Service Weather, der etwas gänzlich anderes macht. ABER, um Service Weather ausführen zu können, brauche ich ein Datenobjekt aus dem Service Flights.
Was mache ich an solch einer Stelle?

Bsp:
Service Flights:
- public long countFlights(FlightQuery query);
- public Flights[] selectFlights(FlightQuery query);
- ....

"Flights" hat hier noch ein Unterobjekt namens "DateTime" (enthält bestimmte Datumskonventionen/Timestamps/letzter Bearbeiter etc.)


Service Weather
- public Weather getWeather(WeatherQuery query);
- public Wheater insertWeater(Weather insRecord);
- ...

"Weather" soll nun auch das Unterobjekt namens "DateTime" bekommen, ist aber ein gänzlich anderer Service.





Nun kann ich in Service Weather das "DateTime"-Objekt einfach noch einmal erzeugen via CopyPaste. Nur habe ich nachher auf dem Client das Objekt 2 oder mehrmals (einmal durch Flights und einmal durch Weather, jedoch sind beide auf dem Client unterschliedlich). Dies will ich eigentlich vermeiden, da so die Übersichtlichkeit stark leidet. Klar ist das nachher ein wenig Package gebunden und man würde die "DateTime"-Objekte anhand dessen auseinanderhalten können, aber unschön ist es dennoch.


Nun meine Frage, was kann man da machen? Kann man die Server-Objekte irgendwie so erzeugen, dass diese Klasse nur einmal existiert und auch auf dem Client nur einmal?



MfG

Jizzi
 

Keo

Mitglied
Nun meine Frage, was kann man da machen? Kann man die Server-Objekte irgendwie so erzeugen, dass diese Klasse nur einmal existiert und auch auf dem Client nur einmal?
Auf dem Server ist das kein Problem. Du hast zwei Service-Implementierungen, die auf das selbe Datenobjekt - in deinem Fall das DateTime - zurück greift. Im service.xml sind dann beide Webservices in einem aar.Archive zu definieren
Wenn du in einem Projekt auf beide Webservices (2 wsdl's) zugreifen willst, benötigst du auch zwei Clients, aus denen jeweils ein DateTime generiert werden. In diesem Fall lässt sich das nicht vermeiden. Aber du kannst mit dem Codegenerator (eclipse plugin) die Datenobjekte umbennen oder in einem anderen package legen.
 

mfernau

Bekanntes Mitglied
[...]Wenn du in einem Projekt auf beide Webservices (2 wsdl's) zugreifen willst, benötigst du auch zwei Clients, aus denen jeweils ein DateTime generiert werden[...]

Bist Du Dir da sicher? Ich meine mich entsinnen zu können, dass ich mit Hilfe des wsdl2java Generators auch die entsprechenden Klassen "entpacken" (un-wrap) kann. Diese landen dann in die entsprechenden Pakete, wo sie vorher auch schon waren. Mit anderen Worten: Wenn ich zwei unterschiedliche wsdl-Dateien habe, aus denen ich meine Stubs erzeugen lasse, würden sich die überschneidenden Klassen gegenseitig überschreiben (was in diesem Fall wohl okay wäre).

Die dazu nötigen Schalter für den wsdl2java Aufruf müssten "-or -u" sein
 
Zuletzt bearbeitet:

Keo

Mitglied
Ja, das könnte funktionieren, wenn die beiden DateTime-Objekte den gleichen Namespace haben. Da das meistens nicht der Fall ist, würde ich aus den wsdl's jeweils ein Client-Stub in unterschiedlichen packages generieren. Ist auch weniger fehleranfällig.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Axis2 Dateien lesen und schreiben - Pfade SOA 1
L [AXIS2] OutOfMemory Exception bei Übertragung von größerer Datei via Webservice SOA 3
C SSL in Tomcat mit Axis2 SOA 4
K Axis2 SOAP Logging via Client SOA 2
T Verwendung von Eclipse Projekten im Axis2 Webservice SOA 8
S AXIS2 Webservice: Umgang mit komplexen Datentypen SOA 5
S Axis2 Fault - Wie im Client auslesen? SOA 6
S Axis2 / Rampart - XML-Datei verschlüsseln & versenden SOA 14
B Axis2 Cipher Suite und Protocol einschränken SOA 2
H Axis2 dynamische URL zu WSDL SOA 2
H Axis2: XML<->DB SOA 2
T Axis2 Problem: leeres Array? SOA 1
S Axis2 MustUnderstand problem mit Boolean SOA 9
F Axis2 große Strings streamen SOA 3
A Axis2 oder 1 Ntlm Authentification SOA 5
J Axis2 und Tomcat SOA 4
T Hat AXIS2 noch Zukunft und wie REST implementieren? SOA 6
R AXIS2 u. Eclipse (Galileo) Fehler bei Serverstart SOA 2
G Stub generieren (WSDL=Axis1.4) (WSDL2JAVA=Axis2) SOA 11
H Axis2 Deployment SOA 5
R SOAP Nachrichtenaustausch zwischen Axis2-WSs SOA 5
S Exception in axis2 java2wsdl ant Task SOA 1
N Request-XML-String -> AXIS2 -> WSDL-Check -> Respon SOA 2
G Axis2 Properties SOA 6
N Axis2: Binärdateien übertragen mit JWS/RPC SOA 2
M Axis2 vs XFire vs JAX-WS SOA 4
N Axis2 - hibernate.cfg.xml - wohin? SOA 6
K Axis2 Service / deploying to Tomcat 5.5.25 / web.xml SOA 5
F Axis2 und Listen SOA 3
I Axis2 mit SSL verschlüsseln SOA 4
N Axis2 - Cliententwicklung SOA 3
G axis2 rampart 1.3 SOA 1
K Webservices mit Axis2 SOA 2

Ähnliche Java Themen

Neue Themen


Oben