当前位置: 首页 > 知识库问答 >
问题:

Resteasy JAXB上下文没有接收我的ObjectFactory

公良琛
2023-03-14

我有REST(Resteasy)客户端运行在JBoss7.1下。从服务器返回的响应要求我使用自己的JAXB ObjectFactory,因为相同的Java类型映射到多个XML元素:

@XmlRegistry
public class ObjectFactory {

    private final static QName RESPONSE_QNAME = new QName("response");
    private final static QName ORDER_QNAME = new QName("order");

    @XmlElementDecl(name="response")
    public JAXBElement<PurchaseResponse> getPurchaseResponse(PurchaseResponse r) {
        return new JAXBElement<PurchaseResponse>(RESPONSE_QNAME, PurchaseResponse.class, null);
    }

    @XmlElementDecl(name="order")
    public JAXBElement<PurchaseResponse> getOrderResponse(PurchaseResponse r) {
        return new JAXBElement<PurchaseResponse>(ORDER_QNAME, PurchaseResponse.class, null);
    }

我这样构建RestEasy客户端:

    ResteasyClient client = new ResteasyClientBuilder().build();
    ResteasyWebTarget httpTarget = client.target( endpoint );
    RestService target = httpTarget.proxy(RestService.class);
            Response resp = target.callAPI();
            return resp.readEntity(PurchaseResponse.class);

为什么缺省的JAXB解编组器不接收我的ObjectFactory类并使用它?我使用本地绑定的RestEasy libs(JBoss提供的RestEasy模块是过时的)。

共有1个答案

酆勇
2023-03-14

JAXBContext构建在一个类(或多个类)上时,它不会自动被拉入。您可以创建ContextResolver来控制JAX-RS实现使用的JAXBContext

 类似资料:
  • 我试图并行处理Spring批处理作业中的一些步骤。作业的XML配置如下:

  • 我正在尝试用注释配置我的Spring Boot应用程序,并在其中使用@Autowired注释。当我检查是否已加载Bean时,它已加载,但使用@Autowired时,它会显示NoSuchBeanDefinitionException 正如您可以进一步看到的那样,我试图检查我的Bean是否真的被加载了,所以当我运行我的应用程序时,我可以在控制台中看到我的Bean的名称。此外,我尝试将“scanBase

  • 问题内容: 我试图将配置(例如URLs / etc)放入资源文件夹中,以供实用程序类使用。但是,我不想从任何地方的活动中传递上下文。我希望能够通过路径名(似乎使用assess /是为此用途设计的)来访问资源,而无需使用上下文来访问资源。 在这种特殊情况下,我希望单例实例化时在配置中使用某些东西。除了实例化期间的那一次之外,它不需要任何资源。因此,每次调用getInstance()时都必须传递Con

  • 我想用Mock测试方法,没有spring上下文。我该怎么做?现在,变量返回null。我想设置方法的返回值。

  • 用法同WebSocket 服务器 - 会话数据

  • imi 中 WebSocket 服务中使用 Imi\ConnectContext 类对连接的会话数据进行管理。在整个连接的生命周期中都有效。 使用 use Imi\ConnectContext; // 取值 echo ConnectContext::get('name'); echo ConnectContext::get('name', 'default value'); // 赋值 Con