- - PR -
SVF for Java/PDFでのPNGファイルの印刷時エラーについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-01-17 13:11
いつもお世話になっております。
ウィングアーク(旧:翼システム)社製のSVF for Java/PDFを使用して PNG画像付きの帳票作成をWeb開発しております。 【実行環境】 OS:WindowsServer2000 Java:1.4.1.03 APPserver:JRun4 Webserver:Apache 1ユーザで実施するとうまく良くのですが、2ユーザ以上で同時実行した際に java.lang.OutOfMemory エラーが発生して実行できなくなります。 上記エラーはSVFのデバッグモードから出力されたファイル内に書かれています。 ウィングアーク社のFAQからjavaのヒープメモリの設定を変更する様な事が 書かれていたのですが、いくら試しても問題が解決しません。 サーバ上の物理メモリ量は1G程余裕があります。 JRunのヒープは xms512M xmx512Mに設定し SVFのヒープは SimpleHttpd.runファイルの中で xms1024M xmx1024Mに設定しております 以下にSVFから出力されたログと当実行モジュールのソースです。 == SVFログ == [ 2] VrInit("MS932") = [0] [ 2] Product Home is [E:\Program\SVFJP\svfjpd\lib] [10] System Time is [Mon Jan 16 22:28:15 JST 2006] [10] This Product is [SVF for Java Print, Version 6.3 (build 200312121508)] [10] Java Runtime Information's [10] Operating system name : Windows 2000 [10] Operating system version : 5.0 [10] Operating system architecture : x86 [10] Java Runtime Environment version : 1.4.1_03 [10] Java Runtime Environment vendor : Sun Microsystems Inc. [10] Java vendor URL : http://java.sun.com/ [10] Java class path : E:\Program\JRun4\servers\lib;E:\Program\JRun4\servers\lib\pbclient42RE.jar;E:\Program\JRun4\servers\lib\pbserver42RE.jar;E:\Program\JRun4\servers\lib\pointbase-service.jar;E:\Program\SVFJP\svfjpd\lib\svf.jar;E:\Program\JRun4\lib\jrun.jar [10] Java installation directory : E:\Program\j2sdk1.4.1_03\jre [10] User's home directory : C:\Documents and Settings\Administrator [10] User's current working directory : E:\Program\JRun4\bin [10] Temporary directory : -Djava.io.tmpdir=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\2\ [10] Package home directory : -Djp.co.fit.vfreport.home=null [10] Character encoding name : MS932 [10] Free/Total memory size : 97,781,080/532,742,144 bytes [10] VrInit() ... Use Default Encoding Property [] [11] VrInit("MS932") = [0] [ 2] VrSetPrinter("EMF", "EMF") = [0] [11] VrSetPrinter("EMF", "EMF") = [0] [ 2] VrSetSpoolFileName2("//stmsv89/DocRoot/sample/print/wdp/8351_1137418094878.WDP") = [0] [11] VrSetSpoolFileName2("//stmsv89/DocRoot/sample/print/wdp/8351_1137418094878.WDP") = [0] [ 2] VrComout("/{SPLM 3}/") = [0] [11] VrComout("/{SPLM 3}/") = [0] [ 2] VrComout("/{NULL 0}/") = [0] [10] File Full Path [F:/App/sample/default-ear/default-war/sample/print/frm/MapPrint.frm] --> [F:\App\maprouteDlv\default-ear\default-war\maprouteDlv\print\frm\MapPrint.frm] [ 2] VrSetForm("F:\App\sample\default-ear\default-war\maprouteDlv\print\frm\MapPrint.frm", 5) = [0] [11] VrSetForm("F:/App/sample/default-ear/default-war/sample/print/frm/MapPrint.frm", 5) = [0] [11] VrsOut("名称", "北海道") = [0] [11] VrsOut("日時", "2006/1/16 22:28") = [0] [11] VrsOut("コード", "00000000") = [0] [11] VrsOut("名前", "ああああああああ") = [0] [11] VrsOut("fileName", "F:/App/sample/default-ear/default-war/maprouteDlv/print/png/1137418053066_0.png") = [0] [11] VrEndRecord() = [0] [11] VrsOut("名称", "北海道") = [0] [11] VrsOut("日時", "2006/1/16 22:28") = [0] [11] VrsOut("コード", "11111111") = [0] [11] VrsOut("名前", "いいいいいいいい") = [0] [11] VrsOut("fileName", "F:/App/sample/default-ear/default-war/maprouteDlv/print/png/1137418062503_0.png") = [0] [ 2] VrsOut("名称", "北海道") = [0] [ 2] VrsOut("日時", "2006/1/16 22:28") = [0] [ 2] VrsOut("名前", "ああああああああ") = [0] [ 2] VrsOut("販売店コード", "00000000") = [0] [ 2] VrsOut("filename", "F:/App/sample/default-ear/default-war/maprouteDlv/print/png/1137418053066_0.png") = [0] [10] java.lang.OutOfMemoryError [11] VrEndRecord() = [-4971] [ 2] VrsOut("拠点名称", "北海道") = [0] [ 2] VrsOut("日時", "2006/1/16 22:28") = [0] [ 2] VrsOut("名前", "ああああああああ") = [0] [ 2] VrsOut("コード", "00000000") = [0] [ 2] VrsOut("filename", "F:/App/sample/default-ear/default-war/maprouteDlv/print/png/1137418053066_0.png") = [0] [ 2] VrComout("/{SATOCUT}/") = [0] [ 2] VrEndPage() = [0] [ 2] VrGetAttribute("$SPOOLFILENAME$", "", "\\stmsv89\DocRoot\maprouteDlv\print\wdp\8351_1137418094878.WDP") = [0] [ 2] VrQuit() = [0] [10] print output failed. [11] VrQuit() = [0] == サンプルソース ==(ShopCDとShopNameはStringが入ったArrayList) //SVF実行部ライブラリインスタンス化 Vrw32 svf = new Vrw32(); int ret; //ライブラリ初期化 ret = svf.VrInit(); if (ret < 0) throw new SVFPrintException("VrInit エラー:", ret); //出力するプリンタ指定 ret = svf.VrSetPrinter("EMF", "EMF"); if (ret < 0) throw new SVFPrintException("VrSetPrinter エラー:", ret); /*** プロパティファイル取得 ***/ // 受信用メッセージハンドラの生成 ServletStreamMessageHandler handler = new ServletStreamMessageHandler(); try { wdpURL = prop.getMessage(PrintMapOriginal.WDP_URL);//wdpファイルのURL frmURL = prop.getMessage(PrintMapOriginal.FRM_URL);//frmファイルのURL pngURL = prop.getMessage(PrintMapOriginal.PNG_URL);//pngファイルのURL } catch (Exception e) { handler.setMessage(e.getMessage()); } //出力ファイル名設定 ret = svf.VrSetSpoolFileName2(wdpURL + this.wdpCD + "_" + TIMEN + ".WDP"); if (ret < 0) throw new SVFPrintException("VrSetSpoolFileName2 エラー:", ret); /*** VrComout関数 ***/ ret = svf.VrComout("/{SPLM 3}/"); if (ret < 0) throw new SVFPrintException("VrComout エラー:", ret); // 様式ファイルと、出力モード指定 ret = svf.VrSetForm(frmURL, 5); if (ret < 0) throw new SVFPrintException("VrSetForm エラー:", ret); /**文字列データをフィールドに指定開始***/ for(int i=0;i<dataSize;i++){ //名称 ret = svf.VrsOut("名称", baseName); if(ret < 0) throw new SVFPrintException("名称 エラー", ret); //日時 dateAndTime = DateAndTime.getDate(); ret = svf.VrsOut("日時", dateAndTime); if(ret < 0) throw new SVFPrintException("日時 エラー", ret); //コード ret = svf.VrsOut("コード",(String)shopCD.get(i)); if(ret < 0) throw new SVFPrintException("コード エラー", ret); //名前 ret = svf.VrsOut("名前",(String)shopName.get(i)); if(ret < 0) throw new SVFPrintException("名前 エラー", ret); //画像データ if (pngFileName[i] != null) { ret = svf.VrsOut("fileName", pngFileName[i]); if (ret < 0) throw new SVFPrintException("fileName", ret); } /**文字データのフィールド出力終了***/ //出力終了 ret = svf.VrEndRecord(); if (ret < 0) throw new SVFPrintException("VrEndRecord エラー:", ret); } //帳票印刷終了 ret = svf.VrPrint(); if (ret < 0) throw new SVFPrintException("VrPrint エラー:", ret); //ライブラリ開放 ret = svf.VrQuit(); if (ret < 0) throw new SVFPrintException("VrQuit エラー:", ret); ====================================================== 上記ソースはServletで PNGファイルは一枚180KB程の地図画像のデータで、fileNameには そのPNGファイルのフルパスを指定しています。 そのほかに必要な文字データを一緒に出力する仕様になっています。 ログの実行時は2つの帳票が出るようにインプットをしました。 (コードが00000000と11111111)しかし、コードが00000000のデータが ログファイルに何度もはかれているのが少し気になるのですが、、 SVFの帳票作成にお詳しい方、いらっしゃいましたら ご教授ください。よろしくお願いいたします。 |
1