0

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

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

如果 Java 或 Groovy 中已经存在类似的内容,那么将不胜感激提供该资源的链接。我是 SoapUI 专家,但我不确定模拟服务是否可以做这种事情。

我在 Ruby 中发现了类似的东西,但由于我根本不是 Ruby 程序员,所以我无法让它工作。

4

1 回答 1

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

于 2013-07-24T22:45:35.340 回答