# SOAP-Client mit Axis



## coolerMietzer (10. Oktober 2007)

Hi zusammen,

Ich habe ein Problem mit Axis. Ich programmiere zur Zeit einen Eclipse-RCP-Webservice-Client, der in einem Thread (Ich weiss nicht, ob das wichtig ist) auf einen Webservice zugreifen soll. 

Ich habe es mit einem per WSDL2Java erzeugten Proxy versucht, ohne Erfolg. Dann habe ich die "unschöne" Variante, die direkt auf apache.org vorgestellt wird, verwendet:


```
try {
			String endpoint = "http://***.***.***.***:8972.......";
			System.out.println("TEST0");
			Service service = new Service();
			System.out.println("TEST1");
			Call call = (Call) service.createCall();
			System.out.println("TEST2");
			call.setTargetEndpointAddress(new java.net.URL(endpoint));
			System.out.println("TEST3");
			call.setOperationName(new QName("http://xxxxxxx.net/", "echo"));
			System.out.println("TEST4");
			Object[] myParams = new Object[1];
			System.out.println("TEST5");
			myParams[0] = (Object) new String("TestTest");

			// String result = (String) call.invoke(myParams);
			String result = (String) call.invoke(new Object[] { "Hello!" });

			System.out.println("Result: " + result);
		} catch (Exception e) {
			System.out.println(e.toString());
		}
```

Ausgegeben wird exakt nur einmal "TEST0", das heisst also, das der Thread bei 
	
	
	



```
Service service = new Service();
```
 abgebrochen wird oder das Programm sonst irgendwie hängt. Es wird ja leider auch keine Fehlermeldung ausgegeben.
Die axis.jar hatte ich zuerst nur ganz normal als external .jar eingebunden, dann direkt in JAVA_HOME/lib/ext in die JRE, weil ich das irgendwo in einem Heise-Forum gelesen habe. Hat aber auch nüscht gebracht :-(

Kann mir hier jemand helfen


----------



## coolerMietzer (10. Oktober 2007)

Ich habe jetzt noch mal ein neues Projekt aufgemacht, um einfach mal axis alleine zu testen und das Beispiel von http://ws.apache.org/axis/java/user-guide.html  dafür verwendet:

```
package axistest;

import javax.xml.namespace.QName;

import org.apache.axis.client.*;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;

public class AxisTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			String endpoint = "http://ws.apache.org:5049/axis/services/echo";

			Service service = new Service();
			Call call = (Call) service.createCall();

			call.setTargetEndpointAddress(new java.net.URL(endpoint));
			call.setOperationName(new QName("http://soapinterop.org/",
					"echoString"));

			String ret = (String) call.invoke(new Object[] { "Hello!" });

			System.out.println("Sent 'Hello!', got '" + ret + "'");
		} catch (Exception e) {
			System.err.println(e.toString());
		}

	}
}
```
Das will allerdings auch nicht funktionieren, ich bekomme folgende Fehlermeldung:

```
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/rpc/Service
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$000(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at axistest.AxisTest.main(AxisTest.java:39)
```

Als "Referenced Libraries" habe ich in Eclipse: axis.jar, commons-discovery-0-2.jar, jaxrcp.jar, saaj.jar, wsdl4j.jar und org.apache.commons.logging1.0.4***.jar


----------

