gpt4 book ai didi

tomcat - Apache CXF + Spring Java 配置 + 替换 beans.xml

转载 作者:行者123 更新时间:2023-11-28 22:54:17 28 4
gpt4 key购买 nike

我尝试用 JavaConfig (Spring) 替换我的 beans.xml。在 beans.xml 中,我有以下配置:

<bean id="testWebService" class="at.test.TestWebService" />
<jaxws:endpoint id="Test" address="/TestWebService_V100"
implementor="#testWebService" />

<jaxrs:server id="TestRestService" address="/rest/test"
name="TestRestService">
<jaxrs:serviceBeans>
<ref bean="testWebService" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jsonProvider" />
<ref bean="DateHandler" />
</jaxrs:providers>
</jaxrs:server>

目前我有一个 config.java 类,其中包含来自 beans.xml 的所有 bean。

配置.java:

@Configuration
public class Config {

@Bean
public TestWebService testWebService() {

return new TestWebService();
}

所有的bean都配置了@Controller,所有的资源都标上了@Autowired。

@WebService(endpointInterface = "at.test.interfaces.ITestWebService")
@Transactional
@Controller
public class TestWebService extends AbstractSessionWebservice implements
ITestWebService {

它工作正常,没有错误,并且 tomcat 启动正常。但是我该如何配置 jaxws:endpoint 和 jaxrs:server? beans 文件中有多个条目。那么我该如何配置多个 jaxws:endpoint 和 jaxrs:server 条目呢?

最佳答案

请试试这个

@Autowired
ApplicationContext ctx;


@Bean
public ServletRegistrationBean dispatcherServlet() {
CXFServlet cxfServlet = new CXFServlet();
return new ServletRegistrationBean(cxfServlet, "/rest/*");
}

@Bean(name="cxf")
public SpringBus springBus() {
return new SpringBus();
}

@Bean
public Server jaxRsServer() {
List providers = new LinkedList();
providers.add(new JsonProvider());
providers.add(new DateHandler());

LinkedList<ResourceProvider> resourceProviders = new LinkedList<>();
for (String beanName : ctx.getBeanDefinitionNames()) {
if (ctx.findAnnotationOnBean(beanName, Path.class) != null) {
SpringResourceFactory factory = new SpringResourceFactory(beanName);
factory.setApplicationContext(ctx);
resourceProviders.add(factory);
}
}


JAXRSServerFactoryBean factory = new JAXRSServerFactoryBean();
factory.setBus(springBus());
factory.setProviders(providers);
factory.setResourceProviders(resourceProviders);
return factory.create();

}


}

并且在您的 TestRestService 端点中,

@Endpoint
public class TestRestServiceEndpoint implements TestRestService {

@PayloadRoot(localPart=TestWebService_V100, namespace=NAMESPACE)
public <ReturnType> <MethodName>(<RequestType> request) {
// WS BL
return;
}

}

关于tomcat - Apache CXF + Spring Java 配置 + 替换 beans.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31780741/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com