В этом случае это было бы без гражданства.
Пока в нескольких вызовах нет состояния, нет необходимости в Stateful Bean.
Узкое место может быть узким местом, так как я бы не использовал такой метод, как getCustomersinNewYork (), но getCustomers (City city), а Singleton - это только один экземпляр, который следует использовать для синхронизации. Но возможно, чтобы метод был параллельным и сохранял карту с результатами для каждого города - но учтите, что вам нужно обрабатывать параллелизм.
С моей точки зрения, я оставляю приложение без сохранения состояния и позволяю StatelessBean рассчитывать количество клиентов на город для каждого запроса.
Если есть необходимость повысить производительность, поскольку запросы повторяются, я бы использовал кэш, такой как Infinispan, для хранения этого - то есть с истечением времени, чтобы время от времени пересчитывать число или позволить ему отбрасывать его, чтобы оно не использовалось дольше.
Имеет смысл?