Общая идея при использовании стандартного API такая,
создаешь java.awt.image.BufferedImage, берешь от него с помощью getGraphics() Graphics2D, с помощью ее рисуешь что тебе надо, потом применяя ImageIO создаешь из BufferedImage картинку нужного формата и отдаешь ее в респонс сервлета.
все :)
Проблема только такая, если сервер Солярис или Линукс, на нем должны стоять иксы (не работать, а именно быть установленны), иначе java.awt не заработает.