Call web service in handleGpioPinDigitalStateChangeEvent? - Raspberry Pi Forums


dear forumers!

i'd call webservice when pir sensor active.
created web service call wsimport:
wsimport -keep -s src http://webservicex.net/geoipservice.asmx?wsdl

wrote test application. in code call service on start, , call again when pir sensor gettig active.
first calling right, when try call on handlegpiopindigitalstatechangeevent method of gpiopinlistenerdigital object i've got nullpointerexception in pi4j-gpio-event-executor-0.

code: select all

package me.losadrian.pirel;  import com.pi4j.io.gpio.gpiocontroller; import com.pi4j.io.gpio.gpiofactory; import com.pi4j.io.gpio.gpiopindigitalinput; import com.pi4j.io.gpio.gpiopindigitaloutput; import com.pi4j.io.gpio.pinpullresistance; import com.pi4j.io.gpio.pinstate; import com.pi4j.io.gpio.raspipin; import com.pi4j.io.gpio.event.gpiopindigitalstatechangeevent; import com.pi4j.io.gpio.event.gpiopinlistenerdigital;  import net.webservicex.geoip; import net.webservicex.geoipservice; import net.webservicex.geoipservicesoap;  public class app {     public static void main(string[] args) {          geoipservice service = new geoipservice();         geoipservicesoap client = service.getgeoipservicesoap();         geoip geoip = client.getgeoip("74.125.239.142");         system.out.println(geoip.getcountryname());          final gpiocontroller gpiopir = gpiofactory.getinstance();         final gpiopindigitalinput sensorpir = gpiopir.provisiondigitalinputpin(raspipin.gpio_07, pinpullresistance.pull_down);          final gpiocontroller gpiorel1 = gpiofactory.getinstance();                    final gpiopindigitaloutput rel1 = gpiorel1.provisiondigitaloutputpin(raspipin.gpio_08, "rel", pinstate.high);                  final gpiocontroller gpiorel2 = gpiofactory.getinstance();                    final gpiopindigitaloutput rel2 = gpiorel2.provisiondigitaloutputpin(raspipin.gpio_09, "rel", pinstate.high);                   rel1.high();         rel2.high();          sensorpir.addlistener(new gpiopinlistenerdigital() {              public void handlegpiopindigitalstatechangeevent(gpiopindigitalstatechangeevent event) {                 if (event.getstate().ishigh()) {                     system.out.println("motion!!");                     geoipservice service = new geoipservice();                     geoipservicesoap client = service.getgeoipservicesoap();                     geoip geoip = client.getgeoip("74.125.239.142");                     system.out.println(geoip.getcountryname());                     rel1.low();                     rel2.high();                 }                 if (event.getstate().islow()) {                     system.out.println("quiet...");                     rel1.high();                     rel2.low();                 }             }         });          try {             (;;) {                 thread.sleep(3000);             }         } catch (final exception e) {             system.out.println(e.getmessage());         }      } } 
console output is:

code: select all

pi@raspberrypi ~ $ sudo java -jar pirel.jar  united states motion!! exception in thread "pi4j-gpio-event-executor-0" java.lang.nullpointerexception 	at com.sun.xml.internal.ws.client.clientcontainer$1.getresource(clientcontainer.java:45) 	at com.sun.xml.internal.ws.assembler.metroconfigloader.locateresource(metroconfigloader.java:220) 	at com.sun.xml.internal.ws.assembler.metroconfigloader.locateresource(metroconfigloader.java:230) 	at com.sun.xml.internal.ws.assembler.metroconfigloader.init(metroconfigloader.java:125) 	at com.sun.xml.internal.ws.assembler.metroconfigloader.<init>(metroconfigloader.java:104) 	at com.sun.xml.internal.ws.assembler.tubelineassemblycontroller.gettubecreators(tubelineassemblycontroller.java:78) 	at com.sun.xml.internal.ws.assembler.metrotubelineassembler.createclient(metrotubelineassembler.java:103) 	at com.sun.xml.internal.ws.client.stub.createpipeline(stub.java:328) 	at com.sun.xml.internal.ws.client.stub.<init>(stub.java:295) 	at com.sun.xml.internal.ws.client.stub.<init>(stub.java:228) 	at com.sun.xml.internal.ws.client.stub.<init>(stub.java:243) 	at com.sun.xml.internal.ws.client.sei.seistub.<init>(seistub.java:84) 	at com.sun.xml.internal.ws.client.wsservicedelegate.getstubhandler(wsservicedelegate.java:814) 	at com.sun.xml.internal.ws.client.wsservicedelegate.createendpointifbaseproxy(wsservicedelegate.java:803) 	at com.sun.xml.internal.ws.client.wsservicedelegate.getport(wsservicedelegate.java:436) 	at com.sun.xml.internal.ws.client.wsservicedelegate.getport(wsservicedelegate.java:404) 	at com.sun.xml.internal.ws.client.wsservicedelegate.getport(wsservicedelegate.java:386) 	at javax.xml.ws.service.getport(service.java:119) 	at net.webservicex.geoipservice.getgeoipservicesoap(geoipservice.java:72) 	at me.losadrian.pirel.app$1.handlegpiopindigitalstatechangeevent(app.java:42) 	at com.pi4j.io.gpio.tasks.impl.gpioeventdispatchtaskimpl.run(gpioeventdispatchtaskimpl.java:66) 	at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) 	at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) 	at java.lang.thread.run(thread.java:744) quiet... 
have idea how change code?

thank in advance can provide.

adrian

it looks sequence:

code: select all

geoipservice service = new geoipservice(); service.getgeoipservicesoap(); 
fail if run twice inside same application.

code work once if once inside event handler?


raspberrypi



Comments

Popular posts from this blog

Connecting Raspberry Pi 2 to P10(1R)-V706 LED Dot Matrix - Raspberry Pi Forums

TypeError: <unknown> is not a numpy array - Raspberry Pi Forums

datso and removing imagetitle - Joomla! Forum - community, help and support