遊びで Seasar で Web アプリケーションをつくっています。そのなかでデータ変換しようと、簡単なツールをつくって main から実行しようと
SingletonS2ContainerFactory.init(); ItemService itemService = SingletonS2Container.getComponent(ItemService.class);
こんなコードで実行してみたところ init のところで実行エラー。
java.lang.UnsupportedOperationException: createRequestComponentDeployer
原因は Provider が標準の DefaultProvider を利用していて、 request/session スコープのものを取り込むときに発生するものでした。 自分で管理していないところで使われていたので、 init する前に Provider を切り替えてあげたところ、うまく動きました。
ComponentDeployerFactory.setProvider(new ExternalComponentDeployerProvider()); SingletonS2ContainerFactory.init(); ItemService itemService = SingletonS2Container.getComponent(ItemService.class);
ComponentDeployerFactory#setProvider は S2ContainerServlet からも利用されていました。なるほどなるほど。