0

.net ツールを使用して、従来の MSSQL データベースを公開する ODATA サービス エンドポイントを作成できました。次に、odata4j を使用して通信することが私の意図でした。しかし、ポジョが不足していたので、私はレストレットに目を向けました。サービスですべてのエンティティを表示できるようにしましたが、restlet ジェネレーターを実行すると、次のような pojo の生成に失敗します。

java.util.concurrent.TimeoutException
    at org.restlet.ext.xml.SaxRepresentation.parse(SaxRepresentation.java:230)
at org.restlet.ext.odata.internal.edm.Metadata.<init>(Metadata.java:79)
at org.restlet.ext.odata.Service.getMetadata(Service.java:488)
at org.restlet.ext.odata.Generator.main(Generator.java:137)
...
Can't get the metadata for `http://localhost:53088/ODataService.svc/`
...
java.io.IOException: Couldn't parse the source representation: java.io.IOException: The thread blocked at the cyclic barrier has timed out.
at org.restlet.ext.xml.SaxRepresentation.parse(SaxRepresentation.java:238)
at org.restlet.ext.odata.internal.edm.Metadata.<init>(Metadata.java:79)
at org.restlet.ext.odata.Service.getMetadata(Service.java:488)
at org.restlet.ext.odata.Generator.main(Generator.java:137)
at xxx.model.generator.ModelGenerator.main(ModelGenerator.java:12)

ODATA サービスを 1 つの単純なエンティティに切り詰めて、コード生成を試すことにしました。しかし、さらに多くのエンティティを有効にすると、XML 解析エラーが発生しました。

Can't get the metadata for `http://localhost:53088/ODataService.svc/`
java.io.IOException: Couldn't parse the source representation:\
org.xml.sax.SAXParseException: XML document structures must start and end within \
the same entity.
    at org.restlet.ext.xml.SaxRepresentation.parse(SaxRepresentation.java:238)
    at org.restlet.ext.odata.internal.edm.Metadata.<init>(Metadata.java:79)
    at org.restlet.ext.odata.Service.getMetadata(Service.java:488)
    at org.restlet.ext.odata.Generator.main(Generator.java:137)
    at xxx.model.generator.ModelGenerator.main(ModelGenerator.java:12)
An error occurred: 
Cannot retrieve the metadata.

とにかく、特定のエンティティを嫌うのではなく、いくつかのエンティティの後にxmlを嫌うようです。また、XML fromhttp://localhost:53088/ODataService.svc/$metadataはエラーなしで有効です。

ジェネレーターコードは次のとおりです。

import org.restlet.ext.odata.Generator;

public class ModelGenerator
{
    public static final String [] URL_WORKSPACE = { "http://localhost:53088/ODataService.svc/", "src/main/java/"};

    public static void main(String[] args)
    {
        Generator.main(URL_WORKSPACE);
    }
}

ここに私のMaven POMの詳細があります:

    <properties>
        <org.odata4j.version>0.7.0</org.odata4j.version>
        <org.restlet.version>2.1.4</org.restlet.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>2.5.1</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.odata4j</groupId>
            <artifactId>odata4j-core</artifactId>
            <version>0.7.0</version>
        </dependency>
        <dependency>
            <groupId>org.restlet.jse</groupId>
            <artifactId>org.restlet</artifactId>
            <version>${org.restlet.version}</version>
        </dependency>
        <dependency>
            <groupId>org.restlet.jse</groupId>
            <artifactId>org.restlet.ext.odata</artifactId>
            <version>${org.restlet.version}</version>
        </dependency>
    </dependencies>

任意の提案をいただければ幸いです。ありがとうございました!

4

0 に答える 0