问题标签 [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.
java - 获取 cxf-codegen-plugin 生成 Holder 类
我正在将web-service
以前使用的客户端升级axis
为现在使用CXF
. 请注意,web-service
属于第 3 方,因此我无权修改wsdl
自己。
如您所见,通过message
s 和operation
s 记录在 中的方式,当通过调用时选择WSDL
绑定样式,这很好。我的旧类,通过/生成的所有方法也具有样式中的所有方法,其中类作为参数类型并且没有返回类型。WRAPPED
wsdl2java
cxf-codegen-plugin
*PortType
axistools-maven-plugin
wsdl2java
WRAPPED
Holder
但我的问题是,当我以前使用axistools-maven-plugin
生成java
类时,我的所有*Holder
类也都是自动生成的,以匹配*PortType
接口需求。但是对于cx-codegen-plugin
,只有*PortType
接口反映了参数类型WRAPPED
需要的样式;我没有看到作为!的一部分生成的类。Holder
OUT
*Holder
wsdl2java
有什么方法可以让我cxf-codegen-plugin
生成*Holder
类作为其中的一部分,wsdl2java
而无需自己编写它们?我不想切换到BARE
绑定样式,因为这意味着大量的重构。我不能WSDL
像我之前提到的那样修改任何一个。
我使用v3.0.2
和数据绑定cxf-codegen-plugin
fwiw JAXB
。
java - Maven CXF 插件 API 不兼容
我正在使用 Maven 3.2.3 构建我的项目,但我不断收到这个奇怪的错误:
这是否意味着我将错误版本的 Java 与 cxf 插件 (2.3.3) 结合使用?
mvn -version 的输出:
另一个奇怪的事情是,这个错误在重新运行 mvn build 作业后消失了。
任何提示表示赞赏。
西蒙
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 文件中重复。
谁能指出我正确的方向?
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 版本
你能帮助我吗?
非常感谢!
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 特定功能被禁用。
更奇怪的是我发现的一篇文章:
其中提到生成的类使用不同的类,即:org.apache.cxf.jaxb.JAXBToStringStyle
任何帮助将不胜感激。
java - wsdl2java - 如何忽略 cxf-codegen-plugin 中的特定模式并添加依赖项
见下文,如前所述,我有 3 个项目。
两者都AnimalService.wsdl
导入PersonService.wsdl
Age.xsd 架构,如下所述:
问题:
如何告诉cxf-codegen wsdl2java
不要为AgeType 生成代码(位于命名空间http://xmlns.common/age 中)并在各自的项目中使用 common.xmlns.age.AgeType 而不是 com.person.AgeType 和 com.animal.AgeType通过提供Common
项目作为依赖项?
jaxb - 来自 WSDL 的 cxf 客户端,targetNamespace 为空
我正在使用 cxf 客户端来使用在 WSDL 的 XSD 定义中具有 targetNamespace="" 的 Web 服务。CXF 客户端似乎将 ns2 命名空间附加到每个请求,如下所示。
为什么 cxf 添加 ns2 命名空间?ns2 命名空间对soap-service 不熟悉,因此会引发错误:找不到元素“ns2:ReadSubscriberRequest”的声明
在 targetNamespace="" 的情况下,如何防止 cxf 添加 ns2 命名空间引用
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。
web-services - Apache CXF 客户端命名空间在元素而不是信封中
我遇到的问题是 Apache CXF 将命名空间放在元素内而不是肥皂信封内。
我使用 codegen maven 插件从 WSDL 生成客户端代码。
以下是 WSDL 中的名称空间:
当我发出 SOAP 请求时,我可以在日志中看到已发送以下消息:
问题是当我构造消息时,我的代码中的 Value 元素为空,但在这里它出现在 XSI 命名空间中。
我期望得到的是这样的(值元素不应该存在,XSI 应该在信封元素中):
有谁知道如何防止 CXF 生成那个空的 Value 元素并将命名空间放在肥皂信封元素中?
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),但在文档(和谷歌)中一无所获。解组操作也是在ReferentialService
CXF 生成的中自动完成的,然后一个选项来修改这部分的生成就足够了。
以下是使用 CXF 生成的类调用 Web 服务的代码:
和电话:
更新:我看到了这篇文章,我的感觉是一样的:如果在没有 CXF 的情况下单独使用,JAXB 将忽略未映射的元素。通过使用cxf-codegen-plugin
,情况并非如此。