Web Service SOAP NullPointer erreur
Bonjour à tous.
Je débute dans le développement de web service et je n’arrive pas à ajouter, modifier et supprimer des entités depuis mon client vers ma db en passant un service SOAP.
J’ai créé un projet Entreprise Applicaion avec un Module EJB et une Application Web avec Glassfish 4 pour serveur.
Dans mon module EJB j’ai importé mes entités depuis ma db et créé un session bean pour requêter dans ma db.
Dans mon application web, j’ai ajouté un service web en indiquant mon bean de mon module ejb ce qui m’a générer automatiquement les méthodes.
Dans un client java, j’ajoute un web service client en lui indiquant l’url wsdl de mon web service. Lorsque j’appelle les méthodes GET, il n’y a aucun problèmes, je récupère bien les données de ma db. Par contre lorsque je veux modifier, ajouter ou supprimer une entité, j’obtiens une erreur NullPointer de mon objet passé en paramètre.
Partie du code de mon WebService
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| @WebService(serviceName = "WsDataPlanning")
public class WsDataPlanning
{
@EJB
private QueryDataLocal ejbRef;
@GET
@WebMethod(operationName = "getAllCivilites")
public List<Civilite> getAllCivilites()
{
return ejbRef.getAllCivilites();
}
@POST
@WebMethod(operationName = "addCivilite")
@Oneway
public void addCivilite(@WebParam(name = "civilite") Civilite civilite)
{
ejbRef.addCivilite(civilite);
}
@PUT
@WebMethod(operationName = "updateCivilite")
@Oneway
public void updateCivilite(@WebParam(name = "civilite") Civilite civilite)
{
//Affiche les libellés de l'objet passé en paramètre
System.out.println(civilite.getLibelleCourt() + " " + civilite.getLibelleLong());
ejbRef.updateCivilite(civilite);
}
@DELETE
@WebMethod(operationName = "deleteCivilite")
@Oneway
public void deleteCivilite(@WebParam(name = "civilite") Civilite civilite)
{
ejbRef.deleteCivilite(civilite);
} |
Code client
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
public static void main(String[] args)
{
WsDataPlanning_Service wsDataPlanningService = new WsDataPlanning_Service();
WsDataPlanning wsplanning = wsDataPlanningService.getWsDataPlanningPort();
List<Civilite> civilites = wsplanning.getAllCivilites();
for(Civilite c : civilites)
{
System.out.println(c.getLibelleCourt() + " " + c.getLibelleLong());
}
//Modification d'une civilité
Civilite civ = civilites.get(2);
civ.setLibelleCourt("vvv");
wsplanning.updateCivilite(civ);
} |
Le résultat obtenu dans ma console
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| ant -f D:\\Documents\\NetBeansProjects\\TestClient -Djavac.includes=testclient/TestClient.java -Dnb.internal.action.name=run.single -Drun.class=testclient.TestClient run-single
init:
Deleting: D:\Documents\NetBeansProjects\TestClient\build\built-jar.properties
deps-jar:
Updating property file: D:\Documents\NetBeansProjects\TestClient\build\built-jar.properties
wsimport-init:
wsimport-client-WsDataPlanning:
files are up to date
wsimport-client-generate:
Compiling 1 source file to D:\Documents\NetBeansProjects\TestClient\build\classes
compile-single:
run-single:
M. Monsieur
Mme Madame
Mlle Mademoiselle
mmm Mademoiselle
BUILD SUCCESSFUL (total time: 1 second) |
Erreur
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| Grave: java.lang.NullPointerException
at services.WsDataPlanning.updateCivilite(WsDataPlanning.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.glassfish.webservices.InstanceResolverImpl$1.invoke(InstanceResolverImpl.java:143)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:88)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:136)
at org.glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:142)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:136)
at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:210)
at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:142)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:420)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:687)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:266)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:169)
at org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:169)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
at java.lang.Thread.run(Thread.java:745) |
Merci d’avance pour voter aide.