0
我有一個SLSB在實體中增加一個數字。如果兩個線程同時到達SLSB,那麼兩個請求中的數字都是相同的。如何避免無狀態會話Bean的併發性?
SLSB提取
@Stateless(mappedName = "ejb/CustomerManager")
public class CustomerManagerBean implements CustomerManager {
...
public String recoverName(int id) {
Customer customer = (Customer) em.createQuery("from Customer where id = :id").setParameter("id", id).getSingleResult();
int oldValue = customer.getValue();
int newValue = oldValue + 1;
customer.setValue(newValue);
[BP] return customer.getName() + " value=" + customer.getValue();
}
...
}
實體提取
@Entity
public class Customer implements Serializable {
@Id
private int id;
private int value;
}
要測試的問題,我在標有在SLSB recoverName方法[BP]
行一個斷點。然後,從兩個分離的瀏覽器頁面進行兩個調用。在斷點處,值爲兩個調用的相同的。
當第二次調用試圖用setter修改值時,不應該拋出某種異常嗎?
我使用JBoss 5作爲AS和MySQL或Oracle作爲DB(既試過)
感謝您的幫助
它完美!非常感謝你!! – Emiliano