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();
}
我想使用不同的提供商创建两个独立的端点。
因此,如果我只注册一个端点,则效果很好:
@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();
}