Axis2 - Client funktioniert nicht

MBR

Grünschnabel
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
 
Hallo Tom,

vorab erstmal danke für deine Antwort, gibt ein wenig Licht am Ende des Tunnels. Schlage mich jetzt schon seit einer Woche mit diesen Problemen rum und komme einfach nicht weiter...

Habe jetzt als ersten Schritt mal (vor deiner Antwort) alles deinstaliert, inkl. mehrerer jre´s und jdk´s, sowie Tomcat runtergeschmissen. Mglw. waren das was ich gemacht habe ein paar Schritte zu viel auf einmal für einen Newbie in dem Bereich. Deshalb jetzt eins nach dem anderen!

Die Instalationsanleitung kannte ich noch nicht, danke für den Hinweis, habe ich mir gerade ausgedruckt und werde jetzt danach vorgehen.

Davor habe ich allerdings noch einen Versuch gestartet mit dem Axis2 1.1 und jre 1.6.0. Wollte als erstes den Stand-Alone-Server testen. Es erschien nicht mehr die Meldung NoClassDefFoundError sondern folgendes (siehe Anhang)!!

Ein weiterer Versuch mit Axis2 1.3 ist mit obiger Fehlermeldung geendet.

Die Umgebungsvariable AXIS2_HOME habe ich in beiden Fällen korrekt gesetzt!

Werde jetzt versuchen exakt nach der Instalationsanweisung vorgehen und schauen was rauskommt. Erstes Ziel wäre es den Stand-Alone-Server ans Laufen zu bekommen, danach dann den Axis2 Webcontainer im Tomcat. Anschließend dann wieder anfangen zu coden.

Wäre dir unendlich dankbar, wenn du mir dabei beistehen könntest

Gruß,
Markus
 

Anhänge

  • Stand-Alone_Srv.gif
    Stand-Alone_Srv.gif
    16,3 KB · Aufrufe: 256
So, exakt nach Instalationsanweisung vorgegangen, leider wieder negativ (siehe Anhang).

Zum Betriebssystem steht folgendes: Getestet auf Win XP, Linux, Mac etc.

Leider nicht auf Windows2000, was mein System wäre. Kann darin eine mögliche Ursache liegen?

Gruß,
Markus
 

Anhänge

  • Ergebnis.gif
    Ergebnis.gif
    19,6 KB · Aufrufe: 129
Hallo,

bei mir funktioniert das ohne probleme:
Code:
C:\tmp>echo %AXIS2_HOME%
D:\stuff\axis\axis2-1.2

C:\tmp>%AXIS2_HOME%\bin\axis2server.bat
Using JAVA_HOME    C:\Programme\Java\jdk1.6.0_01
Using AXIS2_HOME   D:\stuff\axis\axis2-1.2
16.08.2007 15:26:47 org.apache.axis2.transport.SimpleAxis2Server main
INFO: [SimpleAxisServer] Starting
16.08.2007 15:26:47 org.apache.axis2.transport.SimpleAxis2Server main
INFO: [SimpleAxisServer] Using the Axis2 RepositoryD:\stuff\axis\axis2-1.2\repository
[SimpleAxisServer] Using the Axis2 Configuration FileD:\stuff\axis\axis2-1.2\conf\axis2.xml
16.08.2007 15:26:49 org.apache.axis2.deployment.ModuleDeployer deploy
INFO: Deploying module: addressing-1.2
16.08.2007 15:26:49 org.apache.axis2.deployment.ModuleDeployer deploy
INFO: Deploying module: soapmonitor-1.2
16.08.2007 15:26:50 org.apache.axis2.deployment.ServiceDeployer deploy
INFO: Deploying Web service: version.aar
16.08.2007 15:26:50 org.apache.axis2.transport.SimpleAxis2Server main
INFO: [SimpleAxisServer] Started
16.08.2007 15:26:50 org.apache.axis2.transport.http.server.DefaultConnectionListener run
INFO: Listening on port 8080

Ich verwende das JDK anstatt eines JRE#s wobei das hier eigentlich keinen Unterschied machen sollte. Vielleicht ist irgendwas an der AXIS Version 2.1.1 faul... mit der 2.1.2 funktionierts bei mir ohne Probleme...
Schaut irgendwie so aus als ob bei dir die StAX Bibliotheken fehlen würden.
Hast du explizit einen CLASSPATH in den Umgebungsvariablen gesetzt? -> Wenn ja rausnehmen....
Hast du irgendwas von Hand nach C:\Programme\Java\jre1.6.0_01\lib\ext geleget?

Gruß Tom
 
Hi!

So muss das also ausschauen wenn alles problemlos läuft, hoffentlich gleich auch bei mir...

Betriebssystem sollte also nicht das Problem sein, schon mal sehr erfreulich!!

CLASSPATH habe ich gesetzt, werde ich jetzt rausmachen. Von Hand kopiert habe ich nichts. Mal schauen was ohne CLASSPATH passiert. Meld mich gleich wieder...
 
So, CLASSPATH keiner mehr gesetzt, jdk_1.6.0_02 mit axis2 1.3 bringt das gleiche negative Ergebnis "java.lang.ClassNotFoundDefError"...

Versuche jetzt noch mal mit der Axis2 Version 1.2. Das einzige Mal, dass ich eine andere (leider auch negative) Ausgabe hatte war mit Axis2 1.1?!

Stehe kurz davor mein ganzes System neu aufzusetzen. Muss endlich anfangen zu coden...:(

Noch irgendwelche Ideen woran es liegen könnte?
 
Mit Axis2 1.2 erhalte ich jetzt gar keine Ausgabe mehr, zumindest keine die ich sehen kann. Das "Pause" am Ende des Scripts wird anscheinend nicht erreicht. Hatte ich auch noch nicht...

Habe allerdings zuvor gesehen, dass ich in der PATH Umgebungsvariable auch noch Verweise auf Axis2 Dir hatte. Ein Überbleibsel vergeblicher Vorversuche, jetzt entfernt.

Weiß auch nicht, programmiere mittlerweile schon etliche Jährchen, aber sowas wie dies habe ich all die Zeit nie durchmachen müssen...:confused:
 
Hallo nochmal,

habe mich dazu entschlossen das System übers WE neu aufzuziehen, XP anstelle von 2000, so langsam ist es eh an der Zeit...

Werde danach einen erneuten Versuch mit hoffentlich mehr Erfolg starten.

Erstmal danke für deine Hilfe bis hier hin und ein schönes WE!

Beste Grüße,
Markus
 
Hallo!

So, neues System und neues Glück! Siehe da, alles funktioniert ohne Probleme, warum auch immer...

Scheint also unter Umständen Probleme mit Win2K zu geben, genaue Ursache konnte ich leider nicht ausmachen. Mit XP lief der Stand-Alone-Server beim ersten Versuch problemlos!

Danke nochmal für die Hilfe und frohes Schaffen...

Gruß,
Markus
 
Zurück