Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXRS-使用单独的提供程序创建多个端点_Java_Spring_Spring Boot_Jax Rs - Fatal编程技术网

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

Java JAXRS-使用单独的提供程序创建多个端点,java,spring,spring-boot,jax-rs,Java,Spring,Spring Boot,Jax Rs,我想用不同的提供者创建两个独立的端点 因此,如果我只注册一个端点,这很好: @Bean public Server rsServer(MyService myService) { JAXRSServerFactoryBean serverFactory = new JAXRSServerFactoryBean(); serverFactory.setServiceBean(myService); serverFactory.setAddress("/"

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

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

@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();
}
@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();
}
我使用的是
org.apache.cxf:cxf-rt前端jaxrs:3.1.4

我希望我能按程序做


有什么想法吗?

如果您可以在不同的基地址上分离它们,您应该能够执行以下操作:

@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();
}
@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();
}