簡體   English   中英

使用Maven從其余的WADL生成可序列化的類

[英]Generate Serializable classes from a rest WADL with maven

我需要使用maven插件從其余的WADL生成實現Serializable類。 我可以通過添加jaxb-bindings.xml來處理WSDL項目,但這不適用於WADL項目。

編輯:現在生成文件時出現此錯誤

無法在項目my_project上執行目標org.apache.cxf:cxf-wadl2java-plugin:3.2.0:wadl2java(generate-sources):java.lang.RuntimeException:從WADL編譯架構時出錯:“ http:// localhost:8080 /rest_web/rest/application.wadl “不是此編譯的一部分。 這是“ http:// localhost:8080 / rest_web / rest / application.wadl / xsd2.xsd ”的錯誤嗎? -> [幫助1]

  1. 我發現我的標簽在客戶端上的位置錯誤,因此我將其修復。
  2. 我添加了-xjc-extension的extraarg,因為此CXF問題中的指向oracle文檔的鏈接
  3. 更新了我的jaxb-bindings.xml

生成WADL的Web應用程序pom.xml:

<plugin>
    <groupId>com.sun.jersey.contribs</groupId>
    <artifactId>maven-wadl-plugin</artifactId>
    <version>1.19.4</version>
    <executions>
        <execution>
            <id>generate</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <phase>prepare-package</phase>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.25</version>
        </dependency>
        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.1</version>
        </dependency>
    </dependencies>
    <configuration>
        <wadlFile>${project.build.outputDirectory}/application.wadl</wadlFile>
        <formatWadlFile>true</formatWadlFile>
        <baseUri>http://${server}:8080/${project.name}/rest</baseUri>
        <packagesResourceConfig>
            <param>webservice.rest</param>
        </packagesResourceConfig>
        <wadlGenerators>
            <wadlGeneratorDescription>
                <className>com.sun.jersey.server.wadl.generators.WadlGeneratorApplicationDoc
                </className>
                <properties>
                    <property>
                        <name>applicationDocsFile</name>
                        <value>${basedir}/src/main/doc/application-doc.xml</value>
                    </property>
                </properties>
            </wadlGeneratorDescription>
            <wadlGeneratorDescription>
                <className>com.sun.jersey.server.wadl.generators.WadlGeneratorGrammarsSupport</className>
                <properties>
                    <property>
                        <name>grammarsFile</name>
                        <value>${basedir}/src/main/doc/application-grammars.xml</value>
                    </property>
                </properties>
            </wadlGeneratorDescription>
        </wadlGenerators>
    </configuration>
</plugin>

客戶端pom.xml文件:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-wadl2java-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${basedir}/target/generated-sources</sourceRoot>
                <wadlOptions>
                    <wadlOption>
                        <wadl>http://localhost:8080/rest_web/rest/application.wadl</wadl>
                        <extraargs>
                            <extraarg>-verbose</extraarg>
                            <extraarg>-xjc-extension</extraarg>
                        </extraargs>
                        <bindingFiles>
                            <bindingFile>${basedir}/src/main/resources/META-INF/jaxb/jaxb-bindings.xml</bindingFile>
                        </bindingFiles>
                        <packagename>org.apache.cxf.systest.jaxrs.codegen.service</packagename>
                        <schemaPackagenames>
                            <schemaPackagename>http://superbooks=org.apache.cxf.systest.jaxrs.codegen.schema</schemaPackagename>
                        </schemaPackagenames>
                    </wadlOption>
                </wadlOptions>
            </configuration>
            <goals>
                <goal>wadl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

jaxb-bindings.xml

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
          version="2.1">
    <globalBindings>
        <serializable uid="1" />
    </globalBindings>
</bindings> 

原因是在<grammars>塊中有多個XSD模式(導入的xsd文件或明確定義的<xs:schema>標記)。 在wadl的<grammars>塊中需要一個根<xs:schema>根標簽,以獲取XJB綁定以與wadl2java一起wadl2java 我現在正在尋找無需進行wadl編輯的解決方法,但仍然沒有成功,如果有人分享解決方案,我將非常感謝。

此致Aliaksei

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM