I have a legacy application built on Java, JSF, EJB & JDBC. I have Business logic layer (BLL) implemented as Stateless session beans & Data Access Layer (DAL) layer having DAO using JDBC.

JSP JSF Backing bean Business delegate Stateless Session Bean DAO JDBC

Now, I would like to abstract and reuse the existing BLL & DAL layers and expose web service interfaces with maximum reuse of existing code. This is because I need to allow these services to be used by different mobile devices.

1) What are the best practices and design consideration I need to take care of?
2) How I can ensure maximum code reuse?
3) I am more inclined towards using RESTful web services instead of Soap based webservices. What are the issues/risks, I need to take care of?

Any pointers are greatly appreciated.