11.9 PDF を生成しリポジトリに格納後、ファイルシステムへ出力する サンプル(JAX-WS)
概要
PDFを生成しリポジトリに格納後、ファイルシステムへ出力するサンプルプログラムです
ソースサンプル
<biz-Stream_home>/sample/soap_client/java/jax-ws/WSS_JAXWS_Sample8.java
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(); } }