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); } }