For designing assignment architecture, are we suppose to use technologies limited to JEE stack or we are free to use any open source technology like Struts, Javascript frameworks, Spring, etc for different tiers
Specific frameworks or app servers are implementation level not design level, which the architect is really doing.
For example, you plan to use Spring... how is the Spring framework set up? DispatcherServlet is the front controller, the @Controller classes are application controllers etc. When you map that to the design, such classes are design patterns.
Another example is JSF, since it's part of JEE so explicitly stating JSF will be fine. But still identifying those classes is key.