[Seasar-user:16521] [S2Axis2] クライアント側の設定について
松山 大樹
[E-MAIL ADDRESS DELETED]
2008年 12月 17日 (水) 12:23:29 JST
松山です。
Teeda でも、SAStruts でもない、普通のServlet しかないWebアプリケーションから、
S2Axis2 を使用して、Webサービス(社内) からデータを取得しようとしています。
Webサービスは正常に動作しています。
クライアント側、つまり、Webアプリケーションでは、次のようにサービスを
呼び出しています。
------------------------------------------------------------------------------
■Servlet
public void doGet(HttpServletRequest aRequest, HttpServletResponse aResponse)
throws ServletException, IOException {
:
:
S2Container container = SingletonS2ContainerFactory.getContainer();
TestLogic testLogic = (TestLogic)container.getComponent(TestLogic.class);
UserInfoDto userInfo = testLogic.getUserInfo(userNo);
System.out.println("userInfo=" + userInfo);
:
:
}
■TestLogic
public class TestLogic {
//Service
private UserInfoService userInfoService = null;
public UserInfoDto getUserInfo(String aUserNo) {
UserInfoDto dto = userInfoService.getUserInfo(aUserNo);
:
:
return dto;
}
public void setUserInfoService(UserInfoService aUserInfoService) {
userInfoService = aUserInfoService;
}
------------------------------------------------------------------------------
実行すると、「TestLogic のプロパティuserInfoService が見つからない」という
警告が出て、userInfoService に何もDI されていません。
Servlet#doGet() で、
UserInfoService userInfoService = (UserInfoService)container.getComponent(UserInfoService.class);
とやると、正常にインスタンスが取得でき、サービスを実行できます。
dicon ファイルには、
<component class="jp.co.hoge.service.UserInfoService">
<aspect>ioRemoting</aspect>
</component>
と定義してあります。
また、TestLogic のDI は、
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
<property
name="instanceDef">@[E-MAIL ADDRESS DELETED]</property>
<initMethod name="addClassPattern">
<arg>"jp.co.hoge"</arg>
<arg>".*Logic"</arg>
</initMethod>
</component>
と定義しています。
userInfoService をDI するには、何が必要でしょうか?
よろしくお願いします。
--
::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
::: ICTシステムインテグレートサービスDiv.
::: Webソリューション開発Unit.
::: 松山 大樹 - [E-MAIL ADDRESS DELETED]
::: tel 045-683-3684 fax 020-4622-7043
Seasar-user メーリングリストの案内