biz-Streamマニュアル Webサービスサーバ ガイド 第11章 サンプルプログラム(Java) 11.11 リポジトリにディレクトリを作成しファイルを格納するサンプル(JAX-WS)

11.11 リポジトリにディレクトリを作成しファイルを格納するサンプル(JAX-WS)

概要

リポジトリにディレクトリを作成しファイルを格納するサンプルプログラムです。


環境準備

事前に『2.7 クライアントアプリケーションの環境構築』を確認してください。


サンプル構成

項目 ファイルパス
ソースサンプル <bswss-client_home>/sample/java/jax-ws/WSS_JAXWS_Sample11.java サンプル1

ソースサンプル

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.URL;
import java.util.Map;

import org.apache.ws.axis2.Cms;
import org.apache.ws.axis2.CmsPortType;
import org.w3._2005._05.xmlmime.Base64Binary;

import com.brainsellers.schemas.webservices.cms._2006_10.MkdirRequest;
import com.brainsellers.schemas.webservices.common._2006_10.FileData;
import com.brainsellers.schemas.webservices.common._2006_10.Success;

import jakarta.xml.ws.BindingProvider;
import jakarta.xml.ws.WebServiceFeature;
import jakarta.xml.ws.soap.MTOMFeature;



public class WSS_JAXWS_Sample11 {

	// Webサービスサーバのホスト名
	private static final String WSS_HOST_NAME = "wsssrv";

	// Webサービスのエンドポイントプリフィックス
	private static final String WSS_SERVICE_LOCATION = "http://" + WSS_HOST_NAME + ":8080/axis2/services";

	// BASIC認証のユーザ名
	private static final String USER_NAME = "bizuser1";

	// BASIC認証のパスワード
	private static final String PASSWORD = "bizuser1";

	// 監査ロギング用のユーザ定義
	private static final String USER_DEF = "AAA";

	// リポジトリ内に作成するディレクトリ名
	private static final String MKDIR_NAME = "/Sample11_JAXWS";

	// 入力元ファイルパス
	private static final String INPUT_FILE_PATH = "C:/Temp/WSS_JAXWS_Sample7.csv";

	// リポジトリへの出力先
	private static final String TARGET_FILE_PATH = "/Sample11_JAXWS/WSS_JAXWS_Sample11.csv";


	/**
	 *
	 * @param args
	 */
	public static void main(String[] args) {
		new WSS_JAXWS_Sample11();
	}

	/**
	 * メイン
	 */
	public WSS_JAXWS_Sample11() {
		try{
			// 認証の設定
			setAuth();

			// リポジトリにディレクトリを作成
			makeDir();

			// 作成したリポジトリにファイルを格納
			putData();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 認証の設定
	 */
	private void setAuth() {
		Authenticator.setDefault(new Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(USER_NAME, PASSWORD.toCharArray());
			}
		});
	}

	/**
	 * リポジトリにディレクトリを作成
	 *
	 * @return Success
	 */
	public Success makeDir() throws Exception {
		// クライアント生成
		Cms service = new Cms(new URL(WSS_SERVICE_LOCATION + "/cms?wsdl"));

		// MTOMを有効化
		WebServiceFeature feature = new MTOMFeature(true);
		CmsPortType type = service.getCmsSOAP11Port(feature);
		BindingProvider bp = (BindingProvider) type;
		Map<String, Object> reqContext = bp.getRequestContext();
		reqContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
				WSS_SERVICE_LOCATION + "/cms?UserDef=" + USER_DEF);

		// リクエストメッセージの作成
		MkdirRequest request = new MkdirRequest();
		request.setValue(MKDIR_NAME);

		// リクエストを送信
		return type.mkdir(request);
	}

	/**
	 * リポジトリにファイルを格納
	 *
	 * @return Success
	 */
	public Success putData() throws Exception {
		// クライアント生成
		Cms service = new Cms(new URL(WSS_SERVICE_LOCATION + "/cms?wsdl"));

		// MTOMを有効化
		WebServiceFeature feature = new MTOMFeature(true);
		CmsPortType type = service.getCmsSOAP11Port(feature);
		BindingProvider bp = (BindingProvider) type;
		Map<String, Object> reqContext = bp.getRequestContext();
		reqContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
				WSS_SERVICE_LOCATION + "/cms?UserDef=" + USER_DEF);

		// リクエストメッセージの作成
		FileData request = new FileData();
		request.setName(TARGET_FILE_PATH);

		Base64Binary inputData = new Base64Binary();
		File file = new File(INPUT_FILE_PATH);
		byte[] data = new byte[(int)file.length()];

		DataInputStream dp = new DataInputStream(new BufferedInputStream(new FileInputStream(INPUT_FILE_PATH)));
		dp.read(data);
		dp.close();

		inputData.setValue(data);
		request.setContentData(inputData);

		// リクエストを送信
		return type.put(request);
	}

}