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

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


例如:/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/*


守候你守候我
浏览 81回答 1
1回答

慕丝7291255

您是否尝试创建 2 个不同的 servlet 作为 2 个不同且不同的 OData 服务?如果是这样,您可以尝试使用 javax 的 @WebServlet 注释来定义 OData servlet 及其端点,并让 Spring 扫描它们。例如,第一个服务:@WebServlet(urlPatterns = {"/odata/*"}, initParams = {&nbsp; &nbsp; &nbsp; &nbsp; @WebInitParam(name = "javax.ws.rs.Application", value = "org.apache.olingo.odata2.core.rest.app.ODataApplication"),&nbsp; &nbsp; &nbsp; &nbsp; @WebInitParam(name = "org.apache.olingo.odata2.service.factory", value = "com.context.JPAServiceFactory")})public class MyODataServlet extends ODataServlet {}第二项服务:@WebServlet(urlPatterns = {"/another-odata/*"}, initParams = {&nbsp; &nbsp; &nbsp; &nbsp; @WebInitParam(name = "javax.ws.rs.Application", value = "org.apache.olingo.odata2.core.rest.app.ODataApplication"),&nbsp; &nbsp; &nbsp; &nbsp; @WebInitParam(name = "org.apache.olingo.odata2.service.factory", value = "com.context.JPAServiceFactory")})public class AnotherODataServlet extends ODataServlet {}只是不要忘记使用以下命令扫描它们:@Configuration@ComponentScan(basePackages = {&nbsp; &nbsp; &nbsp; &nbsp; <packages of JPAServiceFactory and other requires beans>})@ServletComponentScan(basePackages = <the web servlets package>)public class ODataConfig {}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java