11.13 PDFを生成しAmazon S3へ格納するサンプルプログラム(JAX-WS)
概要
PDFを生成しAmazon S3へ格納するサンプルプログラムです。
サンプル構成
| 項目 | ファイルパス |
|---|---|
| ソースサンプル |
<bswss-client_home>/sample/java/jax-ws/WSS_JAXWS_Sample13.java
|
ソースサンプル
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.URL;
import java.util.Map;
import org.apache.ws.axis2.Bizstream;
import org.apache.ws.axis2.BizstreamPortType;
import com.brainsellers.schemas.webservices.bizstream._2006_10.AmazonS3;
import com.brainsellers.schemas.webservices.bizstream._2006_10.GenerateOutputRequest;
import com.brainsellers.schemas.webservices.bizstream._2006_10.GenerateOutputResponse;
import com.brainsellers.schemas.webservices.bizstream._2006_10.LayoutData;
import com.brainsellers.schemas.webservices.bizstream._2006_10.LayoutDefinition;
import com.brainsellers.schemas.webservices.bizstream._2006_10.Output;
import com.brainsellers.schemas.webservices.bizstream._2006_10.Pdf;
import com.brainsellers.schemas.webservices.bizstream._2006_10.Tag;
import com.brainsellers.schemas.webservices.bizstream._2006_10.Tags;
import jakarta.xml.ws.BindingProvider;
import jakarta.xml.ws.WebServiceFeature;
import jakarta.xml.ws.soap.MTOMFeature;
public class WSS_JAXWS_Sample13 {
// Webサービスサーバのホスト名
private static final String WSS_HOST_NAME = "wsssrv";
// Webサービスサーバ上のサンプルディレクトリの場所
private static final String BIZSTREAM_SAMPLE_DIR = "/bs/sample";
// 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";
// Webサービスサーバ上の入力レイアウト定義ファイルパス
private static final String LAYOUT_FILE = BIZSTREAM_SAMPLE_DIR + "/xml/Sample1.xml";
// 格納するファイルのバケット内のパス (先頭に/は不要)
private static final String TARGET_FILE_PATH = "Sample/WSS_JAXWS_Sample13.pdf";
/**
* @param args
*/
public static void main(String[] args) {
new WSS_JAXWS_Sample13();
}
/**
* メイン
*/
public WSS_JAXWS_Sample13() {
try {
// 認証を設定
setAuth();
// Amazon S3にPDFファイルを格納
GenerateOutputResponse response = generateOutput();
// レスポンスより格納したファイルの情報を取得
AmazonS3 s3 = response.getAmazonS3();
String region = s3.getRegion(); // リージョン
String bucketName = s3.getBucketName(); // バケット名
String filePath = s3.getFilePath(); // ファイルパス
System.out.println("region=" + region + ", bucketName=" + bucketName + ", filePath=" + filePath);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 認証の設定
*/
private void setAuth() {
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USER_NAME, PASSWORD.toCharArray());
}
});
}
/**
* 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();
// Amazon S3への格納設定
// ・下記のようなAPI指定の他にcloud_storage.propertiesファイルでの指定が可能
// ・特にアクセスキーとシークレットキーはセキュリティ上cloud_storage.propertiesファイルにて設定すること
// ・APIとpropertiesファイルと両方指定している場合はAPI指定が優先される
// ・ファイルパスはAPIでの指定が必須
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);
}
}
