Hallo Java Gemeinde,
Arbeite mich gerade mithilfe des Buches "Java Web Services mit Apache Axis2" in
Webservices ein und komme momentan einfach nicht weiter. Konnte 2 einfache
Services erstellen, die auf meinem Webserver (Tomcat 6.0.13) zur Verfügung stehen.
Der Axis Stand-Alone-Server (axis2Server.bat) läuft leider nicht aufgrund eines
"NoClassDefFoundErrors", wo ich auch nicht weiß, wie das behoben werden kann.
Der Eclipse Axis2ServiceArchiver hat ebenfalls ein Problem, wenn ich die Service.xml
Datei nicht selbst erstelle (ClassNotFound). Mglw. ein Grund für nachfolgendes Problem.
Nichtsdestotrotz erstmal der Clientcode (Buchbeispiel):
package de.axishotels.client;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.databinding.utils.BeanUtil;
import org.apache.axis2.engine.DefaultObjectSupplier;
public class AxisHotelsClient {
/**
* @param args
*/
public static void main(String[] args) throws AxisFault{
ServiceClient sender = new ServiceClient();
Options options = sender.getOptions();
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/axis2/sevices/HotelService2");
options.setTo(targetEPR);
//Operation "findHotel" aufrufen
QName opFindHotel = new QName("http://axishotels/xsd","findHotel");
//Parameter definieren
String hotelCode = "AX050";
Object[] opArgs = new Object[] { hotelCode };
//OMElement mit der Request Nachricht erzeugen
OMElement request = BeanUtil.getOMElement(opFindHotel,
opArgs, null, false, null);
//Request an Service schicken...der Aufruf erfolgt
//synchron mit dem Kommunikationsmuster IN-OUT
OMElement response = sender.sendReceive(request);
//Diese Klassen sollte der Webservice zurückliefern
Class[] returnTypes = new Class[] { Hotel.class };
//Antwort mit Hilfsroutinen in ein Qbjekt Array überführen
Object[] result = BeanUtil.deserialize(response,
returnTypes, new DefaultObjectSupplier());
//Hotel Daten ausgeben
Hotel hotel = (Hotel) result[0];
if (hotel == null)
{
System.out.println("No entry for code: " + hotelCode);
return;
}
System.out.println("Hotel Name: " + hotel.getHotelName());
}
}
Nach Ausführung erhalte ich folgende Fehlermeldung:
log4j:WARN No appenders could be found for logger (org.apache.axis2.util.Loader).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.apache.axis2.AxisFault: Transport error: 404 Error: /axis2/sevices/HotelService2
at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:298)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:192)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:327)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:206)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:374)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)
at de.axishotels.client.AxisHotelsClient.main(AxisHotelsClient.java:39)
Benutze Axis2 1.3 mit Java SDK1.6. Bin mittlerweile echt am verzweifeln!! bahnhof.gif
Dazu muss ich sagen, dass ich was Java angeht leider absoluter Newbie bin. Habe allerdings schon
viel in anderen Programmiersprachen (C/C++, Python) gemacht. Brauche Axis2 mit Java für ein
Studienprojekt und wäre euch unendlich dankbar wenn ihr mir helfen könntet
Gruß,
Markus
Arbeite mich gerade mithilfe des Buches "Java Web Services mit Apache Axis2" in
Webservices ein und komme momentan einfach nicht weiter. Konnte 2 einfache
Services erstellen, die auf meinem Webserver (Tomcat 6.0.13) zur Verfügung stehen.
Der Axis Stand-Alone-Server (axis2Server.bat) läuft leider nicht aufgrund eines
"NoClassDefFoundErrors", wo ich auch nicht weiß, wie das behoben werden kann.
Der Eclipse Axis2ServiceArchiver hat ebenfalls ein Problem, wenn ich die Service.xml
Datei nicht selbst erstelle (ClassNotFound). Mglw. ein Grund für nachfolgendes Problem.
Nichtsdestotrotz erstmal der Clientcode (Buchbeispiel):
package de.axishotels.client;
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.databinding.utils.BeanUtil;
import org.apache.axis2.engine.DefaultObjectSupplier;
public class AxisHotelsClient {
/**
* @param args
*/
public static void main(String[] args) throws AxisFault{
ServiceClient sender = new ServiceClient();
Options options = sender.getOptions();
EndpointReference targetEPR = new EndpointReference(
"http://localhost:8080/axis2/sevices/HotelService2");
options.setTo(targetEPR);
//Operation "findHotel" aufrufen
QName opFindHotel = new QName("http://axishotels/xsd","findHotel");
//Parameter definieren
String hotelCode = "AX050";
Object[] opArgs = new Object[] { hotelCode };
//OMElement mit der Request Nachricht erzeugen
OMElement request = BeanUtil.getOMElement(opFindHotel,
opArgs, null, false, null);
//Request an Service schicken...der Aufruf erfolgt
//synchron mit dem Kommunikationsmuster IN-OUT
OMElement response = sender.sendReceive(request);
//Diese Klassen sollte der Webservice zurückliefern
Class[] returnTypes = new Class[] { Hotel.class };
//Antwort mit Hilfsroutinen in ein Qbjekt Array überführen
Object[] result = BeanUtil.deserialize(response,
returnTypes, new DefaultObjectSupplier());
//Hotel Daten ausgeben
Hotel hotel = (Hotel) result[0];
if (hotel == null)
{
System.out.println("No entry for code: " + hotelCode);
return;
}
System.out.println("Hotel Name: " + hotel.getHotelName());
}
}
Nach Ausführung erhalte ich folgende Fehlermeldung:
log4j:WARN No appenders could be found for logger (org.apache.axis2.util.Loader).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.apache.axis2.AxisFault: Transport error: 404 Error: /axis2/sevices/HotelService2
at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:298)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:192)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:327)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:206)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:374)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:508)
at de.axishotels.client.AxisHotelsClient.main(AxisHotelsClient.java:39)
Benutze Axis2 1.3 mit Java SDK1.6. Bin mittlerweile echt am verzweifeln!! bahnhof.gif
Dazu muss ich sagen, dass ich was Java angeht leider absoluter Newbie bin. Habe allerdings schon
viel in anderen Programmiersprachen (C/C++, Python) gemacht. Brauche Axis2 mit Java für ein
Studienprojekt und wäre euch unendlich dankbar wenn ihr mir helfen könntet
Gruß,
Markus