Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Futur Membre du Club
    Inscrit en
    mai 2009
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 151
    Points : 18
    Points
    18

    Par défaut 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

  2. #2
    Futur Membre du Club
    Inscrit en
    mai 2009
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : mai 2009
    Messages : 151
    Points : 18
    Points
    18

    Par défaut

    Au final faut juste rajouter le jar saaj-impl dans le répertoire jre/lib/ext

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •