2017-03-08 40 views
0

我正在嘗試構建排序OData服務。我ODataServiceFactory實施看起來是這樣的: EdmProvider edm = new SortMetaData(); ODataSingleProcessor sortProcessor = new SortProcessor(); return createODataSingleProcessorService(edm, sortProcessor);501沒有實現OData

內EDM我準備的EntitySet,EntitySetContainer並將它們添加到架構。當我在本地訪問本地主機/ odata.svc/$元我能看到的元數據:

<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.sudhi.learning"> 
<EntityType Name="SortNumber"> 
<Key> 
<PropertyRef Name="number_id"/> 
</Key> 
<Property Name="number_id" Type="Edm.Int16"/> 
</EntityType> 
<EntityContainer Name="ODataSortNumbersContainer" m:IsDefaultEntityContainer="true"> 
<EntitySet Name="SortNumbers" EntityType="com.sudhi.learning.SortNumber"/> 
</EntityContainer> 
</Schema> 
</edmx:DataServices> 
</edmx:Edmx> 

到目前爲止好。現在,如果我試圖把本地主機/ odata.svc/SortNumbers這是我的EntitySet我認爲它會觸發我在ODataSingleProcessor類重新定義一個readEntity方法:

public class SortProcessor extends ODataSingleProcessor{ 

    @Override 
    public ODataResponse readEntity(GetEntityUriInfo uriInfo, String contentType) throws ODataException { 
     EdmEntitySet entitySet = uriInfo.getStartEntitySet(); 
     URI serviceRoot = getContext().getPathInfo().getServiceRoot(); 
     ODataEntityProviderPropertiesBuilder properties = EntityProviderWriteProperties.serviceRoot(serviceRoot); 
     return EntityProvider.writeEntry(contentType, entitySet, Randomizer.fillRandomNumbers(), properties.build()); 
    } 
} 

但是,一旦我打我的網址得到一個501沒有實現的錯誤。我使用的是春天啓動應用程序,我已經加了我自己的servlet與SpringServletRegistrationBean如下:

@Configuration 
public class ServletHandler { 
    @Bean 
    public ServletRegistrationBean getODataServletRegistrationBean() { 
     ServletRegistrationBean odataServletRegistrationBean = new ServletRegistrationBean(new CXFNonSpringJaxrsServlet(), "/odata.svc/*"); 
     Map<String, String> initParameters = new HashMap<String, String>(); 
     initParameters.put("javax.ws.rs.Application", "org.apache.olingo.odata2.core.rest.app.ODataApplication"); 
     initParameters.put("org.apache.olingo.odata2.service.factory", "com.sudhi.learning.SortServiceFactory"); 
     odataServletRegistrationBean.setInitParameters(initParameters); 
     return odataServletRegistrationBean; 
    } 
} 

我相信,我錯過了一些設置在設置servlet的,但也不太清楚。 需要幫助!

回答

0

解決了這個問題。我沒有重新定義ReadEntitySet ...