2017-10-12 6 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 : 스키마를 컴파일하는 중 오류 : "http://localhost:8080/rest_web/rest/application.wadl"이 (가) 이 편집의 일부가 아닙니다. 이것은 "http://localhost:8080/rest_web/rest/application.wadl/xsd2.xsd"의 실수입니까? -> [도움말 1]

내 태그는 클라이언트의 잘못된 위치에 있다고 생각
  1. 그래서 나는 그것을 해결했습니다.
  2. 은 내가 WADL를 생성

웹 응용 프로그램의 pom.xml 내 JAXB-bindings.xml 업데이트이 CXF issue

  • 에서 오라클에 링크의 becuase 문서를 -xjc-확장에 대한 extraarg을 추가 :

    <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> 블록에 있다는 것입니다. 과 작동하도록 XJB 바인딩을 얻으려면 wadl에 <grammars> 블록 안에 <xs:schema> 루트 태그가 있어야합니다. 난 지금 wadl 편집하지 않고 해결 방법을 찾고 있지만 여전히 성공하지 못했고 누군가가 솔루션을 공유한다면 정말 감사 할 것입니다.

    감사합니다. Aliaksei

    +0

    감사합니다. wadl 편집없이이 작업을 수행하는 방법에 대한 정보를 찾으면 알려주십시오. – user1765988