I have a swing client too! I think a ServiceLocator is a good approach.
I can not imagine that there are better alternatives.
I'm thinking about something with IoC in order to access EJB in the same way on client side and on server side. But I've not tried it ....
what do you mean by IoC?
Annotations on client side coupling with an Inversion of control framework such as Spring or a Aspect library such as JBoss AOP.
It should be possible to have the same way to retrieve services on client and server side, but I'm afraid that something quite heavy to add to a simple Swing client application.