繁体   English   中英

多个 odata servlets 和端点 - 可能吗?

[英]Multiple odata servlets and endpoints - is it possible?

我正在为我的 web 应用程序使用 oData servlets,并希望为其添加其他端点。

例如:/odata/* 还有:/pathVariable/{pathVariable}/odata/*

而“pathVariable”为我传递额外的数据和变量。

我尝试复制 servlet 方法并将其定向到新的 URL 映射,但未成功。

这是我当前的代码:

@Bean
public ServletRegistrationBean odataServlet() {
    ServletRegistrationBean<CXFNonSpringJaxrsServlet> odataServlet = new ServletRegistrationBean<>(new CXFNonSpringJaxrsServlet(), "/odata/*");
    Map<String, String> initParameters = new HashMap<>();
    initParameters.put("javax.ws.rs.Application", "org.apache.olingo.odata2.core.rest.app.ODataApplication");
    initParameters.put("org.apache.olingo.odata2.service.factory", "com.context.JPAServiceFactory");
    odataServlet.setInitParameters(initParameters);
    return odataServlet;
}

我的预期结果是多个端点可供 oData 使用:

/odata

/路径名/数据/odata/*

您是否尝试将 2 个不同的 servlets 创建为 2 个不同且不同的 OData 服务?

如果是这样,您可以尝试使用 javax 的 @WebServlet 注释定义 OData servlets 及其端点,并让 Spring 扫描它们。

例如,第一项服务:

@WebServlet(urlPatterns = {"/odata/*"}, initParams = {
        @WebInitParam(name = "javax.ws.rs.Application", value = "org.apache.olingo.odata2.core.rest.app.ODataApplication"),
        @WebInitParam(name = "org.apache.olingo.odata2.service.factory", value = "com.context.JPAServiceFactory")
})
public class MyODataServlet extends ODataServlet {

}

第二项服务:

@WebServlet(urlPatterns = {"/another-odata/*"}, initParams = {
        @WebInitParam(name = "javax.ws.rs.Application", value = "org.apache.olingo.odata2.core.rest.app.ODataApplication"),
        @WebInitParam(name = "org.apache.olingo.odata2.service.factory", value = "com.context.JPAServiceFactory")
})
public class AnotherODataServlet extends ODataServlet {

}

只是不要忘记使用以下方法扫描它们:

@Configuration
@ComponentScan(basePackages = {
        <packages of JPAServiceFactory and other requires beans>
})
@ServletComponentScan(basePackages = <the web servlets package>)
public class ODataConfig {

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM