CXF JAX-RS异常映射器选择顺序

3

有可能改变异常映射器的选择顺序 - https://issues.apache.org/jira/browse/CXF-6568(使默认异常映射器最不具体以使用自定义异常映射器)。怎样才是正确的方式来为每个特定的jaxrs:server调用设置此属性呢?我已经尝试添加了下面的一段:

<jaxrs:properties>
      <entry key="default.wae.mapper.least.specific" value="true"/>
 </jaxrs:properties>

我尝试将其添加到jaxrs:server配置中,但这没有起作用。


你找到解决方案了吗? - Marcin Erbel
1
当前解决方案很丑陋。在一个新类中扩展AbstractPhaseInterceptor,使用Message.put("default.wae.mapper.least.specific", true)。这个新类的bean是jaxrs:interceptors列表中的第一个。 - fland
按照您所描述的方式添加属性对我有效(使用CXF 3.1.11)。 - Sebastien
2个回答

0

对于那些寻找精确配置的人,这是我使用的配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:cxf="http://cxf.apache.org/core"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">

    <cxf:bus>
        <cxf:properties>
            <!-- https://issues.apache.org/jira/browse/CXF-6568 -->
            <entry key="default.wae.mapper.least.specific" value="true" />
        </cxf:properties>
    </cxf:bus>

</beans>

0

或者使用Java Spring配置:

@Bean
public JAXRSServerFactoryBean cxfServer(final Bus cxfBus) {
  final JAXRSServerFactoryBean serverFactory = new JAXRSServerFactoryBean();
  serverFactory.setBus(cxfBus);
  serverFactory.getBus().setProperty("default.wae.mapper.least.specific", true);

  ...

  serverFactory.setAddress("/");
  serverFactory.create();
  return serverFactory;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接