Question

J'ai écrit un serveur Thrift en Java pour tirer profit d'un package Java spécifique / bibliothèque, mais je ne suis pas un programmeur java.

Le problème est; Je vois un temps pour le premier appel RPC au serveur. demandes Subsequest sont exécutées sans aucun problème, et ses clients ne touchant écrit dans les langues certaines (mais essentielles).

Ma pensée actuelle est que le serveur sur-fois la réponse parce que lors de la première appeler doit charger toutes les bibliothèques nécessaires à la demande. Certaines implémentations client Thrift doivent être la manipulation du temps mieux que d'autres, en gardant éventuellement la demande d'ouvrir un peu plus longtemps.

Est-il possible en java pour précharger les bibliothèques que je utilise quand je lancer le fichier .jar donc il n'y a pas un retard sur la première demande?

Solution: Je suis autour du problème (et quelques autres) ceux soulevés en augmentant le délai d'attente du client Thrift (s). Cependant, j'ai mis la réponse statique / Class.forName aussi pour aider les choses, ce qui fonctionne très bien. Merci!

Était-ce utile?

La solution

Vous pouvez exécuter une charge avant que le serveur est en direct. Vous n'avez pas spécifié comment vous chargez le serveur, les classes, et ce que l'environnement est, mais vous pouvez profiter du fait qu'une initialiseur statique de classe se déroulera lorsque la classe est chargée. Donc, si vous utilisez une méthode de « principale », votre classe pourrait ressembler à ceci

public class Foo {

   static {
     //this will be run when the class is loaded
     try { Class.forName("fully.qualified.class.name.that.i.want.to.Load"); }
     catch ...
   }

   public static void main (string args[])
   {
    //run my server...
   }
}

Autres conseils

Une chose que vous pourriez vouloir essayer est d'écrire un client simple à l'intérieur du serveur Java lui-même. Ce client ne fait appeler une méthode dans le serveur lors de son démarrage, ce qui oblige les classes à charger. Après ce petit client obtient un résultat (ou rappel), il met le serveur dans un état « accessible par le monde extérieur ».

Je suggère feindre une connexion juste avant l'ouverture du serveur. Cela fera en sorte que (la plupart) initialisation paresseuse pertinente aura été effectuée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top