当前位置: 首页 > 知识库问答 >
问题:

使用olingo库创建odata服务时,/*以外的Servlet URL模式不起作用

鲜于海
2023-03-14

我试图使用apache olingo library 2.0版本创建一个odata服务。下面是web.xml中的内容:

<servlet>
    <servlet-name>StudentServlet</servlet-name>
    <servlet-class>org.apache.olingo.odata2.core.servlet.ODataServlet</servlet-class>
    <init-param>
        <param-name>org.apache.olingo.odata2.service.factory</param-name>
        <param-value>com.opengalaxy.students.MyServiceFactory</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>StudentServlet</servlet-name>
    <url-pattern>/Sample/*</url-pattern>
</servlet-mapping>

使用上面的servlet映射,当我加载URL“localhost:8888/sample/$metadata”时,我会得到以下错误:

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code />
<message xml:lang="en-US">Could not find an entity set or function import for 'Sample'.</message>
</error>
<servlet-mapping>
    <servlet-name>StudentServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

并加载URL“localhost:8888/$metadata”,它可以正常工作并加载元数据:

<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">
<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"      m:DataServiceVersion="1.0">
<Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="com.opengalaxy.Students">
<EntityType Name="Student">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="Edm.Int32" Nullable="false" />
<Property Name="Name" Type="Edm.String" Nullable="false" MaxLength="100" />
</EntityType>
<EntityContainer Name="ODataStudentsEntityContainer" m:IsDefaultEntityContainer="true">
<EntitySet Name="Students" EntityType="com.opengalaxy.Students.Student" />
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>

请帮助我解决这个问题。

谢谢,凯沙夫

共有1个答案

夏侯智鑫
2023-03-14

AFAIK这是一个bug,应该在更新版本的Olingo中解决。如果它仍然存在,那么打开一个问题:https://issues.apache.org/jira/browse/olingo

 类似资料:
  • 我使用Apache Olingo作为Java SDK的OData客户机,我将为RESTful OData API提供Java SDK。在SDK中,我希望能够有强类型的类来表示OData实体。我很难轻松地实现这一点,因此觉得我错过了一个不同的策略。 Olingo的方法似乎是获取一个对象,该对象为用户提供了一系列用于与API交互的有用方法。使用一系列工厂方法来构建我的请求。例如,这是我用来从North

  • 如果有人能给我提供一个简单的POST/GET示例,使用一个合适的POJO对象模型,那就太好了。 我有限的理解是,OData将关于实际对象模型的任何信息从编译时移动到客户端的运行时。我很乐意忽略这一点,并针对固定对象模型编写代码,因为我们使用的服务不会改变。

  • 我在学习一些示例,在这些示例中,我们可以使用Apache Olingo和MySQL、JPA和Tomcat web服务器生成OData服务。这个示例完全基于显示来自MySQL数据库的数据。 我如何能执行类似创建,更新和删除的操作基于以上的例子在链接。 service.java 请用一些好的例子和概念来指导我。 提前感谢你。

  • ODataJClient,其github页面显示它现在是Olingo项目的一部分。 Odata4j Apache Olingo是否支持OData V3?

  • 我已经尝试了这两个库的入门文档,但它们都以“首先我们将实现一个Web服务”开始,并没有清楚地描述(至少对我来说)这将在哪里结束,纯Odata将在哪里开始。 谢了。

  • 示例代码如下所示- 如何内嵌此“services”变量?