Camel CXF Jaxrs服务实现类的方法没有执行

时间:2014-04-03 16:51:05

标签: cxf apache-camel fuseesb cxfrs

我对使用camel路由文件的cxf rest web服务的行为感到困惑。我注意到控件永远不会进入其余服务接口的实现类。

以下是我使用cxf jaxrs和camel编写Web服务的步骤

  1. 我创建了一个界面。

    @Path("/licence")
    public interface LicenceThresholdService {
        @POST
        @Consumes({MediaType.APPLICATION_JSON})
        @Path("/userThresholdBreached")
        Boolean isUsersThresholdBreached(User user);
    }
    
  2. 实施班

    public class LicenceThresholdServiceImpl implements LicenceThresholdService {
        @Override
        public Boolean isUsersThresholdBreached(final OEMUser user) {
            System.out.println("inside threshold breched method");
            return Boolean.FALSE;
        }
     }
    
  3. 创建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>
    
  4. 在camel路由端点

    中注入了cxf rsServer bean
    <from uri="cxfrs://bean://userProfileService" />
    
  5. 现在我的问题是每当我调用此服务时,控件永远不会进入isUsersThresholdBreached类的LicenceThresholdServiceImpl方法。因此,我无法充分利用cxf休息服务。

    我已经尝试过使用Mule esb和Spring应用程序文件的cxf rest服务,我注意到控件总是进入实现类,但是这不是camel route的情况。 我正在使用redhat fuse esb。

    请帮助我解决这个问题,这对我们来说是一个严重关注的问题。

1 个答案:

答案 0 :(得分:0)

您将REST请求映射到java方法调用时使用的serviceClass,调用信息将传递给驼峰路由。通过这种方式,我们可以提供更通用的解决方案,您是否可以使用ProducerTemplate将消息发送到骆驼路线。