I’m refactoring an existing (Ajax) Java Web application, which currently holds lots of its logic directly in the servlets. (The servlets even call each other, using a few nasty tricks …)
The refactoring itself is painful, but pretty much straightforward (refactoring everything to use Dependency Injection now).
My problem is, that I really can’t come up with the perfect naming scheme:
The refactored Servlets are now holding just a minimum amount of logic (just so much that they process the ServletRequest and ServletResponse, send an HTTP error code, etc.), then they call what I currently refer to as Processors (good/bad name?!?), which can be reused by several Servlets, Test classes, … The processors perform the logic required for the action, similar to what a Session Bean would do if we were using EJBs.
I never thought, that “Session Bean” would be a good name anyway. And I’m also not very keen on defining a monolithic “Facade”. I’m looking primarily for a better name than “Processor”, or maybe some ideas how you structure your Servlet processing code.
Example
This is a simplified example (the real application uses GWT with Gilead, … but that’s not so important):
public class UserRegistrationServlet extends HttpServlet {
@Inject
UserRegistrationProcessor userRegistrationProcessor;
@Override
protected void doPost(final HttpServletRequest req,
final HttpServletResponse resp)
throws ServletException, IOException {
RegistrationRequest registrationRequest = parseRegistrationRequest(req);
RegistrationResult registrationResult =
userRegistrationProcessor.process(registrationRequest);
pw.print(toJson(registrationResult));
...
}
}
As the example suggests, I prefer to have specialized processors, which are responsible for one task only (or maybe a few very strongly related tasks) – opposed to a big class that handles lots of different actions.
Here is my example based on previous discussion:
Hope this helps.