Java REST フレームワークは多数ありますが、私は Jersey に最も精通しているため、プロパティ ファイルに単純な読み取り機能を提供する Groovy スクリプトを次に示します。
@Grapes([
@Grab(group='org.glassfish.jersey.containers', module='jersey-container-grizzly2-http', version='2.0'),
@Grab(group='org.glassfish.jersey.core', module='jersey-server', version='2.0'),
@Grab(group='org.glassfish.jersey.media', module='jersey-media-json-jackson', version='2.0')
])
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory
import org.glassfish.jersey.jackson.JacksonFeature
import javax.ws.rs.GET
import javax.ws.rs.Path
import javax.ws.rs.Produces
@Path("properties")
class PropertiesResource {
@GET
@Produces("application/json")
Properties get() {
new File("test.properties").withReader { Reader reader ->
Properties p = new Properties()
p.load(reader)
return p
}
}
}
def rc = new org.glassfish.jersey.server.ResourceConfig(PropertiesResource, JacksonFeature);
GrizzlyHttpServerFactory.createHttpServer('http://localhost:8080/'.toURI(), rc).start()
System.console().readLine("Press any key to exit...")
残念ながら、Jersey は 3.1 バージョンのライブラリを使用するため、埋め込み可能な jar を使用してスクリプトを実行しない限りasm
、Groovy の 4.0 バージョンと競合します (コマンドラインで呼び出してスクリプトを渡すだけでは機能しません)。また、Apache Ivy 依存関係も提供する必要がありました。(Groovy チームが次のリリースでこれらを解決してくれることを願っています。特に、過去に私を悲しませたものです。) したがって、次のように呼び出すことができます (クラスパス jar へのフルパスを指定します)。asm
groovy-all
groovy
asm
java -cp ivy-2.2.0.jar:groovy-all-2.1.6.jar groovy.lang.GroovyShell restProperties.groovy
という名前のプロパティ ファイルを作成しtest.properties
、上記のスクリプトを という名前のファイルにコピーしrestProperties.groovy
て、上記のコマンド ラインから実行するだけです。次に、Unix で次のコマンドを実行して試してみます。
curl http://localhost:8080/properties
また、プロパティ ファイルの JSON マップが返されます。