gleichzeitige Anfrage an Jersey Rest Service

8

Ich entwickle einen sehr einfachen REST-Webservice mit Eclipse-, Tomcat7- und Jersey-Implementierung, mit einer Verbindung zu MySQL. Mit Blick auf die Jersey-Dokumentation weiß ich, dass jede Anfrage ein neues Objekt der Wurzel-Ressourcenklasse erstellt. Aber ich weiß nicht, ob jede Anfrage unabhängig ist, zum Beispiel, wenn eine Anfrage lange warten muss, akzeptiert der Server normalerweise mehr Anfragen?

Das Problem ist: Ich habe 2 Hauptklassen, 1 Klasse implementiert Jersey mit Anmerkungen (Proxy.java), und andere Klasse, die zu einem BD (Notificator.java) verbindet, gibt es nur eine Instanz dieser Klasse (Singleton), um nur 1 Verbindung zu verwenden Objekt. Die Klassen, die Jersey einsetzen, verwenden diese Klasse. Also, wenn eine der Anfrage blockiert ist, weiß ich nicht, ob die anderen ausgeführt werden, weil sie die gleiche (Notificator.java) Instanz verwenden.

Die Beziehung ist N Instanzen von (Proxy.java) verwendet die einzige (Notificator.java) die eine Verbindung zu einem MySQL hat.

    
David Herrero 03.04.2013, 09:09
quelle

2 Antworten

3

Jersey wird auf Servlets entwickelt. Es gibt einen neuen Thread für jede eingehende Anfrage. Ihr Code erzeugt einen Engpass für alle Threads, da ein Konflikt für ein einzelnes verfügbares Verbindungsobjekt besteht. Wenn Sie mehrere Anfragen haben, wird nur eine Anfrage diese Verbindung verwenden und andere müssen warten. Wenn die Wartezeit nicht zu lang ist, gibt es kein Problem. Wenn die Wartezeit jedoch höher ist als die HTTP REQUEST TIMEOUT, können Ihre anderen Anforderungen als TIMED OUT enden.

Ich verstehe, dass Sie aufgrund von Geschäftsanforderungen / Komplikationen einen Engpass bei der Einzelverbindung haben. In all diesen Fällen, in denen wir nicht alle Anfragen simultan bearbeiten können und es verschiedene Gründe dafür geben kann, sollten wir unsere Webdienste als asynchron erstellen. Asynchrone Webdienste arbeiten nach dem Modell SUBMIT REQUEST- & gt; ANFORDERUNG ANGENOMMEN (wird asynchron verarbeitet) und JOB-URL zurückgegeben für polling- & gt; CLIENT POLLS bis der JOB NICHT ABGESCHLOSSEN ist.

Ich hoffe, es hilft!

    
Juned Ahsan 04.05.2013, 05:38
quelle
0

Versuchen Sie das Datenbankverbindungs-Pooling, mehr dazu hier:

Ссылка

Wie wird ein Verbindungspool in JDBC eingerichtet?

    
Vitaly 03.04.2013 09:40
quelle

Tags und Links