Session

Sou iniciante e estou apanhando um pouco em relação à session…
É o seguinte:

tenho duas classes que adicionam itens numa espécie de carrinho de compras, só que só funciona local, quando o cliente acessa, ele não acumula itens…acho que estou lidando com session erradamente…
Segue abaixo as duas classes:

[code]package leo;
import javax.servlet.;
import javax.servlet.http.
;
import java.io.;
import java.net.
;
import java.util.*;

public class AddToShoppingCartServlet extends HttpServlet {
public void service(
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
try {

		response.setContentType("text/html");
		String NomeRed = request.getParameter("NomeRed");
		String Descr = request.getParameter("Descr");
		double CustoDesejado =
			Double.parseDouble(request.getParameter("CustoDesejado"));
		int qtd_pro = Integer.parseInt(request.getParameter("qtd_pro"));
		String usuario3 = request.getParameter("usuario3");
		double total = CustoDesejado * qtd_pro;

		Item item = new Item(NomeRed, Descr, CustoDesejado, qtd_pro, total);

		HttpSession session = request.getSession();

		ShoppingCart cart =
			(ShoppingCart) session.getAttribute("ShoppingCart");

		if (cart == null) {
			cart = new ShoppingCart();
			session.setAttribute("ShoppingCart", cart);
		}

		cart.addItem(item);

		response.sendRedirect(
			response.encodeRedirectURL(
				"http://.......:8080/examples/jsp/E-commerce/site/DisplayShoppingCart.jsp?usuario3="
					+ usuario3));
	} catch (Exception e) {
	}

}

}[/code]

[code]package leo;

import java.util.;
import java.io.
;
import javax.servlet.;
import javax.servlet.http.
;
import java.net.*;

public class ShoppingCart implements java.io.Serializable {

Vector items;

static int nextOrderNumber = 1;

public ShoppingCart() {
	items = new Vector();
}

public Vector getItems() {
	return (Vector) items.clone();
}

public void addItem(Item newItem) {
	items.addElement(newItem);
}

public void removeItem(int itemIndex) {
	items.removeElementAt(itemIndex);
}

public String completeOrder(Shipping shipping, Billing billing) {

	try {
		int orderNumber = 0;

		synchronized (this) {
			orderNumber = nextOrderNumber;
			nextOrderNumber = nextOrderNumber + 1;
		}

		PrintWriter out =
			new PrintWriter(
				new FileOutputStream("c:/compra" + orderNumber));

		out.println(shipping.name);
		out.println(shipping.address1);

		if (shipping.address2 != null) {
			out.println(shipping.address2);
		}

		out.print(shipping.city);

		if (shipping.state != null) {
			out.print(", " + shipping.state);
		}

		if (shipping.postalCode != null) {
			out.print(" " + shipping.postalCode);
		}

		out.println(" " + shipping.country);
		out.println(shipping.email);

		out.println(billing.nameOnCard);
		out.println(billing.creditCardType);
		out.println(billing.creditCardNumber);
		out.println(billing.creditCardExpiration);

		Enumeration e = items.elements();

		while (e.hasMoreElements()) {
			Item item = (Item) e.nextElement();

			out.println(item.NomeRed + "," + item.qtd_pro);
		}

		out.close();

		return "" + orderNumber;
	} catch (Exception exc) {
		System.out.println("" + exc.toString());
	}

	return "erro";
}

}
[/code]

POR FAVOR ME AJUDEM!!!