JAXRS - 使用单独的提供程序创建多个端点

JAXRS - creating multiple endpoints with separate providers

我想使用不同的提供商创建两个独立的端点。

因此,如果我只注册一个端点,则效果很好:

@Bean
public Server rsServer(MyService myService) {
    JAXRSServerFactoryBean serverFactory = new JAXRSServerFactoryBean();
    serverFactory.setServiceBean(myService);
    serverFactory.setAddress("/");
    serverFactory.setBus(new SpringBus());
    serverFactory.setProviders(MyCustomProviders.getProviders());
    return serverFactory.create();
}

现在我想为此添加第二个服务,但它不应该使用 MyCustomProviders.getProviders()

我无法弄清楚如何添加第二个 Bean(我认为这是错误的方法),或者查看 JAXRSServerFactoryBean 我还没有找到可以指定的方法哪些提供商应该在哪些 bean 上运行。

所以像这样:

@Bean
public Server rsServer(MyService myService, MyOtherService myOtherService) {
    JAXRSServerFactoryBean serverFactory = new JAXRSServerFactoryBean();
    serverFactory.setServiceBean(List.of(myService, myOtherService));
    serverFactory.setAddress("/");
    serverFactory.setBus(new SpringBus());
    serverFactory.setProviders(MyCustomProviders.getProviders()); // How do I specify this only for MyService?
    return serverFactory.create();
}

我正在使用 org.apache.cxf:cxf-rt-frontend-jaxrs:3.1.4

我更愿意以编程方式完成。

有什么想法吗?

如果您愿意将它们分隔在不同的基地址上,您应该可以这样做:

@Bean
public Server createMyServiceServer(MyService myService) {
    JAXRSServerFactoryBean serverFactory = new JAXRSServerFactoryBean();
    serverFactory.setServiceBean(myService);
    serverFactory.setAddress("/");
    serverFactory.setBus(new SpringBus());
    serverFactory.setProviders(MyCustomProviders.getProviders());
    return serverFactory.create();
}

@Bean
public Server createMyOtherServiceServer(MyOtherService myOtherService) {
    JAXRSServerFactoryBean serverFactory = new JAXRSServerFactoryBean();
    serverFactory.setServiceBean(myOtherService);
    serverFactory.setAddress("/otherservice");
    serverFactory.setBus(new SpringBus());
    return serverFactory.create();
}