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 : 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);
    }
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
 
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 : 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
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)
Merci d’avance pour voter aide.