Bonjour,

dans le cadre d'un développement des ws, on a mis en place un handler chain qui s'occupe d'authentifier le service, le logguer et le valider.

Par contre lors de la première exécution, entre le handler chain et l'exécution de la méthode du service décrite ci-dessous, il y a un écart de 2/3 secondes alors que les appels suivants sont instantanés.

Le handler chain s'exécute sans souci et sans problème de lenteur. Mais lorsqu'il faut appeler le service, il est assez long (2s).
J'ai mis un log pour voir l'heure à laquelle il est appelé pour comparer..

A votre avis à quoi cela est dû ?

Y a t-il un truc qui m'échappe ?

Merci.


La méthode monService est appelé après le handler chain.

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
 
 
Stateless
@WebService(
        portName = "MonService-v1",
        serviceName = "MonService-v1",
        targetNamespace = "http://XXX.com/XXXX/XXX/MonService/v1",
        wsdlLocation = "META-INF/XXX/XXX/XXX-v1.wsdl"
)
@SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
@HandlerChain(file="/handler-chain.xml")
public class MonServiceV1 implements MonServiceIfc{
 
 
@WebMethod(action = "http://XXX.com/XXX/services/ServiceTooLong/v1/monService")
    @WebResult(name = "monServiceResponse", targetNamespace = "http://XXX.com/XXX/schemas/ServiceTooLong/v1", partName = "Response")
    public TOTO monService(
            @WebParam(name = "monServiceRequest", targetNamespace = "http://XXX.com/XXX/schemas/ServiceTooLong/v1", partName = "Request")
            ContractRequestType request,
            @WebParam(name = "header", targetNamespace = "http://XXX.com/PPP/OOO/v2", header = true, mode = WebParam.Mode.INOUT, partName = "header")
            Holder<header> header)
            throws XXX, YYYY {
 
    	long startTime = System.currentTimeMillis();
 
 
    	System.out.println("Start " + startTime);
 
    	TOTO toto = Manager.monService(request, header);
 
    	long endTime = System.currentTimeMillis();
    	ServiceTooLongManagerImplV1.printDelayTime(startTime, endTime, "WS MonService" );
 
    	return toto;
    }