Многократная конфигурация resouceBean в CXF с использованием Spring
Я использую CXF RS 2.5.1 с Spring 3.0.6-RELEASE. Я хотел бы иметь несколько классов реализации для «одной конечной точки». Я вижу, что эта проблема была зарегистрирована и исправленаhttps://issues.apache.org/jira/browse/CXF-2439однако, когда я пытаюсь это сделать, CXF просто выбирает первый класс ресурсов из тега jaxrs: serviceBeans. Для другого запроса я вижу это сообщение на консоли tomcat: «Не найдена операция, соответствующая пути / учетной записи / отдыху / передаче запроса». Ниже приведена конфигурация. Ценю любой вклад.
web.xml
<listener>
<listener-class> org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:account-servlet.xml</param-value>
</context-param>
<servlet>
<servlet-name>CXF Servlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CXF Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
счет-servlet.xml
<jaxrs:server id="accountService" address="/rest">
<jaxrs:serviceBeans>
<ref bean="transferService" />
<ref bean="balanceService"/>
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="xml" value="application/xml" />
</jaxrs:extensionMappings>
</jaxrs:server>
<bean id="transferService" class="com.mycompany.service.TransferService"/>
<bean id="balanceService" class="com.mycompany.service.BalanceService"/>
BalanceService.java (импорт исключен)
package com.mycompany.service;
@Path("/")
@Produces("application/xml")
public class BalanceService{
@GET
@Path("/balance")
public String getBalance() {
StringBuilder response = new StringBuilder(128);
response.append("<Balance>")
,.append("<amount>").append("250.00").append("</amount>")
.append("</Balance>");
return response.toString();
}
}
TransferService.java (импорт исключен)
package com.mycompany.service;
@Path("/")
@Produces("application/xml")
public class TransferService {
@GET
@Path("/transfer")
public String getTransfer() {
StringBuilder response = new StringBuilder(128);
response.append("<Transfer>")
.append("<amount>").append("350.00").append("</amount>")
.append("</Transfer>");
return response.toString();
}
}
Пожалуйста, игнорируйте любые программные нарушения / стандарты, так как это всего лишь пример приложения для POC.