Spring Beans - это синглтоны по своему контексту, а не классические синглтоны per-vm. Так что я бы сказал, что проблема в том, что апплеты, очевидно, имеют один и тот же Spring Context (что они не должны)
Отвечая на комментарии:
ServiceProvider.getContextInstace().getService(name...).
Как насчет того, чтобы этот ServiceProvider использовал ThreadLocal
для внутреннего хранения своего контекста (обычно для каждого апплета должен быть ровно один поток, верно?)