Linha de Aprendizado

Olá pessoal,

Mais uma vez estou precisando de ajuda de vocês.

Tenho conhecimento sobre Java, já usei e continuo usando porém nada de forma profissional. Já desenvolvi alguns aplicativos para necessidades próprias ou específicas de alguns contatos, já usei, JSF+PrimeFaces+Hibernate+Maven+Spring Security+Github e só. Porém agora estou frente a um desafio mais profissional e gostaria antes de iniciar de fato e colocar o projeto em prática, estudar e aprender os conceitos mais a fundo, para evitar (ou diminuir) problemas futuros no projeto, então minha pergunta é:

Depois de solidificar o básico do desenvolvimento Web, com Servlet + JSP + JSTL, qual a linha de aprendizado que devo seguir para desenvolver com fluência Java para Web. Pensei na seguinte linha de estudo aprofundado.

1 - JPA (Conheço de forma intermediária)

2 - Hibernate (Conheço de forma intermediária)

3 - JSF (Conheço de forma inicial)

4 - PrimeFaces (Conheço de forma inicial)

5 - EJB3 (Não conheço, nunca usei)

6 - Spring Security (Conheço de forma inicial)

7 - Alguma ferramenta, ou Framework para geração de relatórios, além do iReport o JasperReport (Quais as opções?)

Minha linha de raciocínio está correta? Devo inserir mais algum conceito? Inverter a ordem? E sobre a questão dos relatórios que ferramentas ou framework devo estudar?

Aguardo orientações!!

java-ee frameworks

Spring mvc é uma boa também.