I also thought that the second way is better, because first way requires lots of components which may make the scorer lose the concentration on the overall architectural design and a component is not a class, it is an item that performs a key functionality within a system and should be pluggable.
I am planning to use FacesServlet in the component diagram as well because the requirements of the component diagram in the assignment indicate that i should include the servlet.
But if I choose the second way, then another problem arises like how I will decide the provided/required interfaces between some specific components. For example between FacesServlet and BackingBeans components.
I've read the other topics related with this and the overall idea is to use "Reflection API" between them. It seems feasible, so agreed by me.
But what about the dependency between JSFPages and FacesServlet component? I don't know the provided/required interfaces between them. Better to show it with dependency arrow without naming the interfaces?
And I will use Transfer Object Design Pattern, but Transfer Objects are used in lots of layers/components like JSFPages, BackingBeans, SessionBeans, DAOs and Persistence. So if I try to show the dependencies between TransferObjects component and the other related components, my diagram will be complicated. Or should I only put dependency to the JSFPages and BackingBeans components because others are just transfering these objects?
Please supporters, continue sharing your thoughts and the others, please make some brainstorming.