Intellij的不同行为取决于已部署的战争是否爆炸

时间:2018-01-08 14:15:00

标签: spring intellij-idea jboss jaxb

我在Intellij和JBoss服务器中看到了奇怪的行为。 关于申请的简短信息:

- spring 4.3.1
- jersey 1.18.1
- jboss EAP 6.4.0

我遇到了编组问题,所以我尝试深入挖掘并尝试提示:https://docs.jboss.org/resteasy/docs/1.0.0.GA/userguide/html/Content_Marshalling_Providers.html

所以我创建了课程:

@Named
@Provider
@Primary
@Produces(MediaType.APPLICATION_JSON)
public class JerseyJAXBConfiguration implements ContextResolver<JAXBContext> {

    private JAXBContext context;
    private Class[] types = { SomeClass.class};

    public JerseyJAXBConfiguration() throws Exception {

        JSONConfiguration.MappedBuilder builder = JSONConfiguration.mapped();
        builder.arrays("invite");
        builder.rootUnwrapping(false);
        this.context = new JSONJAXBContext(builder.build(), types);
    }

    public JAXBContext getContext(Class<?> objectType) {
        for (Class type : types) {
            if (type == objectType) {
                return context;
            }
        }
        return null;
    }
}

我在IntelliJ中有两个JBoss运行配置。首先部署简单的“战争”,第二部署“战争爆炸”。这是一个奇怪的事情。因为在这两种情况下都会在应用程序启动时加载此bean,但仅针对没有爆炸'getContext'方法的情况执行。在这两种情况下,一切都是一样的。运行之间没有任何代码更改。 有人可以向我解释为什么我们有这个不同?我想知道在“战争爆炸”的情况下执行了什么JAXB实现。

我看到它的主要原因是因为Web服务创建的Json在提到的情况下也是不同的。有“命名”数组第二个没有。

如果'战争':

{"functionGroupAutoFill": [
  {
    "desc": "0. General",
    "id": "0"
  },
  {
    "desc": "00. General",
    "id": "00"
  },
 ...
 ]}

如果'战争爆炸':

  [
      {
        "desc": "0. General",
        "id": "0"
      },
      {
        "desc": "00. General",
        "id": "00"
      },
     ...
     ]

0 个答案:

没有答案