普通の考えで行くと・・・
まず、客一人一人にクッキーを持たせ
その中にユニークなIDを割り当てて書き込んでおく
サーバ側ではそのIDとカートの中身を
記録しておく
とりあえずこうしておけば、不用意な回線切断が起こっても
再接続すればIDを照らし合わせるだけで
客のカートの中身は復元される
(クッキーにはIDだけ書き込むこと)

で、問題の在庫だが
客が最終的に「購入」ボタンを押したときに
「-1」すればいいんでないかな?
ただ、Web上でこれをやると
リアルタイムで情報が変えられるメリットはあるけど
逆に、設計ミスするとまずいことはわかるよな
Javaでやるんだったら「PetShop」だったっけ?
あれでも、DLしてソース読んでみれば
ノウハウがわかるかもしれない
でも、あれはJ2EEだったかな・・・