我对使用camel路由文件的cxf rest web服务的行为感到困惑。我注意到控件永远不会进入其余服务接口的实现类。
以下是我使用cxf jaxrs和camel编写Web服务的步骤
我创建了一个界面。
@Path("/licence")
public interface LicenceThresholdService {
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("/userThresholdBreached")
Boolean isUsersThresholdBreached(User user);
}
实施班
public class LicenceThresholdServiceImpl implements LicenceThresholdService {
@Override
public Boolean isUsersThresholdBreached(final OEMUser user) {
System.out.println("inside threshold breched method");
return Boolean.FALSE;
}
}
创建cxf jaxrs服务器
<beans ...
xmlns:cxf="http://camel.apache.org/schema/cxf"
...
xsi:schemaLocation="
http://camel.apache.org/schema/cxf
http://camel.apache.org/schema/cxf/camel-cxf.xsd
...">
<cxf:rsServer id="userProfileService"
address="http://{{service.host}}:{{service.port}}/userProfile"
serviceClass="com.jato.esb.service.licence.LicenceThresholdServiceImpl"
loggingFeatureEnabled="true">
<cxf:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
</cxf:providers>
</cxf:rsServer>
</beans>
在camel路由端点
中注入了cxf rsServer bean<from uri="cxfrs://bean://userProfileService" />
现在我的问题是每当我调用此服务时,控件永远不会进入isUsersThresholdBreached
类的LicenceThresholdServiceImpl
方法。因此,我无法充分利用cxf休息服务。
我已经尝试过使用Mule esb和Spring应用程序文件的cxf rest服务,我注意到控件总是进入实现类,但是这不是camel route的情况。 我正在使用redhat fuse esb。
请帮助我解决这个问题,这对我们来说是一个严重关注的问题。
答案 0 :(得分:0)
您将REST请求映射到java方法调用时使用的serviceClass,调用信息将传递给驼峰路由。通过这种方式,我们可以提供更通用的解决方案,您是否可以使用ProducerTemplate将消息发送到骆驼路线。