Yapmam gereken iki görevi var aynı iş sürecinin bir parçası olan task1
ve task2
. Son kullanıcıya, task1
tamamlandığında yanıt vermem gerekiyor, böylece yanıt süresinin en aza indirilmesi gerekiyor.EJB Eşzamansız yöntemlerini kullanmanın doğru yolu
Şu anki yaklaşımım task1
gerçekleştirmek ve task1
bittiğinde, zaman uyumsuz olarak task2
yöntemini çağırmaktır. task2
karmaşık ve bazı dış bağımlılık olduğu için yanıt süresi kontrolüm dışında. websphere 8.0 (kullanımda EJB konteyner) eşzamanlı yöntemler ve asenkron yöntemlerde
@Stateless
public class SessionBean1 {
@Inject
SessionBean2 sessionBean2;
public void doTask1(){
// task one stuff
sessionBean2.doTask2();
}
}
@Stateless
public class SessionBean2 {
@Asynchronous
public void doTask2(){
// do task2 stuff
}
}
farklı diş havuzları tarafından işletilmektedir.
Benim ilk varsayımın, task2
'un kötü performans göstermesi durumunda bile task1
'un bir etkisi olmayacağı, ancak ne yazık ki bu doğru olmadığıydı.
task2
hatalı çalışıyorsa, zaman uyumsuz iş parçacığı havuzundaki tüm iş parçacıkları dolu olacaktır. Bu, asenkron ipliklerin serbest olmasını ve dolayısıyla task1
'un etkisi olmasını beklemek için task1
neden olur.
websphrere sunucu günlüklerinde mesajı: The request buffer for thread pool WorkManager.WebSphere_EJB_Container_AsynchMethods_Internal_WorkManager has reached its capacity
Sorum Burada elde etmek çalışıyorum ulaşmak için uygun bir yol olacağını budur.
Java EE 7 kullanıyorsanız, @AccessTimeout (value = xx) ek açıklamasını kullanabilirsiniz, ancak Websphere Java EE 6? – rjdkolb
@mattfreake: Bağlantıda olduğu gibi [image] (http://2.1m.yt/itzn6So.jpg), async yöntem isteklerinin hiçbiri sınırlı değildir ve async dizilerinin sayısına bağlıdır. İş parçacığının sayısını artırabilirim, ancak birkaç dakika için görev2 kötü bir performans sergiliyor olsa bile, görev1im hala beklemek zorunda kalacak. Ayrıca iş parçacığının hiçbiri donanım yapılandırmasıyla sınırlandırılmamıştır. – ares
@jjdkolb tarafından önerilen bir JMS kuyruğu kullanma fikri, iplik havuzunu boyutlandırmak sorunlu ise çok daha iyi bir fikirdir. –