Я столкнулся со следующей проблемой при настройке службы тестирования JAXRS в модульном тесте.
Это код (взят из тестового класса, производного от AbstractJUnit4SpringContextTests):
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setServiceBeans(applicationContext.getBean("searchXY"));
sf.setAddress("http://localhost:9000/");
sf.create();
restClient = new RestTestClient();//custom class for client-side testing
....
InputStream dummyRequestFileAsStream = getInputStreamForClasspathResource(
DUMMY_REQUEST_FILE);
LOGGER.info("Testing searchQuery ReST service access");
int httpStatus = restClient.postXmlStream(
"http://localhost:9000/search/searchXY",
dummyRequestFileAsStream);
Я передаю тестовый файл XML в сервис. CXF будет нагло пытаться заключить xml в javax.xml.bind.JAXBElement, вызвать службу и завершится ошибкой с IllegalArgumentException (в API отражения), потому что служба, конечно, не принимает специфичный для JAX-RS элемент, а скорее элемент SearchRequest, который я определил в своем XSD ранее.
Однако, когда я вставляю следующую строку в контекст Spring, все в порядке:
<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
Кто-нибудь еще видел это?