# NullPointerException in WebService



## noch_anfänger (19. Mai 2010)

Hallo zusammen,

ich habe einen Server, der VariableManager heißt, und den Service

```
void 	WriteVariableBoolean(unsignedShort VariableID, boolean VarValue)
```

Wenn ich mein Programmchen laufen lasse, wird die Variable auf TRUE oder FALSE gesetzt, aber ein  NullPointerException in der Zeile mit 
	
	
	
	





```
call.invoke
```
wird ausgegeben, und dadurch der weitere Ablauf abgebrochen. Ich habe schon die anderen Services benutzt, alles läuft tadellos. Nur mit diesem stimmt etwas nicht. Was konnte den Fehler verursachen?

```
public static void main(String[] args) {
	try {
String endpoint = "http://localhost:3773/soap/VariableManager";
		Service service = new Service();
		Call call = (Call) service.createCall();
		call.setTargetEndpointAddress(new java.net.URL(endpoint));
		call.setOperationName("WriteVariableBoolean");
		call.addParameter("VariableID", Constants.XSD_UNSIGNEDSHORT, ParameterMode.IN);
		call.addParameter("VarValue", Constants.XSD_BOOLEAN, ParameterMode.IN);
		call.setReturnType(Constants.XSD_ANY);
		String result = call.invoke(new Object[] { "15495", false }).toString();
		
	} catch (Exception e) {
	    System.err.println(e.toString());
	    e.printStackTrace();
	}
	System.exit(0);
    }
```


----------



## Michael... (19. Mai 2010)

Sieht so aus also würde call.invoke(...) null zurückliefern. Und wenn man auf null eine toString() aufruft --> NPE


----------



## Nicer (19. Mai 2010)

am besten einen Debugger Einstiegspunkt vor der Zeile machen und dann schauen was da passiert und ob call.invoke null wird


----------



## noch_anfänger (19. Mai 2010)

Michael... hat gesagt.:


> Sieht so aus also würde call.invoke(...) null zurückliefern. Und wenn man auf null eine toString() aufruft --> NPE



Kann sein, da die Rückgabe von WriteVariableBoolean void ist. Danke für den Hinweis! 
Geht call.invoke() ohne toString()? Ich habe keine Möglichkeit jetzt, das auszuprobieren. Wenn ich etwas herauskriege, dann melde ich mich.


----------



## noch_anfänger (25. Mai 2010)

Der Hinweis war richtig. Noch mal der Code, der funktioniert:

```
public static void main(String[] args) {
    try {
String endpoint = "http://localhost:3773/soap/VariableManager";
        Service service = new Service();
        Call call = (Call) service.createCall();
        call.setTargetEndpointAddress(new java.net.URL(endpoint));
        call.setOperationName("WriteVariableBoolean");
        call.addParameter("VariableID", Constants.XSD_UNSIGNEDSHORT, ParameterMode.IN);
        call.addParameter("VarValue", Constants.XSD_BOOLEAN, ParameterMode.IN);
        call.setReturnType(Constants.XSD_ANY);
        call.invoke(new Object[] { "15495", false });  // Diese Zeile geändert
        
    } catch (Exception e) {
        System.err.println(e.toString());
        e.printStackTrace();
    }
    System.exit(0);
    }
```

Jetzt funktioniert alles!:toll:


----------

