Tony,
First thing is to move as much logic out of the servlets/EJBs as possible. In an
EJB, it is often possible to get all the logic out so there is nothing left to test.
For servlets, Mock Objects are useful (easymock, jmock, ...) You can test passing specific parameters in the servlet and check how your application responds.
Once you have done some unit testing, Cactus is good for integration testing.