スクリプトから javaプログラムを実行する方法
概要
スクリプトからjavaプログラムを実行する方法を例をあげてご紹介いたします。
完成形のスクリプトは以下のようなイメージとなります。
以下手順について詳述します。
設定手順
1.Javaプログラム作成
Javaプログラムファイルを作成してください。
SkyOnDemandのJavaで実行するため Java6以上 にて実装してください。
SAMPLE
PDFファイルのページサイズとページ数を返すプログラムです。
import java.io.FileInputStream; import java.util.List; import org.apache.pdfbox.pdfparser.PDFParser; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; public class PdfInfoGetter { /** * PDFのサイズ(大きさ)を返します。 * ※Apache PDFBoxライブラリを使用しています。 * * @param args * 0:PDFのファイルパス * @throws Exception */ public static void main(String[] args) throws Exception { if (args.length != 1) { throw new Exception("引数が正しくありません。"); } String width = "0";//幅 String height = "0";//高さ int pageCount = 0;//ページ数 int pageRotation = 0;// 縦横 FileInputStream fs = null; String pdfFilePath = args[0]; try { fs = new FileInputStream(pdfFilePath); PDFParser pdfParser = new PDFParser(fs); pdfParser.parse(); PDDocument pdf = pdfParser.getPDDocument(); List<PDPage> allPages = pdf.getDocumentCatalog().getAllPages(); // 1ページ目のみ出力します。 pageCount = allPages.size(); if (allPages.size() > 0) { PDPage page = allPages.get(0); // 縦横混合のPDFの場合getRotationがNullとなる。 try { pageRotation = page.getRotation().intValue(); } catch (Exception e) { // 取得できないため縦横混合の場合は-1とする。 pageRotation = -1; } PDRectangle pdRectangle = page.getMediaBox(); width = String.valueOf(pdRectangle.getWidth()); height = String.valueOf(pdRectangle.getHeight()); } } finally { if (fs != null) { fs.close(); } } // //PDFサイズをScriptで取得するため System.out.print("WIDTH=" + width + ":HEIGHT=" + height + ":PAGE_COUNT=" + pageCount + ":PAGE_ROTATION=" + pageRotation); } }
2.ファイルをdataフォルダに配置
配置するファイル
- Javaプログラム(classファイル)
- 使用ライブラリ
- 実行するためのshファイル
shファイルの内容
- 使用ライブラリのクラスパス指定をします。
SkyOnDemandのJavaプログラムと実行するクラスを指定します。($1は引数)
JavaのファイルパスやJavaのバージョンが今後変わる可能性がございます。
SkOnDemandバージョンアップの都度動作検証を行ってください。
SkyOnDemand WebStudioのエクスプローラにて、shファイルの編集を行わないでください。
ローカルのテキストエディタで編集してエンコードを「UTF-8」で保存したファイルをアップロードしてください。
3.スクリプトから実行
外部アプリケーションアイコンの設定[必須設定]
プロパティ名 | 値 | 備考 |
---|---|---|
起動コマンド | sh | |
起動引数 | shファイル引数 |
外部アプリケーションアイコンの設定 [実行設定]
プロパティ名 | 値 | 備考 |
---|---|---|
作業ディレクトリ | /usr/local/dataspider/server/data/pdf/ | |
外部アプリケーションが終了するまで待つ | true | |
戻り値が0ではない場合にはエラーとする | true | |
標準出力・標準エラー出力を取得する | true |
外部アプリケーションのコンポーネント変数から結果を取得します。
コンポーネント変数名 | 説明 |
---|---|
exitValue | コマンドのステータス |
stdout | 標準出力値 |
stderr | 標準エラー出力値 |
文字列操作のロジックアイコンにて必要な値を抽出します。
取得結果例
以下のように値が取得されます。
注意事項
上記の記載内容は、あくまで一例となります。
SkyOnDemandの各種アダプタ機能だけでは実現できない要件などがあった際は、対応案の1つとしてご検討いただければ幸いです。