小编gil*_*ilz的帖子

如何阻止杰克逊的YAML作家引用价值观

我正在开发一个项目,将文件从JSON转换为YAML.我正在使用以下库的2.8.3版本:

  • 杰克逊核心
  • 杰克逊 - 数据绑定
  • 杰克逊DATAFORMAT,YAML
  • 杰克逊的注解

我的YAML序列化代码非常简单:

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
ObjectWriter writer = mapper.writer();

try {
    SequenceWriter sw = writer.writeValues(System.out);
    sw.write(tree);
}
catch (IOException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

此代码生成的YAML如下所示:

serviceType: "elasticSearch"
displayName: "Elasticsearch Service"
description: "Sample Elastic Search Service"
Run Code Online (Sandbox Code Playgroud)

虽然它是有效的YAML,但我不喜欢围绕值的双引号.你不需要它们在YAML中,它使编辑结果文件更加麻烦.有谁知道如何配置ObjectWriter使jackson停止将String值封装在引号中?

java yaml jackson

13
推荐指数
1
解决办法
2196
查看次数

杰克逊YAML:支持锚和参考

我正在研究将YAML用于某种复杂的元数据语言.如果我们可以使用YAML的锚点和引用,这将有助于使文档更小,更简单.我写了一些测试代码,似乎表明Jackson的YAML实现不支持这个功能(和/或没有表现出SnakeYAML对此功能的支持).

这是我的测试YAML文件:

set_one:
  bass: tama rockstar 22x16
  snare: &ludwig ludwig supralight 6.5x15
  tom1: tama rockstar 12x11
  tom2: tama rockstar 16x16

set_two:
  snare: *ludwig
Run Code Online (Sandbox Code Playgroud)

我正在解析这个文件:

    ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
    FileInputStream fis = null;

    try
    {
        fis = new FileInputStream(file);
        JsonNode nodeTree = mapper.readTree(fis);
        examineObject(nodeTree, 0);
    }
    ...
Run Code Online (Sandbox Code Playgroud)

这是我的"examineObject()"方法(你可能猜到它的作用):

key = "set_one", type = OBJECT
  key = "bass", type = STRING, value = "tama rockstar 22x16"
  key = "snare", type = STRING, value = "ludwig supralight 6.5x15"
  key …
Run Code Online (Sandbox Code Playgroud)

yaml jackson

7
推荐指数
2
解决办法
1801
查看次数

Jetty 的 httpClient.setResponseBufferSize() 方法有什么作用吗?

我正在使用 Jetty 的 HttpClient 构建一个简单的代理服务器。我在 Java 1.8.0_45 上使用 Jetty 版本 9.3.10.v20160621。

我有一种情况,我对资源执行 GET 操作,该资源将返回大小约为 3.5M 的响应(我使用soapUI 确定了这一点)。知道 Jetty 的默认最大响应大小是 2M,我在创建 HttpClient 实例时执行以下操作。

        HttpClient client = new HttpClient();
        client.setResponseBufferSize(4194304);
        client.start();
Run Code Online (Sandbox Code Playgroud)

后来我执行一个同步 GET 请求,如下所示:

        System.out.println("response buffer size = " + client.getResponseBufferSize());
        retVal = client.GET(uri);
Run Code Online (Sandbox Code Playgroud)

控制台日志有以下内容:

响应缓冲区大小 = 4194304

尽管如此,当我执行 GET() (下面的堆栈跟踪)时,我得到了一个 java.util.concurrent.ExecutionException 。我只能得出结论,要么 (a) setResponseBufferSize() 方法中存在错误,要么 (b) setResponseBufferSize() 方法不执行文档所说的操作(设置响应缓冲区大小)。有人知道这是怎么回事吗?

java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Buffering capacity exceeded
    at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118)
    at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:101)
    at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:652)
    at org.eclipse.jetty.client.HttpClient.GET(HttpClient.java:343)
    at oracle.paas.tools.sifter.proxy.ProxySession.get(ProxySession.java:106)
    at oracle.paas.tools.sifter.proxy.Endpoint.doGet(Endpoint.java:75)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:837) …
Run Code Online (Sandbox Code Playgroud)

java jetty jetty-9

3
推荐指数
2
解决办法
3630
查看次数

如何阻止Apache httpd拒绝HTTP PATCH请求?

我正在使用Bitnami Tomcat堆栈上的Java servlet 实现JSON补丁规范.在servlet端,我通过重写HttpServlet.service()方法来处理HTTP PATCH方法,如下所示:

@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    if (request.getMethod().equals("PATCH"))
        doPatch(request, response);
    else
        super.service(request, response);
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试向Tomcat发送HTTP PATCH请求时,Apache httpd使用501"Method Not Implemented"拒绝它.

有没有办法让Apache httpd停止这样做?

java tomcat apache2 bitnami

2
推荐指数
1
解决办法
6516
查看次数

标签 统计

java ×3

jackson ×2

yaml ×2

apache2 ×1

bitnami ×1

jetty ×1

jetty-9 ×1

tomcat ×1