トップ «前の日記(2009-09-22) 最新 次の日記(2009-09-30)» 編集

Ussy Diary


2009-09-26

[Seasar]Provider を切り替える

遊びで 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 からも利用されていました。なるほどなるほど。