tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
740
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    luckyluke80de luckyluke80de ist offline Grünschnabel
    Registriert seit
    Oct 2004
    Ort
    Ismaning
    Beiträge
    3
    Hallo,

    seit kurzem schlage ich mich damit herum, die Reaktionszeit meines Clients zu verbessern, wenn der Server nicht erreichbar ist. Da die Standard Timouts für meine Begriffe zu hoch sind, wollte ich sie ändern. Nach langer Suche bin ich auf die (denke ich zumindest) richtigen Properties gestossen. Leider tut sich trotzdem nichts. Vielleicht hat hier ja jemand eine Idee, woran es liegen könnte.

    Code java:
    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
    
     
    public void connect() {
     
    long start = new Date().getTime();
     
            Properties jndiProps = new Properties();
            jndiProps.setProperty(ORBConstants.INITIAL_HOST_PROPERTY, "localhost");   //sowieso Standard
            jndiProps.setProperty(ORBConstants.INITIAL_PORT_PROPERTY, "3700"); //auch Standard
            jndiProps.setProperty(ORBConstants.TRANSPORT_TCP_CONNECT_TIMEOUTS_PROPERTY, "250:3000:1:5000");
            jndiProps.setProperty(ORBConstants.WAIT_FOR_RESPONSE_TIMEOUT, "1");
            jndiProps.setProperty(ORBConstants.TRANSPORT_TCP_TIMEOUTS_PROPERTY, "1000:1500:1:10");
     
                    BeanRemote bean = null;
            InitialContext ic;
            try {
                ic = new InitialContext(jndiProps);
                jndiProps.list(System.out);
                bean = (BeanRemote) ic.lookup("myBean");
                
            } catch (NamingException e) {
                long runningTime = new Date().getTime() - start; 
                System.out.println("running Time: " + runningTime);
                e.printStackTrace();
            }
            
            long runningTime = new Date().getTime() - start; 
            System.out.println("running Time: " + runningTime);
     
    }

    Das Problem ist nun: egal was ich an den Properties drehe: die running Time ändert sich kein bisschen.

    Zur Erläuterung der einzelnen Parameter habe ich mir auch dieses Blog angeschaut:
    http://blogs.sun.com/ejcorba/entry/c...t_timeouts_and
    Geändert von luckyluke80de (03.05.11 um 21:50 Uhr)
     

  2. #2
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    Bringt dir vielleicht real time java etwas? siehe http://www.tutego.de/blog/javainsel/...eal-time-java/ http://java.sun.com/developer/techni...amming/rt_pt1/ ...
    (mit deinem Code kann ich dir leider nicht helfen)
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

  3. #3
    luckyluke80de luckyluke80de ist offline Grünschnabel
    Registriert seit
    Oct 2004
    Ort
    Ismaning
    Beiträge
    3
    Hallo genodeftest,

    das bringt mich leider nicht weiter. Wenn ich es richtig verstanden habe, kann ich damit vielleicht real time untersuchen, dass der timeout zu lang ist. Ich kann ihn aber nicht damit heruntersetzen.

    Vielleicht habe ich das Problem auch nicht genau genug beschrieben. Es handelt sich hierbei um eine verteilte Anwendung. Einen simplen Java Client und einen Glassfish Container, in welchem bspw. Stateless Session Beans laufen. Diese Beans instanziiere ich durch die oben beschriebene Vorgehensweise. Wenn jetzt der Server für den Client nicht erreichbar ist, dauert es ca. 7min bis die Exception geworfen wird. Dieses Timout möchte ich herabsetzen. Leider reagiert aber der Client nicht auf die Änderungen.

    Als Workaround versuche ich gerade vorher einen Socket auf Port 7 zu öffnen und damit die Erreichbarkeit des Servers zu testen.
     

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    was dauert denn nun so lange, die Erzeugung des InitialContext's oder der erste Lookup (bis zum Fehlschlag)?
    Wie hast du denn deinen InitialContext initalisiert, bevor du die Parameter "angepasst" hast?

    Standardmäßig sucht der Mechanismus innerhalb von InitialContext nach einer Datei namens jndi.properties im Classpath....

    schau doch mal, ob du damit:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    package de.tutorials;
     
    import java.net.URL;
    import java.util.Collections;
     
    public class JNDIPropertiesExample {
        public static void main(String[] args) throws Exception{
            for(URL url : Collections.list(JNDIPropertiesExample.class.getClassLoader().getResources("jndi.properties"))){
                System.out.println(url);
            }
        }
    }
    Eine JDNI Properties Datei findest die noch ein paar weitere Einstellungen vornimmt die du noch nicht angepasst hast

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  5. #5
    luckyluke80de luckyluke80de ist offline Grünschnabel
    Registriert seit
    Oct 2004
    Ort
    Ismaning
    Beiträge
    3
    Ich hab die Datei gefunden, aber ich hatte mit list Properties vorher schon festgestellt, dass es keine weiteren Properties gibt, die man ändern könnte. Die Datei befindet sich in der glassfish-naming.jar Bibliothek. Sie beinhaltet folgende Properties:

    Code :
    1
    2
    3
    4
    5
    6
    
     
    java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory
    java.naming.factory.url.pkgs=com.sun.enterprise.naming
    # Required to add a javax.naming.spi.StateFactory for CosNaming that
    # supports dynamic RMI-IIOP.
    java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl

    Ich hatte mir schon teilweise den Glassfish Quellcode angeschaut, aber ich habe eigentlich aufgegeben. Ich werde über einen Workaround (Socket) vorher über ein anderes Port prüfen, ob der Server erreichbar ist oder nicht.

    Vielen Dank für die Antworten

    UPDATE:

    Der Vollständigkeit halber, hier der Workaround:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
            try {
                InetAddress address = InetAddress.getByName("myhost");
                System.out.println("Name: " + address.getHostName());
                System.out.println("Addr: " + address.getHostAddress());
                System.out.println("Reach: " + address.isReachable(3000));
            } catch (UnknownHostException e) {
                System.err.println("Unable to lookup myhost");
            } catch (IOException e) {
                System.err.println("Unable to reach myhost");
            }
    Geändert von luckyluke80de (24.06.11 um 21:57 Uhr) Grund: Erweiterung
     

Ähnliche Themen

  1. connect an applet to glassfish für bean lookup
    Von willstern im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 14.01.10, 18:10
  2. Antworten: 6
    Letzter Beitrag: 19.10.09, 10:53
  3. Name Lookup (Koenigs-Lookup)
    Von HPB im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 23.07.08, 09:20
  4. Konfigurationswerte initial setzen
    Von Paranoia im Forum .NET Application und Service Design
    Antworten: 1
    Letzter Beitrag: 12.05.06, 08:30
  5. QE: Initial nur im ersten Absatz
    Von jensen im Forum Desktop Publishing (DTP)
    Antworten: 1
    Letzter Beitrag: 09.11.05, 16:10

Stichworte