i'm using OCCAS 4.0 in conjunction with eyeBeam's x-lite UA and experience that OCCAS reorders the processing of a BYE and ACK in a way that the BYE is processed before the ACK althought the ACK is received earlier.
the test servlet is pretty straight forward
public class TestByeAck extends SipServlet
private static final Logger LOG = Logger.getLogger(TestByeAck.class);
private boolean m_GotACK = false;