Hallo zusammen.
Zunächst das Positive, Pojos erstellt, in ein aar-Archiv gepackt und der Service schient auch erreichbar zu sein. Zumindest sagt mir das axis2 imTomcat. Dann flugs die wsdl genriert (Eclipse Plugin) und daraus den Client-Code, ebenfalls wieder mit dem Eclipse Plugin. Klappt auch alles. So, jetzt aber: Welche jars müssen zusätzlich noch eingebunden werden (also ich nehm erstmal alle aus dem axis2-lib)?
Und dann gab es noch Probleme mit dem Build - der funktioniert anscheinend nicht mehr, nachdem ich die jars eingebunden hatte. AxisFault cannot reseloved to a type... oh man, das war mein Sonntagnachmittag
Zumindest die obigen Probleme sind wohl nun gelöst, die AutoGen ist mit Vorsicht zu genießen, wenn man Neuling ist, aber hier das nächste Problem:
Exception in thread "main" org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method findHotel
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at de.axishotels.HotelServiceStub.findHotel(HotelServiceStub.java:432)
at de.axishotels.AxisHotelAnfrage.main(AxisHotelAnfrage.java:25)
Code:
HotelServiceStub stub = new HotelServiceStub("http://localhost:8080/axis2/services/HotelServiceWS");
// Request erzeugen
FindHotel findHotel = new FindHotel();
findHotel.setHotelCode("AX001");
// Service aufrufen
Hotel hotel = stub.findHotel(findHotel).get_return();
Wie hast du das Problem denn gelöst? Bei mir kommt der gleiche Error. Ich hab n bisschen gelesen und anscheinend liegts an der service.xml
BTW: Axis läuft, die .aar wird angenommen und Methoden, die nur eine Antwort erfordern (Wenn ich mir ein Array vom Server holen möchte) funktionieren. Nur das Zurücksenden leider nicht.
Fehlermeldung:
org.apache.axis2.AxisFault: java.lang.UnsupportedOperationException: An access occurred that is not valid.
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:517)
at org.apache.axis2.description.RobustOutOnlyAxisOperation$RobustOutOnlyOperationClient.handleResponse(RobustOutOnlyAxisOperation.java:91)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
Die Methode, die vom Server aus aufgerufen werden soll kommt aus folgender Klasse:
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/package server;importjava.util.HashMap;importjava.util.ArrayList;importjava.lang.Thread;importjava.util.Date;importjava.util.Iterator;/**
*
* @author JD
*/publicclassTaskAdministration{privatestaticHashMap<Integer,Aufgabe> tasksBU =newHashMap<Integer,Aufgabe>();privatestaticHashMap<Integer,Aufgabe> tasksChanged =newHashMap<Integer,Aufgabe>();//WORKSpublicstaticString[]sendTaskList()throwsException{
tasksBU =TMDatabase.getAllTasks();String[] transfer =ArraySerialization.toTaskArray(tasksBU);return transfer;}//Passt Veränderungen an, löscht Tasks und speichert neue Tasks (WORKS)publicstaticsynchronizedvoidupdateDB(String[] changedData)throwsException{
tasksChanged =ArraySerialization.fromTaskArray(changedData);//Hier werden alle neuen Tasks eingepflegtArrayList<Aufgabe> newTasks =newArrayList<Aufgabe>();//SCHRITT 1//Trenne neue von veränderten AufgabenIterator it = tasksChanged.keySet().iterator();while(it.hasNext()){int index =(Integer) it.next();Aufgabe a = tasksChanged.get(index);if(a.getWorkerOnTask().equals("newTask")){
a.setWorkerOnTask("Nobody");
newTasks.add(a);
tasksChanged.remove(index);}}//SCHRITT 2//Überprüfe alle Objekte in HashMap auf Veränderungen und übernehme diese in der datenbankIterator it2 = tasksChanged.keySet().iterator();//Arbeite alle Tasks ab und verändere DB, wenn nötigwhile(it2.hasNext()){int index =(Integer) it2.next();//ID vorhanden => Starte Vergleichif(tasksBU.containsKey(index)&& tasksChanged.containsKey(index)){Aufgabe a = tasksBU.get(index);Aufgabe b = tasksChanged.get(index);if(!a.equals(b)){Thread t =newThread(new server.Threads.ThreadOverrideTObject(index, b));
t.start();}}}Iterator it3 = tasksBU.keySet().iterator();while(it3.hasNext()){int index =(Integer) it3.next();//Task gelöschtif(tasksBU.containsKey(index)&&!tasksChanged.containsKey(index)){//GOGOGO DROP TASK :)Thread t =newThread(new server.Threads.ThreadDeleteTask(index));
t.start();}}//SCHRITT 3//Speichere alle neuen Tasks abfor(int i =0; i < newTasks.size(); i++){Aufgabe a = newTasks.get(i);Thread t =newThread(new server.Threads.ThreadSaveTObject(a));
t.start();}//SCHRITT 4//gleiche beide Listen wieder aneinander an
tasksBU = tasksChanged;}publicstaticvoidmain(String args[])throwsException{}}
Vielleicht kann mir ja jemand helfen.. So langsam geht mir die Zeti aus