我使用Apache Olingo作为Java SDK的OData客户机,我将为RESTful OData API提供Java SDK。在SDK中,我希望能够有强类型的类来表示OData实体。我很难轻松地实现这一点,因此觉得我错过了一个不同的策略。
Olingo的方法似乎是获取一个Odataclient
对象,该对象为用户提供了一系列用于与API交互的有用方法。ODataClient
使用一系列工厂方法来构建我的请求。例如,这是我用来从Northwind示例OData服务获取customers
的代码。Client
是必要的ODataClient
类的一个实例。
String serviceRoot = "http://services.odata.org/V4/Northwind/Northwind.svc";
URI customersUri = client.newURIBuilder(serviceRoot)
.appendEntitySetSegment("Customers").build();
ODataRetrieveResponse<ODataEntitySetIterator<ODataEntitySet, ODataEntity>> response =
client.getRetrieveRequestFactory().getEntitySetIteratorRequest(customersUri).execute();
if (response.getStatusCode() >= 400) {
log("Error");
return;
}
ODataEntitySetIterator<ODataEntitySet, ODataEntity> iterator = response.getBody();
while (iterator.hasNext()) {
ODataEntity customer = iterator.next();
log(customer.getId().toString());
}
我希望从迭代器获得一个强类型实体(即customer customer=iterator.next()
)。然而,我不确定如何真正做到这一点。
我错过了什么?
它并没有真正被宣传,但现在在Olingo中有一个POJO生成器,在ext/pojogen-maven-plugin的源代码树中。不幸的是,对于使用POJOs,添加了另一个具有不同编程模型的层,该层保存缓存在内存中的实体,并在刷新操作中与OData服务同步。我真的很有兴趣将它调整为基于Olingos请求工厂的更传统的请求/响应模型。
但是,你可以尝试一下。在您的pom中包括pojogen-maven-plugin和odata-client-proxy。POJO生成可以在pom中触发
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>process-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.build.directory}/generated-sources</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.olingo</groupId>
<artifactId>pojogen-maven-plugin</artifactId>
<version>4.2.0-SNAPSHOT</version>
<configuration>
<outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
<localEdm>${basedir}/src/main/resources/metadata.xml</localEdm>
<basePackage>odata.test.pojo</basePackage>
</configuration>
<executions>
<execution>
<id>v4pojoGen</id>
<phase>generate-sources</phase>
<goals>
<goal>v4pojoGen</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
对于这个实验,我将Olingo汽车示例服务的EDM元数据存储在src/main/resources/metadata.xml。不知何故,插件希望创建一个inbetween ojc-plugin文件夹,我只是手动将生成的Java代码移到了适当的位置。
Service<EdmEnabledODataClient> service = odata.test.pojo.Service.getV4("http://localhost:9080/odata-server-sample/cars.svc");
Container container = service.getEntityContainer(Container.class);
for (Manufacturer m : container.getManufacturers()) {
System.out.println(m.getName());
}
我试图使用apache olingo library 2.0版本创建一个odata服务。下面是web.xml中的内容: 使用上面的servlet映射,当我加载URL“localhost:8888/sample/$metadata”时,我会得到以下错误: 并加载URL“localhost:8888/$metadata”,它可以正常工作并加载元数据: 请帮助我解决这个问题。 谢谢,凯沙夫
ODataJClient,其github页面显示它现在是Olingo项目的一部分。 Odata4j Apache Olingo是否支持OData V3?
我已经尝试了这两个库的入门文档,但它们都以“首先我们将实现一个Web服务”开始,并没有清楚地描述(至少对我来说)这将在哪里结束,纯Odata将在哪里开始。 谢了。
我是java和web服务以及的新手。我最近使用一些教程创建了一个web服务。当我第一次学习eclipse教程时,让我创建一个客户机。但是当我尝试创建一个新项目和一个新的web服务客户机时,它会给出。具体如下所示: im使用Axis2-1.6.1,它说java遵从性级别是6,我搜索了一下,但是找不到解决这个问题的相关方案。感谢任何帮助。
NewTLSServer创建的服务器可以验证对显式从其创建的客户端的调用: 在行中。 但是,我有一个生产程序,我想将其设置为使用作为主机。我越来越 我称之为错误。 我如何设置与客户端进行身份验证,就像普通的HTTPS服务器一样?
关于Netflix Eureka Service Registry,我已经成功地使用Tomcat8.0.35设置了Eureka Netflix服务器。我还得到了基本的示例服务&客户端来进行相互通信。我对Eureka还是个新手,管理层决定将Eureka与Spring一起使用,因为几个新的应用程序都是围绕Spring框架编写的。 null 我希望为大多数非AWS云实例配置服务和客户端。Eureka W