使用 apache camel cxf-rs 路由请求的正确方法是什么?

问题描述

我已经为 JAXRSServerfactorybean 配置了两个 api 接口:

@Bean("RSServer")
    public JAXRSServerfactorybean sfBean(String address){
        JAXRSServerfactorybean sf = new JAXRSServerfactorybean();
        sf.setBus(bus);
        sf.setAddress(address); // http://localhost:8080/some/path
        sf.setProvider(jsonProvider);
        List<Object> apiBeans = new ArrayList<>();
        // first service
        apiBeans.add(applicationContext.getBean(FirstApi.class));
        // second service
        apiBeans.add(applicationContext.getBean(SecondApi.class));
        sf.setServiceBeans(apiBeans);

        return sf;
    }

在每个 Api 类中有一个端点:
-) /api-one/get-something 用于 FirstApi.class
-) /api-two/get-something 用于 SecondApi.class

我有这个东西的路由器,我应该以某种方式路由传入的请求。
到达 http://localhost:8080/some/path/api-one/get-something 的请求应该在“第一”服务中处理。到达 http://localhost:8080/some/path/api-two/get-something 的请求应该在“第二个”服务中处理:

@Override
    public void configure() {
        from("cxfrs:bean:RSServer?bindingStyle=SimpleConsumer")
                .choice()
                    .when(exchange -> exchange.getIn().getHeader(CxfConstants.OPERATION_NAME,String.class)
                            .equals("firstServiceOperation"))
                        .bean(firstService,firstServiceOperation)
                    .when(exchange -> exchange.getIn().getHeader(CxfConstants.OPERATION_NAME,String.class)
                            .equals("secondServiceOperation"))
                    .bean(secondService,secondServiceOperation)
                .endChoice()
                .end();
    }

这是路由传入请求的正确方法吗?或者有更好的变体?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...