IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

Paramétrage de timeout client - JBoss


Sujet :

Wildfly/JBoss Java

  1. #1
    Membre habitué
    Avatar de jeha
    Inscrit en
    Octobre 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 127
    Points : 193
    Points
    193
    Par défaut Paramétrage de timeout client - JBoss
    Bonjour cher camarade ,

    J’ai voulu configurer le timeout du client Jboss avec ce code ci-dessous, mais pas de succès.

    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
     
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import java.util.Hashtable;
    import ma.hps.pcrd.gateway.business.IServicePGProcessorLineRemote;
     
    public class JbossTimeOut{
     
     
        /**
         * Sole entry point to the class and application used for testing the
         * String Encrypter class.
         * @param args Array of String arguments.
         */
        public static void main(String[] args) throws NamingException  {
     
     
     
    		System.out.println("init");
    		Hashtable<String, String> env = new Hashtable<String, String>();
    		env.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
    		env.put("java.naming.provider.url", "jnp://localhost:1099");
    		env.put("java.naming.factory.url.pkgs", "org.jboss.naming");
    		env.put("jnp.socketFactor", "org.jnp.interfaces.TimedSocketFactory");
    		env.put("jnp.timeout", "10000");
    		env.put("jnp.sotimeout", "10000");
    		env.put("jnp.maxRetries", "2");
    	//	env.put("jnp.disableDiscovery", "true");
     
    	    System.out.println("init ok");
     
    		InitialContext ctx = new InitialContext(env);
     
     
    		IServiceProcessorLineRemote world = (IServiceProcessorLineRemote) ctx.lookup("ServiceProcessorLine/remote");
    		System.out.println("value 1 :"+world.generateSignature("00001","01","TEST"));
     
     
     
    	}
     
    }
    Mon scénario de test:

    Si je pose un URL erronée, le client se déconnecte après 6000 ms, même si je change les valeurs du timeout.

    J’ai fait une boucle infinie dans ma fonction generateSignature dans Jboss, et quand j’appelle cette fonction avec un time out de x ms, elle reste toujours connectée, pas de time out !!!!

    Merci infiniment si quelqu'un a une ide sur ce paramétrage de timeout client - jboss.

  2. #2
    Membre habitué
    Avatar de jeha
    Inscrit en
    Octobre 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 127
    Points : 193
    Points
    193
    Par défaut
    Salut camarade,

    J’ai décompilé la clase TimedSocketFactory qui se trouvait dans le jbossall-client.jar du 4.3.0.GA_CP01.
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
     
    package org.jnp.interfaces;
     
    import java.io.IOException;
    import java.net.*;
    import java.util.Hashtable;
    import javax.net.SocketFactory;
     
    public class TimedSocketFactory extends SocketFactory
    {
        /* member class not found */
        class ConnectThread {}
     
     
        public TimedSocketFactory()
        {
            timeout = 0;
            soTimeout = 0;
        }
     
        public TimedSocketFactory(Hashtable env)
        {
            timeout = 0;
            soTimeout = 0;
            String value = (String)env.get("jnp.timeout");
            if(value != null)
                timeout = Integer.parseInt(value);
            value = (String)env.get("jnp.sotimeout");
            if(value != null)
                soTimeout = Integer.parseInt(value);
        }
     
        public Socket createSocket(String host, int port)
            throws IOException, UnknownHostException
        {
            InetAddress hostAddr = InetAddress.getByName(host);
            return createSocket(hostAddr, port, null, 0);
        }
     
        public Socket createSocket(InetAddress hostAddr, int port)
            throws IOException
        {
            return createSocket(hostAddr, port, null, 0);
        }
     
        public Socket createSocket(String host, int port, InetAddress localAddr, int localPort)
            throws IOException, UnknownHostException
        {
            InetAddress hostAddr = InetAddress.getByName(host);
            return createSocket(hostAddr, port, localAddr, localPort);
        }
     
        public Socket createSocket(InetAddress hostAddr, int port, InetAddress localAddr, int localPort)
            throws IOException
        {
            Socket socket = null;
            if(timeout <= 0)
                socket = new Socket(hostAddr, port, localAddr, localPort);
            else
                socket = createSocket(hostAddr, port, localAddr, localPort, timeout);
            socket.setSoTimeout(soTimeout);
            return socket;
        }
     
        protected Socket createSocket(InetAddress hostAddr, int port, InetAddress localAddr, int localPort, int connectTimeout)
            throws IOException
        {
            ConnectThread t = new ConnectThread();
            Socket socket = t.createSocket(hostAddr, port, localAddr, localPort, connectTimeout);
            return socket;
        }
     
        public static final String JNP_TIMEOUT = "jnp.timeout";
        public static final String JNP_SO_TIMEOUT = "jnp.sotimeout";
        protected int timeout;
        protected int soTimeout;
    }
    Alors les variables du timeout sont:

    public static final String JNP_TIMEOUT = "jnp.timeout";
    public static final String JNP_SO_TIMEOUT = "jnp.sotimeout";

    Mais je ne comprends pas pourquoi le time out ne marche pas avec mon client !!!!!!!

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Le timeout intervient quand ton serveur distant se déconnecte ou ne répond juste pas. Quand il n'y a pas de serveur distant ou que l'adresse est non routable, la réaction dépendra uniquement de l'OS (le temps que le serveur distant ou les périphérique réseau facent remonter un paquet ICMP notifiant du problème).

  4. #4
    Membre habitué
    Avatar de jeha
    Inscrit en
    Octobre 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 127
    Points : 193
    Points
    193
    Par défaut
    Bin oui, je suis d'accord avec toi pour le premier test (serveur not up) le time out c’est 6000 ms du protocole TCP/IP mais pour le deuxième cas, le serveur est up le paramétrer jnp.timeout égale 10000 et malgré ça ! Pas de time out du client !!!

  5. #5
    Membre habitué
    Avatar de jeha
    Inscrit en
    Octobre 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 127
    Points : 193
    Points
    193
    Par défaut
    Ok j'ai fait intégrer quelque trace dans jbossall-client.jar:

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    // Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
    // Jad home page: http://www.kpdus.com/jad.html
    // Decompiler options: packimports(3) 
    // Source File Name:   TimedSocketFactory.java
     
    package org.jnp.interfaces;
     
    import java.io.IOException;
    import java.net.*;
    import java.util.Hashtable;
    import javax.net.SocketFactory;
     
    public class TimedSocketFactory extends SocketFactory
    {
     
     
     
        public TimedSocketFactory()
        {
            timeout = 0;
            soTimeout = 0;
        }
     
        public TimedSocketFactory(Hashtable env)
        {
            timeout = 0;
            soTimeout = 0;
            String value = (String)env.get("jnp.timeout");
            if(value != null)
                timeout = Integer.parseInt(value);
            value = (String)env.get("jnp.sotimeout");
            if(value != null)
                soTimeout = Integer.parseInt(value);
        }
     
        public Socket createSocket(String host, int port)
            throws IOException, UnknownHostException
        {
            InetAddress hostAddr = InetAddress.getByName(host);
            return createSocket(hostAddr, port, null, 0);
        }
     
        public Socket createSocket(InetAddress hostAddr, int port)
            throws IOException
        {
            return createSocket(hostAddr, port, null, 0);
        }
     
        public Socket createSocket(String host, int port, InetAddress localAddr, int localPort)
            throws IOException, UnknownHostException
        {
            InetAddress hostAddr = InetAddress.getByName(host);
            return createSocket(hostAddr, port, localAddr, localPort);
        }
     
        public Socket createSocket(InetAddress hostAddr, int port, InetAddress localAddr, int localPort)
            throws IOException
        {
            Socket socket = null;
            System.out.println("timeout: "+timeout);
            if(timeout <= 0)
                socket = new Socket(hostAddr, port, localAddr, localPort);
            else
                socket = createSocket(hostAddr, port, localAddr, localPort, timeout); // <<-- modification du Time out JEHA
            socket.setSoTimeout(soTimeout);
     
            System.out.println("soTimeout: "+soTimeout);
     
            return socket;
        }
     
        protected Socket createSocket(InetAddress hostAddr, int port, InetAddress localAddr, int localPort, int connectTimeout)
            throws IOException
        {
            ConnectThread t = new ConnectThread();
            Socket socket = t.createSocket(hostAddr, port, localAddr, localPort, connectTimeout);
            return socket;
        }
     
        public static final String JNP_TIMEOUT = "jnp.timeout";
        public static final String JNP_SO_TIMEOUT = "jnp.sotimeout";
        protected int timeout;
        protected int soTimeout;
     
     
     
     public class ConnectThread extends Thread
    {
     
        Socket createSocket(InetAddress hostAddr, int port, InetAddress localAddr, int localPort, int connectTimeout)
            throws IOException
        {
            this.hostAddr = hostAddr;
            this.port = port;
            this.localAddr = localAddr;
            this.localPort = localPort;
            this.connectTimeout = connectTimeout;
            try
            {
                synchronized(this)
                {
                    start();
                    wait(connectTimeout);
                }
            }
            catch(InterruptedException e)
            {
                throw new ConnectException("Connect attempt timed out");
            }
            if(ex != null)
                throw ex;
            if(socket == null)
                throw new ConnectException("Connect attempt timed out");
            else
                return socket;
        }
     
        public void run()
        {
            try
            {
                socket = new Socket(hostAddr, port, localAddr, localPort);
                synchronized(this)
                {
                    notify();
                }
            }
            catch(IOException e)
            {
                ex = e;
            }
        }
     
        IOException ex;
        InetAddress hostAddr;
        InetAddress localAddr;
        int port;
        int localPort;
        int connectTimeout;
        Socket socket;
        final TimedSocketFactory this$0;
     
        ConnectThread()
        {
            this$0 = TimedSocketFactory.this;
         //   super("JNP ConnectThread");
            super.setDaemon(true);
        }
     
       } 
    }
    résulta :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    init
    init ok
    timeout: 10000
    soTimeout: 10000

    pas de timeout !!! je pense qu'il n'y a pas de solution !!!!!!!

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/11/2010, 14h58
  2. Configurer Timeout sur JBoss 4.2
    Par Redouane81 dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 10/10/2010, 12h23
  3. Weblogic --> Jboss (paramétrage des ejb dans jboss.xml)
    Par Tronic dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 18/02/2008, 10h47
  4. augmenter le timeout CLIENT SQL 2005
    Par chouchou2clichy dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/12/2007, 14h26
  5. Problème de timeout et de déconnexion cliente
    Par Aurelien92 dans le forum CORBA
    Réponses: 18
    Dernier message: 24/08/2004, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo