単体テストで 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 にラップしようとし、サービスを呼び出し、(リフレクション API で) IllegalArgumentException で失敗します。サービスはもちろん JAX-RS 固有の要素を受け入れず、以前に XSD で定義した SearchRequest 要素。
ただし、次の行を春のコンテキストに挿入すると、すべて問題ありません。
<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
他の誰かがこれを見ましたか?