11.7 CSV を生成しファイルシステムへ保存するサンプル(JAX-WS)
概要
CSVを生成しファイルシステムへ保存するサンプルプログラムです。
サンプル構成
項目 | ファイルパス |
---|---|
ページレイアウトサンプル |
<bswss-client_home>/sample/xml/Sample6.xml
![]() |
ソースサンプル |
<bswss-client_home>/sample/java/jax-ws/WSS_JAXWS_Sample7.java
![]() |
ソースサンプル
import java.io.FileOutputStream; import java.net.Authenticator; import java.net.PasswordAuthentication; import java.net.URL; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Map; import org.apache.ws.axis2.Bizstream; import org.apache.ws.axis2.BizstreamPortType; import org.w3._2005._05.xmlmime.Base64Binary; import com.brainsellers.schemas.webservices.bizstream._2006_10.Csv; import com.brainsellers.schemas.webservices.bizstream._2006_10.DataType; import com.brainsellers.schemas.webservices.bizstream._2006_10.GenerateDataRequest; import com.brainsellers.schemas.webservices.bizstream._2006_10.LayoutData; import com.brainsellers.schemas.webservices.bizstream._2006_10.LayoutDefinition; import com.brainsellers.schemas.webservices.common._2006_10.FileData; import jakarta.xml.ws.BindingProvider; import jakarta.xml.ws.WebServiceFeature; import jakarta.xml.ws.soap.MTOMFeature; public class WSS_JAXWS_Sample7 { // Webサービスサーバのホスト名 private static final String WSS_HOST_NAME = "wsssrv"; // Webサービスサーバ上のサンプルディレクトリの場所 private static final String WSS_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 = WSS_BIZSTREAM_SAMPLE_DIR + "/xml/Sample6.xml"; // 出力先ファイルパス private static final String OUTPUT_FILE = "C:/Temp/WSS_JAXWS_Sample7.csv"; // CSVファイルのエンコーディング private static final String ENCODING = "MS932"; // CSVファイルの改行コード private static final String LINE_SEPARATOR = "CRLF"; /** * @param args */ public static void main(String[] args) { new WSS_JAXWS_Sample7(); } /** * メイン */ public WSS_JAXWS_Sample7() { try{ // 認証の設定 setAuth(); // データの生成 byte[] data = generate(); // 取得したファイルを書き出す FileOutputStream fos = new FileOutputStream(OUTPUT_FILE); fos.write(data); fos.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 認証の設定 */ private void setAuth() { Authenticator.setDefault(new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(USER_NAME, PASSWORD.toCharArray()); } }); } /** * アプリケーションでデータソースを設定してPDFを生成しダウンロードする * * @param * @return byte[] */ private byte[] 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); // リクエストメッセージを作成 GenerateDataRequest request = new GenerateDataRequest(); // 出力ファイルの種類を生成 DataType dataType = new DataType(); Csv csv = new Csv(); csv.setEncoding(ENCODING); csv.setLineSeparator(LINE_SEPARATOR); dataType.setCsv(csv); request.setDataType(dataType); // レイアウト定義を設定 LayoutData layoutData = new LayoutData(); LayoutDefinition layout = new LayoutDefinition(); layout.setUri(LAYOUT_FILE); layoutData.getLayoutDefinition().add(layout); request.setLayoutData(layoutData); // リクエストを送信 FileData data = type.generateData(request); /* * CSV出力はFileData#getContentDataGroup()よりBase64Binaryの配列を取得する * (CSVの1行が1配列要素となっている) */ // データサイズの計算 ArrayList<Base64Binary> list = (ArrayList<Base64Binary>) data.getContentDataGroup().getContentData(); int size = 0; for (int i = 0; i < list.size(); i++) { Base64Binary base64 = list.get(i); byte[] lineData = base64.getValue(); size += lineData.length; } // CSVデータの連結 ByteBuffer buffer = ByteBuffer.allocate(size); for (int i = 0; i < list.size(); i++) { Base64Binary base64 = list.get(i); byte[] lineData = base64.getValue(); buffer.put(lineData); } return buffer.array(); } }