2016-05-11 9 views
2

Soweit ich weiß, können keine zwei Threads eine Stateless-Session-Bean zur gleichen Zeit verwenden.Wird eine statusfreie Sitzung von einem anderen Thread verwendet, wenn noch eine asynchrone Methode ausgeführt wird?

In meinem Fall habe ich zwei Stateless Session Beans. In der zweiten Bean habe ich eine asynchrone Methode. Diese Methode wird von der ersten Bean aufgerufen.

Mein Zweifel ist, wird die erste Bean von einem anderen Thread verwendet werden, nachdem Thread X eine Methode für die erste Bean aufgerufen und erfolgreich zurückgegeben hat?

-Code unten

@Stateless 
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
public class MyBean { 
    @EJB(beanName="AsyncBean") 
    private AsyncBean asyncBean; 
    public String call() { 
     // some code here 
     asyncBean.call(); 
     return result; 
    } 
} 

@Stateless(name="asyncBean") 
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
public class AsyncBean { 
    @Asynchronous 
    public void call() { 
     // some code which takes some time 
    } 
} 

ich wissen wollen, ob MyBean stateless Bean wird von einem anderen Thread oder nicht nach dem Faden X erfolgreich eingesetzt werden und die Asynchron Aufgabe noch läuft zurückgekehrt ist.

Vielen Dank.

Antwort

2

Ja, der EJB-Container kann die MyBean-Instanz wiederverwenden, sobald die erste Aufrufmethode zurückgegeben wird. Der EJB-Container wartet nicht auf den Abschluss des asynchronen Aufrufs.