Using circles is the usual way in Box2D. You can get some pretty good results too but you need to work on the surface tension code... that's the hardest part I believe.
The main thing is working out which particles are near the edge and keeping them connected up to a certain amount of force. When they are separated they will still need to attract one another within a certain distance.
Finally you'll have to work out how to make it look like water. Particles at the surface will need to have more intelligent textures than those underneath.
Diggsey produced a great demo for his Box2D plugin for DBPro. I would take a look at that if you're using C++ and want to try a shader...
EDIT: if your water only has a surface at the top then the above suggestion is fine. Nice idea.