|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjp.co.fujitsu.reffi.client.swing.model.BaseModel
jp.co.fujitsu.reffi.client.swing.model.AbstractHTTPCore
jp.co.fujitsu.reffi.client.swing.model.WebServiceCore
public class WebServiceCore
[概 要]
サーバとSOAP通信を行う為の機能モデルクラスです。[詳 細]
wsimportで生成されたJAX-WS通信スタブを操作してSOAP通信を行います。 必須設定メソッドsetServiceClass(Class) : JAX-WS Serviceクラスの設定setPortClass(Class) : JAX-WS Portクラスの設定setMethodName(String) : 呼び出すサービスメソッド名setParameters(TypeMaintainList) : サービスメソッド引数setRequestTarget(String, QName) : 接続先WSDLの設定
// 送信先サービスを動的決定
String wsdlLocation = "http://foo.bar/DummyReceptor/filerecieve?wsdl":
QName serviceName = new QName("http://recept.ws.dummy/", "FileRecieveService");
((WebServiceCore)next).setRequestTarget(wsdlLocation, serviceName);
上記セッターを実行することで、Serviceクラスのインスタンス化時、実行するコンストラクタ
を切り替えます。[備 考]
BASIC認証、DIGEST認証、Cookieに関する設定はAbstractHTTPCoreを参照して下さい。
使用例)
package demo.webservice.action;
import java.util.List;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import jp.co.fujitsu.reffi.client.swing.action.BaseAction;
import jp.co.fujitsu.reffi.client.swing.event.ModelProcessEvent;
import jp.co.fujitsu.reffi.client.swing.model.Model;
import jp.co.fujitsu.reffi.client.swing.model.WebServiceCore;
import jp.co.fujitsu.reffi.client.swing.util.MessageDialogUtil;
import demo.server.ws.mtom.FileRecieve;
import demo.server.ws.mtom.FileRecieveService;
public class MtomSendAction extends BaseAction {
@Override
protected void reserveModels(List> models) {
models.add(WebServiceCore.class);
}
@Override
public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
if(index == 0) {
((WebServiceCore)next).setAsync(true);
((WebServiceCore)next).setServiceClass(FileRecieveService.class);
((WebServiceCore)next).setProxyClass(FileRecieve.class);
((WebServiceCore)next).setMethodName("sendBinary");
DataHandler uploadData = new DataHandler(new FileDataSource("D:\\bigSizeFile.zip"));
((WebServiceCore)next).addParameter(uploadData);
}
return true;
}
@Override
public void successForward(int index, Model model, Object result) throws Exception {
showMessageDialog("ファイルアップロードが完了しました。");
}
@Override
public Exception failureForward(int index, Model model, Exception e) {
showMessageDialog("ファイルアップロードが失敗しました", "", MessageDialogUtil.ERROR_MESSAGE);
return super.failureForward(index, model, e);
}
}
使用例)
package demo.communication.action;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPHeader;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
public class UsernameTokenHandler implements SOAPHandler {
@Override
public boolean handleMessage(SOAPMessageContext context) {
Boolean outboundProperty = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (outboundProperty.booleanValue()) {
try {
// SOAP情報
SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
SOAPHeader header = envelope.getHeader();
if (header == null){
header = envelope.addHeader();
}
// セキュリティ
SOAPElement security =
header.addChildElement("Security", "wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
// セキュリティ(タイムスタンプ)
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.add(Calendar.HOUR, -9);
Date createdDate = cal.getTime();
cal.add(Calendar.MINUTE, 5);
Date expiresDate = cal.getTime();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.'S'Z'", Locale.ENGLISH);
SOAPElement timestamp =
security.addChildElement("Timestamp", "wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
SOAPElement created =
timestamp.addChildElement("Created", "wsu");
created.addTextNode(sdf1.format(createdDate));
SOAPElement expires =
timestamp.addChildElement("Expires", "wsu");
expires.addTextNode(sdf1.format(expiresDate));
// セキュリティ(UsernameToken)
SOAPElement usernameToken =
security.addChildElement("UsernameToken", "wsse");
usernameToken.addAttribute(new QName("xmlns:wsu"), "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
SOAPElement username =
usernameToken.addChildElement("Username", "wsse");
username.addTextNode("alice");
SOAPElement password =
usernameToken.addChildElement("Password", "wsse");
password.setAttribute("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");
password.addTextNode("bobPW");
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}
@Override
public Set getHeaders() {
return null;
}
@Override
public boolean handleFault(SOAPMessageContext context) {
return true;
}
@Override
public void close(MessageContext context) {
}
}
アクション
@Override
public boolean nextModel(int index, ModelProcessEvent prev, Model next) throws Exception {
if(index == 0) {
boolean soapAsync = (Boolean)getComponentValue("communicationFrame.jrbSoapAsync");
if(soapAsync) {
((WebServiceCore)next).setAsync(true);
}
((WebServiceCore)next).setServiceClass(HeavyProcessService.class);
((WebServiceCore)next).setProxyClass(HeavyProcess.class);
((WebServiceCore)next).setMethodName("heavyProcess");
((WebServiceCore)next).addParameter(5000L);
((WebServiceCore)next).setAuthentication("user", "pass".toCharArray());
// UsernameToken情報をヘッダに挿入するハンドラを追加
((WebServiceCore)next).addHandlerChain(new UsernameTokenHandler());
}
return true;
}
[環 境] JDK 6.0 Update 11
Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.
| コンストラクタの概要 | |
|---|---|
WebServiceCore()
[概 要] デフォルトコンストラクタです。 |
|
| メソッドの概要 | |
|---|---|
void |
addHandlerChain(javax.xml.ws.handler.Handler<javax.xml.ws.handler.soap.SOAPMessageContext> handler)
[概 要] SOAPハンドラのリストにSOAPハンドラを追加します。 |
void |
addParameter(boolean parameter)
[概 要] Webサービスメソッドの引数指定を追加します。 |
void |
addParameter(char parameter)
[概 要] Webサービスメソッドの引数指定を追加します。 |
void |
addParameter(double parameter)
[概 要] Webサービスメソッドの引数指定を追加します。 |
void |
addParameter(float parameter)
[概 要] Webサービスメソッドの引数指定を追加します。 |
void |
addParameter(int parameter)
[概 要] Webサービスメソッドの引数指定を追加します。 |
void |
addParameter(long parameter)
[概 要] Webサービスメソッドの引数指定を追加します。 |
void |
addParameter(java.lang.Object parameter)
[概 要] Webサービスメソッドの引数指定を追加します。 |
void |
addParameter(short parameter)
[概 要] Webサービスメソッドの引数指定を追加します。 |
java.util.List<javax.xml.ws.handler.Handler> |
getHandlerChain()
[概 要] SOAPハンドラのリストを取得します。 |
java.lang.String |
getMethodName()
[概 要] 呼び出すWebサービスメソッド名を返却します。 |
TypeMaintainList |
getParameters()
[概 要] Webサービスメソッドの引数を返却します。 |
java.lang.Class |
getPortClass()
[概 要] JAX-WS 通信スタブのPortクラスを返却します。 |
java.lang.Class<? extends javax.xml.ws.Service> |
getServiceClass()
[概 要] JAX-WS 通信スタブのServiceクラスを返却します。 |
protected void |
mainproc()
[概 要] 設定された通信スタブを使用してサーバとSOAP通信を行います。 |
protected void |
postproc()
モデル処理成功イベント、モデル処理終了イベントを発行します。 |
void |
setHandlerChain(java.util.List<javax.xml.ws.handler.Handler> handlerChain)
[概 要] SOAPハンドラのリストを設定します。 |
void |
setMethodName(java.lang.String methodName)
[概 要] 呼び出すWebサービスメソッド名を設定します。 |
void |
setParameters(TypeMaintainList parameters)
[概 要] Webサービスメソッドの引数を返却します。 |
void |
setPortClass(java.lang.Class portClass)
[概 要] JAX-WS 通信スタブのPortクラスを設定します。 |
void |
setRequestTarget(java.lang.String wsdlDocumentLocation,
javax.xml.namespace.QName serviceName)
[概 要] 取得するWSDLを動的に変更します。 |
void |
setServiceClass(java.lang.Class<? extends javax.xml.ws.Service> serviceClass)
[概 要] JAX-WS 通信スタブのServiceクラスを設定します。 |
| クラス jp.co.fujitsu.reffi.client.swing.model.AbstractHTTPCore から継承されたメソッド |
|---|
createCookieString, getAuthPassword, getAuthUser, isSendCookie, removeAuthentication, setAuthentication, setSendCookie |
| クラス jp.co.fujitsu.reffi.client.swing.model.BaseModel から継承されたメソッド |
|---|
addModelProcessListener, call, done, finalproc, fireModelFailure, fireModelFinished, fireModelSuccess, getController, getExecuteIndex, getListenerList, getParameterMapping, getResult, getSuccessCount, incrementSuccessCount, init, isAsync, isSkip, preproc, removeModelProcessListener, run, setAsync, setController, setExecuteIndex, setListenerList, setParameterMapping, setResult, setSkip, trap |
| クラス java.lang.Object から継承されたメソッド |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
|---|
public WebServiceCore()
throws java.lang.Exception
[概 要]
デフォルトコンストラクタです。[詳 細]
Webサービスメソッドパラメータリストインスタンスの初期化、 Handlerチェインリストの初期化を行います。[備 考]
java.lang.Exception| メソッドの詳細 |
|---|
public java.lang.Class<? extends javax.xml.ws.Service> getServiceClass()
[概 要]
JAX-WS 通信スタブのServiceクラスを返却します。[詳 細]
serviceClassフィールドを返却します。[備 考]
public void setServiceClass(java.lang.Class<? extends javax.xml.ws.Service> serviceClass)
[概 要]
JAX-WS 通信スタブのServiceクラスを設定します。[詳 細]
serviceClassフィールドを引数serviceClassで設定します。[備 考]
serviceClass - JAX-WS 通信スタブのServiceクラスpublic java.lang.Class getPortClass()
[概 要]
JAX-WS 通信スタブのPortクラスを返却します。[詳 細]
proxyClassフィールドを返却します。[備 考]
public void setPortClass(java.lang.Class portClass)
[概 要]
JAX-WS 通信スタブのPortクラスを設定します。[詳 細]
proxyClassフィールドを引数proxyClassで設定します。[備 考]
portClass - JAX-WS 通信スタブのProxyクラスpublic java.lang.String getMethodName()
[概 要]
呼び出すWebサービスメソッド名を返却します。[詳 細]
methodNameフィールドを返却します。[備 考]
public void setMethodName(java.lang.String methodName)
[概 要]
呼び出すWebサービスメソッド名を設定します。[詳 細]
methodNameフィールドを引数methodNameで設定します。[備 考]
methodName - 呼び出すWebサービスメソッド名public TypeMaintainList getParameters()
[概 要]
Webサービスメソッドの引数を返却します。[詳 細]
parametersフィールドを返却します。[備 考]
public void setParameters(TypeMaintainList parameters)
[概 要]
Webサービスメソッドの引数を返却します。[詳 細]
parametersフィールドを返却します。[備 考]
parameters - Webサービスメソッドの引数public void addParameter(java.lang.Object parameter)
[概 要]
Webサービスメソッドの引数指定を追加します。[詳 細]
parametersフィールドに引数parameterを追加します。[備 考]
parameter - Webサービスメソッドパラメータpublic void addParameter(char parameter)
[概 要]
Webサービスメソッドの引数指定を追加します。[詳 細]
parametersフィールドに引数parameterを追加します。[備 考]
parameter - Webサービスメソッドパラメータpublic void addParameter(short parameter)
[概 要]
Webサービスメソッドの引数指定を追加します。[詳 細]
parametersフィールドに引数parameterを追加します。[備 考]
parameter - Webサービスメソッドパラメータpublic void addParameter(int parameter)
[概 要]
Webサービスメソッドの引数指定を追加します。[詳 細]
parametersフィールドに引数parameterを追加します。[備 考]
parameter - Webサービスメソッドパラメータpublic void addParameter(long parameter)
[概 要]
Webサービスメソッドの引数指定を追加します。[詳 細]
parametersフィールドに引数parameterを追加します。[備 考]
parameter - Webサービスメソッドパラメータpublic void addParameter(float parameter)
[概 要]
Webサービスメソッドの引数指定を追加します。[詳 細]
parametersフィールドに引数parameterを追加します。[備 考]
parameter - Webサービスメソッドパラメータpublic void addParameter(double parameter)
[概 要]
Webサービスメソッドの引数指定を追加します。[詳 細]
parametersフィールドに引数parameterを追加します。[備 考]
parameter - Webサービスメソッドパラメータpublic void addParameter(boolean parameter)
[概 要]
Webサービスメソッドの引数指定を追加します。[詳 細]
parametersフィールドに引数parameterを追加します。[備 考]
parameter - Webサービスメソッドパラメータ
public void setRequestTarget(java.lang.String wsdlDocumentLocation,
javax.xml.namespace.QName serviceName)
throws java.net.MalformedURLException
[概 要]
取得するWSDLを動的に変更します。[詳 細]
通信スタブに記述されているWSDL以外を使用する場合はこのメソッドで ターゲットWSDLを変更します。
String wsdlLocation = "http://foo.bar.com/Acceptance/filerecieve?wsdl"
QName serviceName = new QName("http://com.bar.foo/", "FileRecieveService");
((WebServiceCore)next).setRequestTarget(wsdlLocation, serviceName);
[備 考]
wsdlDocumentLocation - WSDLロケーションserviceName - Service QName
java.net.MalformedURLExceptionpublic java.util.List<javax.xml.ws.handler.Handler> getHandlerChain()
[概 要]
SOAPハンドラのリストを取得します。[詳 細]
handlerChainフィールドを返却します。[備 考]
public void setHandlerChain(java.util.List<javax.xml.ws.handler.Handler> handlerChain)
[概 要]
SOAPハンドラのリストを設定します。[詳 細]
handlerChainフィールドに引数handlerChainを設定します。[備 考]
handlerChain - SOAPハンドラのリストpublic void addHandlerChain(javax.xml.ws.handler.Handler<javax.xml.ws.handler.soap.SOAPMessageContext> handler)
[概 要]
SOAPハンドラのリストにSOAPハンドラを追加します。[詳 細]
handlerChainフィールドに引数handlerを追加します。[備 考]
handler - SOAPハンドラ
protected void mainproc()
throws java.lang.InstantiationException,
java.lang.IllegalAccessException,
java.lang.ClassNotFoundException,
java.lang.SecurityException,
java.lang.NoSuchMethodException,
java.lang.IllegalArgumentException,
java.lang.reflect.InvocationTargetException
[概 要]
設定された通信スタブを使用してサーバとSOAP通信を行います。[詳 細]
以下の処理を行います。[備 考]
BaseModel 内の mainprocjava.lang.ClassNotFoundException
java.lang.IllegalAccessException
java.lang.InstantiationException
java.lang.NoSuchMethodException
java.lang.SecurityException
java.lang.reflect.InvocationTargetException
java.lang.IllegalArgumentException
protected void postproc()
throws java.lang.Exception
[詳 細]
fireModelSuccess、fireModelFinishedメソッドをコールします。[備 考]
BaseModel 内の postprocjava.lang.Exception - オーバーライド先で発生する可能性が有る例外
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||