Hi Stephen,
Not sure if I can help you much since I don�t remember much about PetStore application and the only thing I remember is that PetStore is probably one of the best examples proving that J2EE in general and Sun design
patterns in particular are such low quality software solutions. This gave Microsoft the possibility to develop their .NET PetShop counterpart that uses 10 times less amount of code and performs several times better, while it provides the same functionality. It�s also funny when you think that were people trying to improve the PetStore app, but they used different patterns and practice that were forbidden by Sun. What a mess�
Hence my first advice to you would be to look somewhere else for design patterns and don�t take it very hard to understanding PetStore.
On the other hand, without pretending I�ll give you the right answer, one good reason to have two different service locators, is because the web tier has two possibilities: to access the ejbs through remote or local interfaces, depending upon the clustering architecture, or simply if the web server and ejb container runs in different jvms. As for the ejb service locator, it supposes to use always the local interfaces, since the application uses a session fa�ade.
Regards.