Ich würde die Service-Schicht als Kombination aus den beiden vorherigen Aussagen umschreiben.
Ein Service ist eine in sich geschlossene Kapsellung von Services. Diese sind normalerweise wie von The_S beschrieben als EJB oder WebService oder auch einfach intern als OSGi Services verfügbar. Können aber auch nur Bundle (oder Application) intern existieren und z.B. über ein Interface beschrieben sein und durch eine entsprechende Implementierung implementiert werden.
In dieser Beschreibung sind auch DAOs Service-Schichten, aber eine so bestimmte, dass diese Schicht einen zusätzlichen, expliziten Namen bekommen hat um eine saubere Abtrennung zu erhalten.
Prinzipiell kapselt also eine Service-Schicht Logik (intern) von Zugriff (extern).
Auf ein Auto übertragen ist das Gaspedal der externe Zugriff, der Motor, wie auch immer er seine Antriebskraft entwickelt (Strom, Benzin, Fusion, ...) die interne Implementierung die mich beim Fahren nicht interessiert und das Benzinzuleitsystem bzw. das Einspritzsystem das DAO (Was eben in diesem Fall statt Daten Kraftstoff zur Verfügung stellt).
So habe ich die Möglichkeit zu Fahren hinter dem Service mit der Implementierung versteckt.
edit:
Bücher sollte es genug dazu geben, da es sich um normale Design Pattern handelt.
Darf ich denn mal fragen was du in der Firma machst? Bist du Auszubildender oder hat man dich in den Bereich Java "reingezwängt"?