2012-04-13 5 views
2

Web Services sind eine interne Implementierung von Servlet. Und der Web-/App-Server wird jede neue Anfrage mit neuem Thread versorgen.Wie man Web-Service Thread sicher machen?

Es bedeutet interne Web-Dienste jede Anfrage wird in dem neuen Thread bedient werden. Nun bedenken Sie, dass dieser Dienst mehrere Konsumenten hat. Es besteht die Möglichkeit, dass alle Verbraucher gleichzeitig eine Anfrage an den Anbieter senden. Dies bedeutet, dass diese Web-Service-Implementierung Thread-sicher sein muss, um ein solches Szenario zu umgehen.

Wissen Sie bereits, dass keine Mitgliedsvariablen den Web-Service threadsicher machen. Allerdings muss ich Member-Variablen verwenden und diese Variablen werden durch die Frühjahr Bohnen injiziert.

Irgendwelche Vorschläge, wie man sie threadsicher macht?

Edit:

per Definition, wenn class1, eine Thread-sicher-Klasse ist eine andere Klasse des Objekts verwendet, die nicht sicher ist, fädeln, wird class1 mehr Thread-sicher sein.

Mein Punkt ist die Verwendung der Frühlingsbohnen ist bereits in meinem Service getan und jetzt, wollen sie Gewinde sicher machen. Irgendwelche Vorschläge dazu.

Ich kann nicht an den Geltungsbereich der Anfrage denken, weil intern JMS-Nachrichten nicht HTTP-Anfrage und Antworten verwendet werden. Irgendwelche Ideen dazu?

Antwort

2

Da Ihre Invokation über Frühlingsbohnen erfolgt, müssen Sie eine Frühlingsbohne machen, um die beanspruchte Bohne anzufordern. So machen Sie eine solche Bohne aus der Frühlings-API. http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes-request.The Die Implementierung der Request-Bean ist Thread-sicher. Sie verwendet das ThreadLocal-Objekt intern, um es zu implementieren.

Auch hier gibt es einen interessanten Thread, der dieses Problem anspricht.

Should I put my ThreadLocals in a spring-injected singleton?

Hope this Sie auch helfen.

+0

Mein Punkt ist, dass, wenn Klasse 1, thread sichere Klasse das Objekt einer anderen Klasse verwendet, die nicht threadsicher ist, Klasse1 threadsicherer sein wird. Mein Punkt ist die Verwendung der Frühlingsbohnen ist bereits in meinem Dienst getan und jetzt, wollen sie Gewinde sicher machen. Irgendwelche Vorschläge dazu. – neo

+0

also Ihre Bemühung wird nicht-Thread-sichere Klasse von Spring aufrufen? – UVM

+0

Ja, und wenn diese Klassen Teil der Webanwendung sind. Ich kann mir den Anforderungsbereich nicht vorstellen, da intern JMS-Nachrichten und keine http-Anfragen und -Responder verwendet werden. Irgendwelche Ideen dazu? – neo