[Seasar-user:18207] [S2Axis2] 例外処理について
松崎 学
[E-MAIL ADDRESS DELETED]
2009年 8月 6日 (木) 11:24:57 JST
松崎です。いつもお世話になっております。
S2Axis2での例外処理について質問させてください。
対応方法のアドバイスなどいただけると助かります。
Teedaで作成した既存のWebシステムがあり、
いくつかの画面を.NETで追加作成中です。
.NETとサーバ側の通信はS2Axis2を使ったWebサービスにしています。
やりたい事はサーバ側のチェックロジックで組み立てた
複数のエラーメッセージを.NET側でメッセージボックスに表示する事です。
Teeda開発時に作成済みの以下のメソッドがWebサービスで使えないので
困っています。
(facesContextがnullになるので。)
---------
public void putErrorMessage(String messageCode, Object[] args) {
FacesContext facesContext = FacesContext.getCurrentInstance();
FacesMessage facesMessage = FacesMessageUtil.getMessage(facesContext,
LocaleHelper.getLocaleStatic(), FacesMessage.SEVERITY_ERROR,
messageCode, args);
facesContext.addMessage(null, facesMessage);
}
---------
既存の業務エラーチェックは、AppFacesExceptionをthrowして
1エラー毎に画面に表示するパターンと、
facesContext#addMessageして、複数のエラーメッセージをまとめて1回で
画面に表示するパターンがあります。
1エラー毎に画面に表示するパターンは
以下のようにAppFacesExceptionを修正したら、期待した動きに出来ています。
---------
public AppFacesException(String messageCode, Object[] args, Throwable cause) {
super(cause);
final FacesContext context = FacesContext.getCurrentInstance();
if (context == null) {
// Webサービス呼び出し時はFacesContext.getCurrentInstance()がnullを返す
this.messageCode = messageCode;
this.args = args;
this.message = MacsMessageUtil.getMessage(messageCode, args);
} else {
final FacesMessage facesMessage = FacesMessageUtil.getMessage(
context, LocaleHelper.getLocaleStatic(),
FacesMessage.SEVERITY_ERROR, messageCode, args);
String message = facesMessage.getDetail();
if (message == null) {
message = facesMessage.getSummary();
}
this.messageCode = messageCode;
this.args = args;
this.message = message;
this.facesMessage = facesMessage;
}
}
---------
現在、以下のバージョンを使用しています。
Tomcat 5.5.26
JDK 1.5.0_15
S2Container 2.4.32
Teeda 1.0.13-sp4
S2Dao 1.0.49
S2Axis2 0.5.0
以上、よろしくお願いいたします。
--
松崎 学 <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内