Multiple resouceBean configuração no CXF usando Spring
Estou usando o CXF RS 2.5.1 com o Spring 3.0.6-RELEASE. Eu gostaria de ter várias classes de implementação para "um único ponto de extremidade". Vejo que esse problema foi relatado e corrigidohttps: //issues.apache.org/jira/browse/CXF-243, no entanto, quando tento fazer isso, o CXF apenas seleciona a primeira classe de recurso da tag jaxrs: serviceBeans. Para a outra solicitação, vejo esta mensagem no console do tomcat como "Nenhuma operação que corresponda ao caminho / conta / descanso / transferência da solicitação encontrada". Abaixo está a configuração. Aprecie qualquer entrada.
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>
account-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 (importações omitidas)
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 (importações omitidas)
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();
}
}
Ignore todas as irregularidades / padrões de programação, pois é apenas um exemplo de aplicativo para o PO