如何创建JSON Web服务以存储和检索简单属性文件中的数据?

时间:2013-07-23 18:54:46

标签: web-services rest

如何创建Java或Javascript JSON Web服务以从简单属性文件中检索数据?我的目的是将其用作运行许多单元测试的Jenkins实例的全局属性存储。主属性文件也需要能够手动编辑并存储在源代码管理中。

我只是想知道人们会推荐哪种方法对于像我这样的初级程序员来说最容易。我需要在miniumum读取功能,但如果它不太难,也可以写入功能。因此,这意味着它不需要是REST。

如果Java或Groovy中已经存在这样的内容,那么可以理解该资源的链接。我是SoapUI专家,但我不确定模拟服务是否可以做这种事情。

我发现something like this in Ruby但我无法让它工作,因为我根本不是Ruby程序员。

1 个答案:

答案 0 :(得分:0)

有很多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版asm库,因此与Groovy的4.0版asm存在冲突,除非您使用groovy-all嵌入式jar运行脚本(它赢了只需在命令行上调用groovy并传递脚本即可。我还必须提供Apache Ivy依赖项。 (希望Groovy团队能够在下一个版本中解决这些问题 - 特别是asm一个让我感到悲伤。)所以你可以像这样调用它(提供类路径jar的完整路径):

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映射。