Bonjour,

J'ai un problème, j'ai fait un handler pour checker que des paramètres de sécurité soient bien passés dans le header de mon message et j'aimerai renvoyer un message lisible lorsque le test n'est pas convainquant. Or, j'obtiens toujours un server error avec SOAPUI.

De toute facon mon gros problème est que je ne passe jamais dans la méthode handleFault, et sans savoir pourquoi

En gros les méthodes de mon handler :
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
 
public boolean handleRequest(MessageContext context) {
...
                String faultStr = "Error when checking credential";
                String faultCode = "faultCode";
 
                if(userCredential == null){
                    soapMsgCtx.setProperty(FAULT_STR, faultStr);
                    soapMsgCtx.setProperty(FAULT_CODE, faultCode);
                }
 
                Credential credential = new Credential(userCredential);
 
                if(credential != null){
                    try{
                        if(credential.isSecurityNeeded(userCredential)){
                            WebServiceSecurityManager.checkWSSecurity((SOAPMessageContext) context, credential);
                        }
                    } catch (Exception ex) {
                        soapMsgCtx.setProperty(FAULT_STR, faultStr);
                        soapMsgCtx.setProperty(FAULT_CODE, faultCode);
                        logger.logError("", faultStr, ex, ex.getMessage());
                        //throw new SOAPException("Error when checking credential");
                        throw new SOAPFaultException(null, faultStr, null, null);
                    }
                }...
          }
 
public boolean handleFault(MessageContext context) {
		if (context instanceof SOAPMessageContext) {
	        try {
	            SOAPMessageContext soapMsgCtx = (SOAPMessageContext)context;
	            SOAPMessage soapMsg = soapMsgCtx.getMessage();
	            if (soapMsg == null) {
	                MessageFactory messageFactory = MessageFactory.newInstance();
	                soapMsg = messageFactory.createMessage();
 
	                soapMsgCtx.setMessage(soapMsg);
	            }
 
	            SOAPFault soapFault = soapMsg.getSOAPPart().getEnvelope().getBody().addFault();
	            String faultStr = (String)soapMsgCtx.getProperty(FAULT_STR);
	            String faultCode = (String)soapMsgCtx.getProperty(FAULT_CODE);
	            soapFault.setFaultString(faultStr);
	            soapFault.setFaultCode(faultCode);
 
	        } catch (Exception ex) {
	            throw new JAXRPCException();
	        }
	    }
	    return true;
	}
Une idée pour m'aider please?