问题标签 [cxf-codegen-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1073 浏览

java - 获取 cxf-codegen-plugin 生成 Holder 类

我正在将web-service以前使用的客户端升级axis为现在使用CXF. 请注意,web-service属于第 3 方,因此我无权修改wsdl自己。

如您所见,通过messages 和operations 记录在 中的方式,当通过调用时选择WSDL绑定样式,这很好。我的旧类,通过/生成的所有方法也具有样式中的所有方法,其中类作为参数类型并且没有返回类型。WRAPPEDwsdl2javacxf-codegen-plugin*PortTypeaxistools-maven-pluginwsdl2javaWRAPPEDHolder

但我的问题是,当我以前使用axistools-maven-plugin生成java类时,我的所有*Holder类也都是自动生成的,以匹配*PortType接口需求。但是对于cx-codegen-plugin,只有*PortType接口反映了参数类型WRAPPED需要的样式;我没有看到作为!的一部分生成的类。HolderOUT*Holderwsdl2java

有什么方法可以让我cxf-codegen-plugin生成*Holder类作为其中的一部分,wsdl2java而无需自己编写它们?我不想切换到BARE绑定样式,因为这意味着大量的重构。我不能WSDL像我之前提到的那样修改任何一个。

我使用v3.0.2和数据绑定cxf-codegen-pluginfwiw JAXB

0 投票
1 回答
2035 浏览

java - Maven CXF 插件 API 不兼容

我正在使用 Maven 3.2.3 构建我的项目,但我不断收到这个奇怪的错误:

这是否意味着我将错误版本的 Java 与 cxf 插件 (2.3.3) 结合使用?

mvn -version 的输出:

另一个奇怪的事情是,这个错误在重新运行 mvn build 作业后消失了。

任何提示表示赞赏。

西蒙

0 投票
1 回答
500 浏览

xml - 使用 maven 和重用类的 WS 客户端生成

我的应用程序分为两层,其中后端层公开一堆 Web 服务,而表示层使用这些服务来获取业务数据。

为了使我的构建尽可能自动化,我将所有生成的 WSDL 和关联的 XSD 文件打包到 ZIP 依赖​​项中(使用 Maven 汇编程序插件),在安装阶段将其上传到我的关系。

然后在 UI POM 上,我将这个 ZIP 文件(使用 maven 依赖插件)解压到本地目录(src/main/resources/wsdl),然后使用 CXF-CODEGEN 插件生成客户端。

问题是——许多这些服务共享公共模型实体,例如很多方法使用Catalogue类,这是我用于由 Id 和文本值组成的对象的实体。

使用 CXF 生成的代码,我最终Catalogue会为我拥有的每个 Web 服务创建一个不同的类(具有不同的包名称),因此在我的代码中失去了 OO 多态性功能,因为它们在实践中都是不同的类。

我听说您可以通过某种方式首先将 XSD 类编译成称为“情节”的东西,然后将这些情节文件提供给 CXF 以告诉它利用它们而不是生成类来避免这个问题。

我试图添加一个额外的编译步骤,在该步骤中我运行 maven-jaxb2-plugin 以从 XSD 生成类,但我得到一个 org.xml.sax.SAXParseException; (...) 'catalogueDTO' is already defined 异常,因为这个类在 XSD 文件中重复。

谁能指出我正确的方向?

0 投票
0 回答
1324 浏览

java - 不同模块上 cxf-codegen-plugin 中的选项 wsdlArtifact

maven 上的 cxf-codegen-plugin 有一个奇怪的行为。

一些信息:

一个带有 3 个孩子的父 pom(称为 PARENT):SERVICE、CLIENT1、CLIENT2。

该服务从两个类开始生成由两个分类器描述的两个 wsdl。SERVICE pom.xml 是:

CLIENT1和2从SERVICE中产生的分类wsdl开始生成两个java客户端。因此 CLIENT1 pom.xml

CLIENT2 pom.xml

只运行 CLIENT2 pom ( mvn -U clean install ) 一切正常,只要在 PARENT pom 上运行目标mvn -U generate-sources 。

问题发生在运行:mvn -U clean install on parent pom,因为没有生成第二个客户端:实际上它总是“解析”第一个 wsdl:

问题与不同,因为在那种情况下,单个构建中有 2 次执行。最后两个信息:1)我在本地遇到这个问题,而在 Jenkins 上一切正常。2) Maven 版本

你能帮助我吗?

非常感谢!

0 投票
0 回答
1085 浏览

cxf - Wildfly 中不包含 cxf-xjc-runtime

我正在使用 cxf-codegen-plugin 版本 2.7.13(与 Wildfly 的 cxf 版本相同)。我想从 wsdl 生成 toString 方法,所以我添加了 -xjc-Xts 参数和依赖项:

生成的类使用 org.apache.cxf.xjc.runtime.JAXBToStringStyle 创建 toString 方法,该方法仅适用于:

此依赖项不在 wildfly cxf 模块中,因此当我将此依赖项与范围“提供”一起使用时,出现错误:

当我将应用程序与依赖项一起部署时,出现以下错误:

