Bonjour à tous,
Je suis en train de créer un moteur qui s'occupe d'envoyer des requêtes Soap. Pour faire ça, j'ai un moteur qui a une visibilité sur un objet SoapClient que j'ai créé qui va se charger d'envoyer les requêtes.
Voici le code de SoapClient :
Et voici comment il est appelé :
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 public class SoapClient implements ISoapClient { private SOAPMessage message; private SOAPConnection myCon; public SoapClient(){ SOAPConnectionFactory myFct; try { myFct = SOAPConnectionFactory.newInstance(); myCon = myFct.createConnection(); } catch (UnsupportedOperationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SOAPException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void createRequest(List<String> params){ SOAPPart mySPart = message.getSOAPPart(); SOAPEnvelope myEnvp; try { myEnvp = mySPart.getEnvelope(); SOAPBody body = myEnvp.getBody(); Name bodyName = myEnvp.createName("requestSafir"); SOAPBodyElement gltp = body.addBodyElement(bodyName); } catch (SOAPException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public SOAPMessage sendRequest(String endpoint) { SOAPMessage reply=null; try { message.saveChanges(); URLEndpoint endPt = new URLEndpoint("http://localhost:8080/Venus/services/ScannerSOAP?wsdl"); reply = myCon.call(message, endPt); } catch (SOAPException e) { // TODO Auto-generated catch block e.printStackTrace(); } return reply; } @Override public void setRequest(SOAPMessage s) { System.out.println("met le message"); this.message=s; } }
Et lorsque j'instancie mon superviseur Soap qui lui même est un objet d'une classe qui tourne dans un thread, j'ai cette erreur là :
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 public class SupervisorSoap implements ISupervisorSoap { private SOAPMessage message; private ISoapClient client; public SupervisorSoap (SOAPMessage messageDeBase){ message=messageDeBase; client=new SoapClient(); request(); SOAPMessage reply=client.sendRequest("http://xxxxxx"); traiterReponse(reply); } @Override public void request() { client.setRequest(message); } @Override public void sentReponse() { // TODO Auto-generated method stub } @Override public void traiterReponse(SOAPMessage s) { OutputStream out = new ByteArrayOutputStream(); try { s.writeTo(out); } catch (SOAPException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Et pourtant, j'ai créé un petit main qui s'occupe d'envoyer une requête et qui utilise SoapConnectionFactory et tout fonctionne bien, donc il a bien chargé le jar qu'il faut, du coup je vois pas trop d'où vient le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 javax.xml.soap.SOAPException: Unable to create SOAP connection factory: Provider com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory not found at javax.xml.soap.SOAPConnectionFactory.newInstance(SOAPConnectionFactory.java:86) at fr.venus.impl.SoapClient.<init>(SoapClient.java:28) at fr.venus.impl.SupervisorSoap.<init>(SupervisorSoap.java:19) at fr.venus.resources.Engine.run(Engine.java:34) at java.lang.Thread.run(Unknown Source) Exception in thread "Thread-2" java.lang.NullPointerException at fr.venus.impl.SoapClient.sendRequest(SoapClient.java:59) at fr.venus.impl.SupervisorSoap.<init>(SupervisorSoap.java:21) at fr.venus.resources.Engine.run(Engine.java:34) at java.lang.Thread.run(Unknown Source)
Merci
Partager