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 client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Le résultat obtenu dans ma console
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci d’avance pour voter aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
Partager