2017-10-12 81 views
0

我需要使用maven插件從休眠WADL生成實現Serializable的類。我可以通過添加jaxb-bindings.xml來完成WSDL項目,但這不適用於WADL項目。使用maven生成可休眠WADL中的可序列化類

編輯: 現在我生成的文件

時收到此錯誤

未能執行目標 org.apache.cxf:CXF-wadl2java-插件:3.2.0:wadl2java(generate-源) 在項目上my_project: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. 我從這個CXF issue
  3. 更新我的JAXB bindings.xml

Web應用程序的pom.xml產生的WADL添加-xjc擴展的extraarg監守鏈接到Oracle 文件:

<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> 

回答

0

的原因是,你有多個XSD架構(進口XSD文件或明確定義<xs:schema>標籤)中<grammars>塊。你需要在你的wadl中的<grammars>塊內部有一個<xs:schema>標記的根,以使XJB綁定與wadl2java一起工作。我現在正在尋找解決方法,無需編輯wadl,但仍未成功,如果有人共享解決方案,我將非常感激。

此致敬禮,Aliaksei

+0

謝謝您的迴應。如果您發現有關如何在沒有編輯Wadl的情況下執行此操作的任何信息,請告知我們。 – user1765988