2011-07-08 6 views
0

Je suis en train de concevoir une application et d'essayer de faire des recherches sur la façon dont cela devrait fonctionner et sur les conseils, etc., que je pourrais utiliser.Conseils autour du service Web consommant un autre service Web

J'ai besoin de développer un service Web middleware en cours d'exécution sur Tomcat 6.

programme client consomme mon webservice. Mon service Web à tour de rôle doit exécuter un certain nombre de recherches, 10, en fonction des informations du client. Ces recherches utilisent un service Web tiers. Fourniture par des tiers de classes Java Stub. Can/Dois-je écrire mon service Web pour être multithread afin que chaque thread soit créé et utilisé pour une recherche et que les résultats soient collationnés et renvoyés au client?

Les recherches peuvent prendre un certain temps pour compléter environ 200-500ms

Tous les conseils sont reçus avec gratitude,

Répondre

0

Je suis un peu incertain quant à ce que vos besoins sont exactement. Les recherches peuvent-elles être exécutées en parallèle? Si tel est le cas, il peut ne pas être une mauvaise idée d'utiliser le multithread pour les exécuter.

Nous avons quelque chose de similaire dans une application sur laquelle je travaille - une recherche de longue durée est exécutée dans un thread séparé, de sorte qu'un autre traitement peut continuer, puis, une fois terminé, les résultats sont renvoyés au client .

Il n'y a pas de problème avec ça, on tourne sur Tomcat 6 et ça marche bien. Évidemment, les mises en garde habituelles avec le multi-threading s'appliquent, nous utilisons la bibliothèque Java 6 java.util.concurrent qui est vraiment utile.

0

Il semble y avoir des avantages potentiels à ce que plusieurs requêtes dorsales s'exécutent en parallèle, donc une sorte de multi-thread semble être une bonne idée.

Il y a quelques questions qui me viennent:

  1. La reproduction directe de fils dans un conteneur Java EE est généralement pas recommandé - conteneurs Java EE aiment être en contrôle de ce - donc il y a spécifiquement API prises en charge pour ce faire dans le monde Java EE (voir this answer pour plus d'informations sur ce sujet.) Je ne sais pas si Tomcat prend en charge ces API ces jours-ci, sinon peut-être quelque chose like this peut fonctionner.
  2. Vous avez besoin d'une bonne stratégie pour traiter les réponses brisées et lentes. Supposons que vous ayez 7 réponses sur 8 et que la 8e semble prendre beaucoup de temps, il est préférable de donner des réponses partielles rapides. Mieux vaut penser à cela à l'avant.
  3. Ce qui conduit à mieux vaut avoir une sorte d'approche "noticebaord", envoyer une requête, revenir plus tard pour collecter des résultats intermédiaires, revenir encore plus tard pour collecter des résultats plus complets.
  4. Certains systèmes dorsaux peuvent mal réagir à des demandes excessives provenant de la même source. Vous devrez peut-être limiter les demandes de renseignements à la fois pour être «sociable» et aussi pour éviter toute politique de liste noire.
Questions connexes