Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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
注释CXF(wsdl2java)生成的包_Java_Jaxb_Cxf_Wsdl2java - Fatal编程技术网

注释CXF(wsdl2java)生成的包

注释CXF(wsdl2java)生成的包,java,jaxb,cxf,wsdl2java,Java,Jaxb,Cxf,Wsdl2java,我需要添加包级注释(XmlJavaTypeAdapters类型适配器)。问题是,当我运行wsdl2java时,它会为该包生成package-info.java文件 当我尝试添加我自己的package-info.java时,我得到一个错误:“类型package-ingo已经定义” 有没有办法将我的注释注入包info.java??也许还有其他想法 谢谢您可以提供JAXB“绑定”,可以内嵌在WSDL中,也可以作为单独的外部绑定文件,JAXB将生成适当的适配器和所需的包级注释。请参阅以获取示例。我从未尝

我需要添加包级注释(XmlJavaTypeAdapters类型适配器)。问题是,当我运行wsdl2java时,它会为该包生成package-info.java文件

当我尝试添加我自己的package-info.java时,我得到一个错误:“类型package-ingo已经定义”

有没有办法将我的注释注入包info.java??也许还有其他想法


谢谢

您可以提供JAXB“绑定”,可以内嵌在WSDL中,也可以作为单独的外部绑定文件,JAXB将生成适当的适配器和所需的包级注释。请参阅以获取示例。

我从未尝试过此方法,但您可以尝试向wsdl2java命令添加-xjc npa标志。理论上,这告诉XJC不要生成package-info.java,而是将所有名称空间等粘贴到所有其他需要的元素上。

经过一些研究,我使用了外部映射文件。对于所有和我有类似问题的人,我在下面描述了我的发现

如果您使用“cxf codegen plugin”从WSDL生成源代码,则不能将解决方案与package-info.java一起使用。这是因为生成的代码可能已经包含此文件。您也不能将注释添加到类中,因为它是生成的。唯一的解决方案是提供自己的映射器

首先,您必须编写自定义映射器。之后,您应该定义xjb映射文件,并最终将其他配置添加到pom.xml中。您可以阅读前两个步骤

要将外部映射文件添加到cxf codegen插件,您必须在插件定义中的配置节点中添加如下内容:

<defaultOptions>
    <bindingFiles>
        <bindingFile>${basedir}/src/main/resources/mapping.xjb</bindingFile>
    </bindingFiles>
    <noAddressBinding>true</noAddressBinding>
</defaultOptions>

${basedir}/src/main/resources/mapping.xjb
真的
注意,您不应该像前面所描述的那样向xjc传递额外的参数,因为它将不起作用


希望这对任何人都有帮助:)

我还需要为生成的代码添加注释。在生成java类之后,我使用maven replacer插件来完成这项工作。您可以使用此解决方案修改生成的任何文件

以下是相关的pom.xml位:


com.google.code.maven-replacer-plugin
替代者
${replacer.plugin.version}
过程源
代替
目标/生成的源代码/cxf/com/BLAH/client/api/v4/*.java
目标/生成的源代码/cxf/com/BLAH/client/api/v4/ObjectFactory.java,
目标/生成的源代码/cxf/com/BLAH/client/api/v4/package-info.java,
公共类(\w*)
@XmlRootElement(name=“$1”)${line.separator}公共类$1
导入javax.xml.bind.annotation.XmlType;
导入javax.xml.bind.annotation.XmlType${line.separator}导入javax.xml.bind.annotation.XmlRootElement;
希望这有帮助