Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web服务契约首先被撤销-在WSDL中引用Java类_Java_Web Services_Wsdl_Jax Ws - Fatal编程技术网

Web服务契约首先被撤销-在WSDL中引用Java类

Web服务契约首先被撤销-在WSDL中引用Java类,java,web-services,wsdl,jax-ws,Java,Web Services,Wsdl,Jax Ws,我们有一系列的web服务,这些服务是首先设计的。在各种WSDL文件中,包含来自同一XML模式定义的公共XML片段。但是,其结果是为各种Web服务(wsimport)创建了几次相同的类,如Address 是否可以先使用契约,然后再定义在各种WSDL文件中引用的一组或少数Java类? 这将使前端和后端的编程更加容易。我建议切换到cxf codegen插件。它允许对代码生成过程进行更多的定制 使用cxf codegen插件,您可以将类型名称空间映射到具体的包。只需为共享类指定公共包: <wsdl

我们有一系列的web服务,这些服务是首先设计的。在各种WSDL文件中,包含来自同一XML模式定义的公共XML片段。但是,其结果是为各种Web服务(wsimport)创建了几次相同的类,如
Address

是否可以先使用契约,然后再定义在各种WSDL文件中引用的一组或少数Java类?
这将使前端和后端的编程更加容易。

我建议切换到cxf codegen插件。它允许对代码生成过程进行更多的定制

使用cxf codegen插件,您可以将类型名称空间映射到具体的包。只需为共享类指定公共包:

<wsdlOption>
    <wsdl>${basedir}/src/main/resources/service1/Service1.wsdl</wsdl>
    <extraargs>
        <extraarg>-p</extraarg>
        <extraarg>http://yournamespace.com/types=com.namespace.types</extraarg>
        <extraarg>-p</extraarg>
        <extraarg>http://yournamespace.com/service1=com.namespace.service1</extraarg>
    </extraargs>
</wsdlOption>
<wsdlOption>
    <wsdl>${basedir}/src/main/resources/service2/Service2.wsdl</wsdl>
    <extraargs>
        <extraarg>-p</extraarg>
        <extraarg>http://yournamespace.com/types=com.namespace.types</extraarg>
        <extraarg>-p</extraarg>
        <extraarg>http://yournamespace.com/service2=com.namespace.service2</extraarg>
    </extraargs>
</wsdlOption>

${basedir}/src/main/resources/service1/service1.wsdl
-p
http://yournamespace.com/types=com.namespace.types
-p
http://yournamespace.com/service1=com.namespace.service1
${basedir}/src/main/resources/service2/service2.wsdl
-p
http://yournamespace.com/types=com.namespace.types
-p
http://yournamespace.com/service2=com.namespace.service2

我建议切换到cxf codegen插件。它允许对代码生成过程进行更多的定制

使用cxf codegen插件,您可以将类型名称空间映射到具体的包。只需为共享类指定公共包:

<wsdlOption>
    <wsdl>${basedir}/src/main/resources/service1/Service1.wsdl</wsdl>
    <extraargs>
        <extraarg>-p</extraarg>
        <extraarg>http://yournamespace.com/types=com.namespace.types</extraarg>
        <extraarg>-p</extraarg>
        <extraarg>http://yournamespace.com/service1=com.namespace.service1</extraarg>
    </extraargs>
</wsdlOption>
<wsdlOption>
    <wsdl>${basedir}/src/main/resources/service2/Service2.wsdl</wsdl>
    <extraargs>
        <extraarg>-p</extraarg>
        <extraarg>http://yournamespace.com/types=com.namespace.types</extraarg>
        <extraarg>-p</extraarg>
        <extraarg>http://yournamespace.com/service2=com.namespace.service2</extraarg>
    </extraargs>
</wsdlOption>

${basedir}/src/main/resources/service1/service1.wsdl
-p
http://yournamespace.com/types=com.namespace.types
-p
http://yournamespace.com/service1=com.namespace.service1
${basedir}/src/main/resources/service2/service2.wsdl
-p
http://yournamespace.com/types=com.namespace.types
-p
http://yournamespace.com/service2=com.namespace.service2

我们正在使用jaxws-maven-plugin。我们正在使用jaxws-maven-plugin。感谢您的提示。我还认为cxf codegen插件可能是更好的解决方案。然而,jaxws maven插件还具有将xml名称空间映射到生成的Java类的Java包的特性。问题仍然存在,如何使用现有的Java类作为webservice契约的“传入项”。谢谢您的提示。我还认为cxf codegen插件可能是更好的解决方案。然而,jaxws maven插件还具有将xml名称空间映射到生成的Java类的Java包的特性。问题仍然存在,如何使用现有Java类作为Web服务契约的“传入项”。