biz-StreamマニュアルWebサービスサーバ ガイド第11章 サンプルプログラム(Java)11.9 PDF を生成しリポジトリに格納後、ファイルシステムへ出力する サンプル(JAX-WS)

11.9 PDF を生成しリポジトリに格納後、ファイルシステムへ出力する サンプル(JAX-WS)

概要

PDFを生成しリポジトリに格納後、ファイルシステムへ出力するサンプルプログラムです


スタブクラスの準備

事前に『11.1 Java で開発するための環境構築』の手順を実行します。


ソースサンプル

<biz-Stream_home>/sample/soap_client/java/jax-ws/WSS_JAXWS_Sample8.java サンプル8


    import java.io.FileOutputStream;
    import java.net.Authenticator;
    import java.net.PasswordAuthentication;
    import java.net.URL;
    import java.util.Map;

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

    import org.apache.ws.axis2.Bizstream;
    import org.apache.ws.axis2.BizstreamPortType;
    import org.apache.ws.axis2.Cms;
    import org.apache.ws.axis2.CmsPortType;

    import com.brainsellers.schemas.webservices.bizstream._2006_10.File;
    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.cms._2006_10.GetRequest;
    import com.brainsellers.schemas.webservices.common._2006_10.FileData;
    import com.sun.xml.internal.ws.developer.WSBindingProvider;




    public class WSS_JAXWS_Sample8 {

       // 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/Cloud/CloudSample1.xml";

       // 格納するファイルのリポジトリ内のパス
       private static final String TARGET_FILE_PATH = "/WSS_JAXWS_Sample8.pdf";

       // 出力ファイル名
       private static final String OUTPUT_FILE = "C:/Temp/WSS_JAXWS_Sample8.pdf";


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

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

               // リポジトリにPDFファイルを格納
               generate();

               // リポジトリからPDFファイルを取得
               byte[] data = get();

               // 取得したファイルを書き出す
               FileOutputStream fout = new FileOutputStream(OUTPUT_FILE);
               fout.write(data);
               fout.close();
           } catch (Exception e) {
               e.printStackTrace();
           }
       }

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

       /**
        * 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();

           // 出力ファイルの種類を設定
           File file = new File();
           file.setName(TARGET_FILE_PATH);
           Pdf pdf = new Pdf();
           pdf.setFile(file);
           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);
       }

       /**
        * リポジトリ内のファイルを取得
        *
        * @return byte[]
        */
       private byte[] get() throws Exception {
           // クライアントを生成
           Cms service = new Cms(new URL(WSS_SERVICE_LOCATION + "/cms?wsdl"));

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

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

           // リクエストを送信
           FileData fileData = type.get(request);

           return fileData.getContentData().getValue();
       }
    }