Axis2 Probleme NoClassDefFoundError

Keljor

Grünschnabel
Hi Leute!

Hab' mich gerade hier angemeldet weil ich ein etwas ominöses Problem mit Axis2 habe. Vielleicht ein bisschen zur Vorgeschichte dieses "Projektes": Ich wurde gebeten die Konfiguration von Telefonen am Cisco-Callmanager zu automatisieren. Die Benutzerschnittstelle soll BMC sein/werden (falls das jem. kennt) und die Schnittstelle zum Callmanager nennt sich AXL (SOAP). BMC ist im Endeffekt ein etwas schlaueres Eclipse-Plugin das einerseits ein Web-Portal mit allem Schnick-Schnack zur Verfügung stellt und andererseits über Klicki-Bunti-Konfiguration diverse Datenquellen auslesen kann. Insofern dachte ich Web-Services wären schön und nachdem ich sowieso Axis für den Callmanager-Zugriff verwendete, setzte ich hier noch einen Axis2 Server auf und soweit ist auch alles in Ordnung. So zum Problem: Ich hab über die Wsdl von Cisco die benötigten Klassen erstellt und die sind auch in einem anderen Programm erfolgreich im Einsatz, sollten also kein Problem darstellen. Diese Klassen dann zum Web-Service hinzugefügt, ich initialisiere den Stub im Konstruktor meines Web-Services. Wenn ich jetzt probiere den Test-Service aufzurufen kommt es zu folgender Soap-Nachricht:

Code:
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
   <soapenv:Body>
      <soapenv:Fault>
         <soapenv:Code>
            <soapenv:Value>soapenv:Receiver</soapenv:Value>
         </soapenv:Code>
         <soapenv:Reason>
            <soapenv:Text xml:lang="en-US">java.lang.NoClassDefFoundError: com/cisco/www/AXLAPIService/AXLAPIServiceLocator</soapenv:Text>
         </soapenv:Reason>
         <soapenv:Detail/>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>



Hier der Code:

Code:
package at.xroadsnorse;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.security.Security;
import NilProvider.NilProvider;
import com.cisco.www.AXLAPIService.AXLAPIBindingStub;
import com.cisco.www.AXLAPIService.AXLAPIServiceLocator;


public class NorseService_Test {
	
	static com.cisco.www.AXLAPIService.AXLAPIBindingStub stub;

	public NorseService_Test() {
		
		Security.addProvider( new NilProvider() );
		Security.setProperty("ssl.TrustManagerFactory.algorithm","TrustAllCertificates");
		
		try {

			String ip = "";
			String port = "";
			String user = "";
			String pass = "";
			File f = new File("Credentials_CUCM.txt");

			try {
				BufferedReader br = new BufferedReader(new FileReader(f));
				ip = br.readLine();
				port = br.readLine();
				user = br.readLine();
				pass = br.readLine();
				br.close();
			}
			catch (Exception e)
			{
				System.out.println(e.getMessage());
			}
			
			AXLAPIServiceLocator loc = new AXLAPIServiceLocator ();
			
			loc.setAXLPortEndpointAddress("https://"+ip+":"+port+"/axl/");

			stub = (AXLAPIBindingStub)loc.getAXLPort();
			stub.setUsername(user);
			stub.setPassword(pass);
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}

	public String getAXLTest(String asdf)
	{
		return "Supi!";
	}
}


Hier sieht man die Ordnerstruktur im Eclipse: (File genau dort wos sein soll)

http://img411.imageshack.us/img411/928/eclipset.png


Danach hab ich auch im Aar-File das deployed wurde nochmal nachgesehen und die Klasse ist genau dort wo sie anscheinend nicht ist, Screenshot hier:

http://img404.imageshack.us/img404/7320/aar.png

Eigentlich auch genau da, wo er meckert das es nicht ist :confused:


Ja und hier noch der Test über SoapUi (links das was ich schicke, rechts eben die Antwort):

http://img821.imageshack.us/img821/5219/soap.png/



Tja und die Frage ist jetzt, warum findet er die Klasse nicht obwohl sie meiner Meinung genau da ist wo sie auch sein sollte bzw. wo er sagt das sie nicht ist :confused::confused::confused:

Ich freu' mich über jede Anregung!

Danke im Voraus

&

Freundliche Grüße

- Keljor
 
Ok und noch ein paar seltsame Dinge,...

Nachdem das aufrufen des Cisco-Webservice nicht funktioniert hat, hab ich mir gedacht ich probier mal einen etwas einfacheren Service von meinem Web-Service aus aufzurufen, dazu hab ich so einen Email-Validierungsservice gefunden und schnell mit axis2 die klassen erzeugt und als Application funktioniert das ganze einwandfrei nur wenn ich den Code in den Konstruktor von meinem Web-Service einfüge und die bereitgestellte Funktion aufrufe hängt der Aufruf ca 30 Sek und gibt mir dann folgenden SOAP-Fehler zurück:

Code:
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
   <soapenv:Body>
      <soapenv:Fault>
         <soapenv:Code>
            <soapenv:Value>soapenv:Receiver</soapenv:Value>
         </soapenv:Code>
         <soapenv:Reason>
            <soapenv:Text xml:lang="en-US">unknown</soapenv:Text>
         </soapenv:Reason>
         <soapenv:Detail/>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>


und was noch kurioser ist das nach einem Aufruf des externen Webservices ein Eintrag in meinem Axis-Server auftaucht:

http://img816.imageshack.us/img816/9341/axis.png

:confused::confused::confused:

Eigentlich sollt es doch kein Problem durch einen Web-Service einen anderen Web-Service aufzurufen oder doch?

Bin für jeden Tip dankbar

lg Keljor
 
So das Problem hat sich erledigt, ich hatte übersehen die richtigen Libaries für Axis 1.2 UND Axis2 1.5.1 in den Tomcat zu laden, und die Fehlermeldung trat nicht auf weil er diese Klasse nicht fand sondern ein Interface bzw. Klasse die er extendet bzw. implementiert,...

Trotzdem danke fürs mitlesen :)
 

Neue Beiträge

Zurück