在 ws 端点部署中检测到 Apache CXF 库 (cxf-xjc-runtime-2.6.2.jar) ;要么提供一个适当的部署来替换具有容器模块依赖关系的嵌入式库,要么为当前部署禁用 webservices 子系统,为其添加适当的 jboss-deployment-structure.xml 描述符。推荐使用前一种方法,因为后一种方法会导致大多数 Web 服务 Java EE 和任何 JBossWS 特定功能被禁用。

更奇怪的是我发现的一篇文章:

http://www.objectpartners.com/2010/11/25/leveraging-apache-cxf-and-maven-to-generate-client-side-web-service-bindings/

其中提到生成的类使用不同的类,即:org.apache.cxf.jaxb.JAXBToStringStyle

任何帮助将不胜感激。

0 投票
1 回答
6996 浏览

java - wsdl2java - 如何忽略 cxf-codegen-plugin 中的特定模式并添加依赖项

见下文,如前所述,我有 3 个项目。

两者都AnimalService.wsdl导入PersonService.wsdlAge.xsd 架构,如下所述:

问题:

如何告诉cxf-codegen wsdl2java不要AgeType 生成代码(位于命名空间http://xmlns.common/age 中)并在各自的项目中使用 common.xmlns.age.AgeType 而不是 com.person.AgeType 和 com.animal.AgeType通过提供Common项目作为依赖项?

0 投票
0 回答
452 浏览

jaxb - 来自 WSDL 的 cxf 客户端,targetNamespace 为空

我正在使用 cxf 客户端来使用在 WSDL 的 XSD 定义中具有 targetNamespace="" 的 Web 服务。CXF 客户端似乎将 ns2 命名空间附加到每个请求,如下所示。

为什么 cxf 添加 ns2 命名空间?ns2 命名空间对soap-service 不熟悉,因此会引发错误:找不到元素“ns2:ReadSubscriberRequest”的声明

在 targetNamespace="" 的情况下,如何防止 cxf 添加 ns2 命名空间引用

0 投票
1 回答
1024 浏览

cxf - cxf-codegen-plugin 非法配置文件语法

我正在尝试将一些为 Java 6 开发的 Web 服务代码更新到 Java 8。这些模块使用 maven cxf-codegen-plugin。Java 6 版本使用 cxf 版本 2.2.2。通过将 cxf 更新到 2.7.9,我能够使其与 Java 7 一起使用,但无法在 Java 8 下构建。我尝试将 cxf 更新到 3.0.3,但仍然出现此错误:

XPathFactory#newInstance() 无法为默认对象模型创建 XPathFactory:http: //java.sum.com/jaxp/xpath/dom与 XPathFactoryConfigurationException:javax.xml.xpath.XPathFactoryConfigurationException:java.xml.xpath.XPathFactory : jar:file:/c:/Documents%20and%20Settings/Kevin/.m2/repository/saxon/saxon-xpath/8.9.0.3/saxon-xpath-8.9.0.3.jar!META-INF/services/javax。 xml.xpath.XPathFactory:2:非法配置文件语法

我正在使用 jdk 1.8.0_31、maven 3.0.3 和 cxf 3.0.3。

0 投票
1 回答
2274 浏览

web-services - Apache CXF 客户端命名空间在元素而不是信封中

我遇到的问题是 Apache CXF 将命名空间放在元素内而不是肥皂信封内。

我使用 codegen maven 插件从 WSDL 生成客户端代码。

以下是 WSDL 中的名称空间:

当我发出 SOAP 请求时,我可以在日志中看到已发送以下消息:

问题是当我构造消息时,我的代码中的 Value 元素为空,但在这里它出现在 XSI 命名空间中。

我期望得到的是这样的(值元素不应该存在,XSI 应该在信封元素中):

有谁知道如何防止 CXF 生成那个空的 Value 元素并将命名空间放在肥皂信封元素中?

0 投票
3 回答
4182 浏览

java - 如何使 CXF 生成的代码解组为 JAX-B 并忽略未映射的字段?

我调用了一个网络服务,它可以定期在他们的合同中添加一些元素。

示例:SOAP 响应正文包含:

我的 CXF 生成的 JAXB Bean 看起来像这样:

JAXB bean 是使用 maven 插件cxf-codegen-plugin版本 2.6.2(来自 apache.cxf)生成的。

现在我想知道是否有一种解决方案可以让我的 Bean 在 SOAP 响应中出现新元素时具有容错性:

现在,当我收到这样的回复时,我得到了一个Unmarshalling Error因为这个新元素。

我的 JAXB 包含我想要管理的最小字段,但我希望 bean 能够处理新元素并忽略它们。

有没有办法在不重新生成 JAXB Bean 的情况下做到这一点?(现在我必须重新生成 Bean 并发布我的项目)

我检查了 CXF 选项(和 xjc),但在文档(和谷歌)中一无所获。解组操作也是在ReferentialServiceCXF 生成的中自动完成的,然后一个选项来修改这部分的生成就足够了。

以下是使用 CXF 生成的类调用 Web 服务的代码:

和电话:

更新:我看到了这篇文章,我的感觉是一样的:如果在没有 CXF 的情况下单独使用,JAXB 将忽略未映射的元素。通过使用cxf-codegen-plugin,情况并非如此。