Erreur "SoapConnectionFactory not found"
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 :
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
| 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 voici comment il est appelé :
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
| 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 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:
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) |
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.
Merci