- JSF: a GUI framework - you don't need this if you only want to implement a backend
- EJB: a standard for distributed components, used to be horribly complex, but version 3 of the standard is quite easy to use. This could be part of your solution.
- Hibernate: An Object-relational mapping framework. It served as the inspiration for the JPA (Java Persistence Architecture) standard, which is now supported by both Hibernate and EJBs.
- Spring: An application framework that does all kinds of things, among them dependency injection, web GUIs and AOP.
However, if you want to do REST, then the most important standard for you is JAX-RS. You can use it either within the Spring framework or with EJBs. For persistence, you could use Hibernate, or the JPA implementation of an EJB container such as Glassfish