Emmet Brown
Emmet Brown

Reputation: 456

How can implement an Interface from a Remote stateless session bean?

im programming a project and im trying to apply multitier architecture. Right now ive got 2 EJB, business and persistence and a shared jar. Due a funcional requirment, persistence must be replaceable. I made an Interface called IPersistence. Then I crated a remote session bean called "persistence" inside the persistence EJB and put the remote interface in the shared library. Now, i need to call an IPersitence using injection from the business. How can i do that? Maybe the whole idea is wrong. I need some advice.

Thanks!

Upvotes: 0

Views: 467

Answers (1)

Andreas
Andreas

Reputation: 2450

Here is a simple example where you have a car repository/DAO that abstracts the persistence from the business logic by not exposing if it is stored in a database, file, XML etc. The business class then injects an instance to be able to - in this case - save to an database. However you could have made other classes that implemented the CarRepository and provide other means for saving data in your application without touching other parts of your code.

Persistence layer

Interface for the repository/DAO

@Local
public interface CarRepository {
    List<Car> findAllCars();

    // Many other methods
}

Repository (Domain driven design) or Data Access Object

@Stateless
public class CarSqlRepository implements CarRepository {

    @PersistenceContext(unitName = "MyUnit")
    private EntityManager entityManager;

    public List<Car> findAllCars() {

    }

    // Many other methods
}

Service/business layer

@Stateless
public class CarService {

    @Inject
    private CarRepository carRepository;

    public List<Car> findAllCars() {
        return carRepository.findAllCars();   
    }

    // Many other methods
}

Upvotes: 1

Related Questions