Java から Groovy を引数付きで呼び出す
Jamesでメール受信&解析プログラムを作ろうとしているのですが、
開発段階ではいちいち
jarに固めて・・・サーバにアップして・・・James再起動して・・・
・・・めんどくさい。
どうにか簡単にならんもんかね。と呑みながら考えているとき
ふと、Groovyのことを思い出しました。
Groovyなら当然Javaと相性がよいはず。
しかも、スクリプトなので、Jamesの再起動なしでいろいろ
試せそうです。
Groovyのダウンロードは、
http://groovy.codehaus.org/
ここからGroovy 1.5.6 Download zip: Binary Release
をダウンロードしました。
解凍すると、embeddableというフォルダの中にgroovy-all-1.5.6.jarが
入っていると思います。
とりあえず動かすには、このjarを参照すればよいみたい。
早速、サンプルを作って、クラスオブジェクトをスクリプトに
引数として渡せることを確認しました。
■MainLoad
package fujishinko.groovy;
import groovy.lang.Binding;
import groovy.util.GroovyScriptEngine;
public class MainLoad {
public static void main(String[] args){
try{
GroovyScriptEngine gse = new GroovyScriptEngine("[groovyのスクリプトを置いたフォルダ]");
Binding binding = new Binding();
MailData data = new MailData();
data.setTitle("タイトル");
data.setBody("本文");
binding.setVariable("args",data);
binding.setVariable("args_opt","メッセージ");
gse.run("sample.groovy", binding);
} catch(Exception e){
e.printStackTrace();
}
}
}
■MailData
package fujishinko.groovy;
public class MailData {
private String body;
private String title;
public String getBody() { return body; }
public void setBody(String body) { this.body = body; }
public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; }
}
■sample.groovy
import fujishinko.groovy.*;
def printObject(MailData data) {
println data.getTitle()
println data.getBody()
}
MailData data = (MailData)args
printObject(data)
print args_opt
■実行結果
タイトル
本文
メッセージ
binding.setVariableで指定したデータが、groovyで取得できていると思います。
【参考URL】
http://www.ibm.com/developerworks/jp/java/library/j-pg05245/
もどる