Is [CopyOnWriteArrayList](http://docs.oracle.com/javase/7/docs/api/index.html?overview-summary.html) list enough to use as a collection for shopping-cart. As I understand it is thread-safe and the iterator is guaranteed not to throw `ConcurrentModificationException` when during iteration another thread removes a product. For example:

```
    ...
    CopyOnWriteArrayList<Product> products = (CopyOnWriteArrayList<Product>)session.getAttribute("PRODUCTS");
    products.addIfAbsent(aProduct);
    ...

```

P.S. I found synchronization approaches using synchronized (session) {...} but it seams a little ugly when I need synchronize session access everywhere when I work with shopping-cart as offered in [this](http://www.ntu.edu.sg/home/ehchua/programming/java/JavaServletCaseStudyPart2.html) article