biz-Streamマニュアル クラウドストレージ出力ガイド 第2章 Amazon S3出力を行うアプリケーション開発 2.4.1 基本的なコーディング方法(Webサービスサーバ)

2.4.1 基本的なコーディング方法(Webサービスサーバ)

ここでは、Amazon S3出力機能のコーディングに関して説明するため、biz-Streamライブラリを利用したPDFを生成するユーザ・アプリケーションがすでにあるものとします。
アプリケーションの開発方法およびレイアウトの作成方法に関しては「Webサービスサーバガイド」や「レイアウト・デザイナ ガイド」をご覧ください。

Amazon S3へ出力を行うためには、既存のPDF生成アプリケーションに対して、PDF生成エンジンの出力先に指定していた出力ストリームを AmazonS3OutputStream のインスタンスに変更します。

PDFを生成しリポジトリに格納するサンプルプログラム

	/**
	 * PDFを生成しリポジトリに格納
	 *
	 * @return GenerateOutputResponse
	 */
	private GenerateOutputResponse generate() throws Exception {
		// クライアントを生成
		Bizstream service = new Bizstream(new URL(WSS_SERVICE_LOCATION + "/bizstream?wsdl"));

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

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

		// 出力ファイルの種類を設定
		Repository repository = new Repository();
		repository.setFilePath(TARGET_FILE_PATH);
		Pdf pdf = new Pdf();
		pdf.setRepository(repository);
		Output output = new Output();
		output.setPdf(pdf);
		request.setOutput(output);

		// レイアウト定義を設定
		LayoutData layoutData = new LayoutData();
		LayoutDefinition layout = new LayoutDefinition();
		layout.setUri(LAYOUT_FILE);
		layoutData.getLayoutDefinition().add(layout);
		request.setLayoutData(layoutData);

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

これを Amazon S3へ出力するサンプルに移行する場合、次の赤行のような変更を加えることになります。
(PDFインスタンスに AmazonS3 インスタンスを設定します)

PDFを生成しAmazon S3へ出力するサンプルプログラム

    /**
     * PDFを生成しAmazon S3に格納する
     *
     * @return GenerateOutputResponse
     */
    private GenerateOutputResponse generateOutput() throws Exception {
        // クライアントを生成
        Bizstream service = new Bizstream(new URL(WSS_SERVICE_LOCATION + "/bizstream?wsdl"));
 
        // MTOMを有効化
        WebServiceFeature feature = new MTOMFeature(true);
        BizstreamPortType type = service.getBizstreamSOAP11Port(feature);
        BindingProvider bp = (BindingProvider) type;
        Map<String, Object> reqContext = bp.getRequestContext();
        reqContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
                WSS_SERVICE_LOCATION + "/bizstream?UserDef=" + USER_DEF);
 
        // リクエストメッセージの作成
        GenerateOutputRequest request = new GenerateOutputRequest();
 
        AmazonS3 s3 = new AmazonS3();
//      s3.setAccessKey("xxx");                     // アクセスキー (API指定は非推奨)
//      s3.setSecretKey("xxx");                     // シークレットキー (API指定は非推奨)
//      s3.setServiceEndpoint("s3.amazonaws.com");  // サービスエンドポイント
//      s3.setRegion("ap-northeast-1");             // リージョン
//      s3.setBucketName("BucketName");             // バケット名 (バケットは事前に作成しておくこと)
//      s3.setProxyHost("proxy");                   // プロキシホスト名
//      s3.setProxyPort(8080);                      // プロキシポート番号
        s3.setFilePath(TARGET_FILE_PATH);           // バケット内のファイルパス (必須)
        Tags tags = new Tags();
        for (int i = 1; i <= 10; i++) {
            // タグは10個まで設定可能
            Tag tag = new Tag();
            tag.setKey("key" + i);                  // タグのキー
            tag.setValue("value" + i);              // タグの値
            tags.getTag().add(tag);
        }
        s3.setTags(tags);
 
        Pdf pdf = new Pdf();
        pdf.setAmazonS3(s3);
 
        Output output = new Output();
        output.setPdf(pdf);
 
        request.setOutput(output);
 
        // レイアウト定義を設定
        LayoutData layoutData = new LayoutData();
        LayoutDefinition layout = new LayoutDefinition();
        layout.setUri(LAYOUT_FILE);
        layoutData.getLayoutDefinition().add(layout);
        request.setLayoutData(layoutData);
 
        // リクエストを送信
        return type.generateOutput(request);
    }