Use an Extension. They are a nice way to provide "global" stuff to actors:
public class MyWebServiceExtension extends
AbstractExtensionId<MyWebServiceExtension.MyWebServiceExt> {
public static MyWebServiceExtension MyWebServiceExtProvider =
new MyWebServiceExtension();
public MyWebServiceExt createExtension(ExtendedActorSystem system) {
return new MyWebServiceExt();
}
public static class MyWebServiceExt implements Extension {
private final MyWebServiceClient client = new MyWebServiceClient();
public MyWebServiceClient getClient() { return client; }
}
}
Then in your actor:
import static com.foo.MyWebServiceExtension.MyWebServiceExtProvider;
public class MyUntypedActor extends UntypedActor {
final MyWebServiceClient client =
MyWebServiceExtProvider.get(getContext().system()).getClient();
Or if you are using Spring you can use the IndirectActorProducer and let Spring DI your dependencies into your actors. See this project for an example.