Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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;
import java.util.HashMap;
import java.util.ArrayList;
import java.lang.Thread;
import java.util.Date;
import java.util.Iterator;
/**
*
* @author JD
*/
public class TaskAdministration {
private static HashMap<Integer, Aufgabe> tasksBU = new HashMap<Integer, Aufgabe>();
private static HashMap<Integer, Aufgabe> tasksChanged = new HashMap<Integer, Aufgabe>();
//WORKS
public static String[] sendTaskList() throws Exception
{
tasksBU = TMDatabase.getAllTasks();
String[] transfer = ArraySerialization.toTaskArray(tasksBU);
return transfer;
}
//Passt Veränderungen an, löscht Tasks und speichert neue Tasks (WORKS)
public static synchronized void updateDB(String[] changedData) throws Exception
{
tasksChanged = ArraySerialization.fromTaskArray(changedData);
//Hier werden alle neuen Tasks eingepflegt
ArrayList<Aufgabe> newTasks = new ArrayList<Aufgabe>();
//SCHRITT 1
//Trenne neue von veränderten Aufgaben
Iterator 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 datenbank
Iterator it2 = tasksChanged.keySet().iterator();
//Arbeite alle Tasks ab und verändere DB, wenn nötig
while(it2.hasNext())
{
int index = (Integer) it2.next();
//ID vorhanden => Starte Vergleich
if(tasksBU.containsKey(index) && tasksChanged.containsKey(index))
{
Aufgabe a = tasksBU.get(index);
Aufgabe b = tasksChanged.get(index);
if(!a.equals(b))
{
Thread t = new Thread(new server.Threads.ThreadOverrideTObject(index, b));
t.start();
}
}
}
Iterator it3 = tasksBU.keySet().iterator();
while(it3.hasNext())
{
int index = (Integer) it3.next();
//Task gelöscht
if(tasksBU.containsKey(index) && !tasksChanged.containsKey(index))
{
//GOGOGO DROP TASK :)
Thread t = new Thread(new server.Threads.ThreadDeleteTask(index));
t.start();
}
}
//SCHRITT 3
//Speichere alle neuen Tasks ab
for(int i = 0; i < newTasks.size(); i++)
{
Aufgabe a = newTasks.get(i);
Thread t = new Thread(new server.Threads.ThreadSaveTObject(a));
t.start();
}
//SCHRITT 4
//gleiche beide Listen wieder aneinander an
tasksBU = tasksChanged;
}
public static void main(String args[])throws Exception
{
}
}
Vielleicht kann mir ja jemand helfen.. So langsam geht mir die Zeti aus