问题标签 [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 回答
794 浏览

apache - UnmarshalException:骆驼肥皂解组错误意外元素

[com.sun.istack.SAXParseException2; 行号:1;列号:1;意外元素(uri:“ http://service.example.com/ ”,本地:“custDetails”)。预期的元素是 <{ http://schemas.xmlsoap.org/soap/envelope/ }Body>,<{}Customer>,<{ http://schemas.xmlsoap.org/soap/envelope/ }Envelope>,< { http://schemas.xmlsoap.org/soap/envelope/ }故障>,<{ http://schemas.xmlsoap.org/soap/envelope/ }Header>]

问题陈述:Camel 不希望收到 custDetails (webmethod) 和命名空间。
期望:使用 camel-soap 将有效负载解组为开箱即用的 soapJaxb。

  1. 使用 maven-jaxb2-plugin 为下面的 xsd 生成 JAXB 类。结果产生了三个带有注释的类——Customer.java、ObjectFactory、java、Order.java。

    /li>
  2. 使用 DataFormat 设置为 PAYLOAD 的 cxf 端点公开 webservice custDetails(..),如下所示。[使用@Configuration 更新]

    /li>
  3. Wsdl 生成并导入到soapUI。要测试的示例 SOAPUI 请求如下。

    /li>
  4. 当我尝试使用肥皂数据格式解组 PAYLOAD 时,骆驼抛出错误。这是命中命名空间错误。我不确定为什么没有生成 package-info 类。任何帮助是极大的赞赏。谢谢你。

  5. 更新,wsdl 给出如下。 <?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://service.example.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" name="CustomerSvcService" targetNamespace="http://service.example.com/"> <wsdl:types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://service.example.com/" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://service.example.com/"> <xs:element name="Customer"> <xs:complexType> <xs:sequence> <xs:element name="Id" type="xs:string"/> <xs:element name="Address" type="xs:string"/> <xs:element minOccurs="0" name="ListOfOrders" type="tns:order"/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="order"> <xs:sequence> <xs:element name="Id" type="xs:string"/> <xs:element name="ProductName" type="xs:string"/> <xs:element minOccurs="0" name="ListOfDevice"> <xs:complexType> <xs:sequence> <xs:element name="DeviceName" type="xs:string"/> <xs:element name="ManufactureDate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:element name="custDetails" type="tns:custDetails"/> <xs:complexType name="custDetails"> <xs:sequence> <xs:element minOccurs="0" ref="tns:Customer"/> </xs:sequence> </xs:complexType> <xs:element name="custDetailsResponse" type="tns:custDetailsResponse"/> <xs:complexType name="custDetailsResponse"> <xs:sequence> <xs:element minOccurs="0" ref="tns:Customer"/> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="custDetails"> <wsdl:part element="tns:custDetails" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="custDetailsResponse"> <wsdl:part element="tns:custDetailsResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="CustomerSvc"> <wsdl:operation name="custDetails"> <wsdl:input message="tns:custDetails" name="custDetails"> </wsdl:input> <wsdl:output message="tns:custDetailsResponse" name="custDetailsResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="CustomerSvcServiceSoapBinding" type="tns:CustomerSvc"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="custDetails"> <soap:operation soapAction="" style="document"/> <wsdl:input name="custDetails"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="custDetailsResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="CustomerSvcService"> <wsdl:port binding="tns:CustomerSvcServiceSoapBinding" name="CustomerSvcPort"> <soap:address location="http://localhost:12000/services/customerProvide"/> </wsdl:port> </wsdl:service> </wsdl:definitions>

0 投票
2 回答
26879 浏览

java - CXF codegen maven 插件不起作用 OpenJDK 11

我一直在使用 JDK 9 & 10 和 CXF codegen 插件 3.2.5 和 3.2.6 没有问题,但是,今天我试图将我的代码库从 Oracle JDK 10 更新到 OpenJDK 11 build 28,但我总是得到同样的错误:

这是我使用 CXF codegen 插件的 pom.xml:

我错过了什么吗?据我所知,这应该与 JDK 9 和 10 中的工作方式相同。有一个关于 JDK 11 兼容性的问题https://issues.apache.org/jira/browse/CXF-7741 ,但这又是对于 CXF 框架而不是插件(我认为)。

0 投票
0 回答
740 浏览

java - WSDL2JAVA - cxf-codegen-plugin - 不产生带有@XmlRootElement 的类

我遇到了一个问题,几天后寻找答案,我决定最好寻求在线帮助。

所以我有来自无法修改的客户端的 WSDL。我在这里放了一个等效版本:

当我将 WSDL 放入 SoapUi 时,我可以创建这样的请求:

我正在使用 maven cxf-codegen-plugin 插件来生成源代码。这是我的 pom.xml 的一部分

生成的服务是这样的:

正如我们所见,“getSomeData”方法使用了一个参数“GetSomeDataParamType”。

如果我们进入 GetSomeDataParamType 类,我们将看不到使用 @XmlRootElement 注释的类,因此我无法使用 jaxb 编组我的“请求”对象并最终出现异常。

问题是我无法修改 WSDL。

我可以做些什么来生成正确的服务方法和可以编组的正确类?

我尝试使用 Jaxb 进行一些调整,但没有成功。

预先感谢您的支持

0 投票
0 回答
109 浏览

cxf - 具有 NTLM 身份验证的 Maven cxf-codegen-plugin - 因 java.io.IOException 失败:服务器返回 HTTP 响应代码:URL 为 401

我正在尝试为cxf-codegen-plugin通过 NTLM 保护的 SOAP Web 服务生成 Java 代码。我不确定如何在生成 java 代码时将用户名/密码/域信息传递给 maven 以连接到远程服务器。我可以使用浏览器使用我拥有的用户名/密码/域组合打开 wsdl。但是,我想知道如何通过命令行通过将一些额外的 vm args 传递给 - 来做到这一点mvn package。或者我可以做任何其他插件配置来帮助我做到这一点?

0 投票
0 回答
105 浏览

maven - 切换操作系统后无法生成源

我最近从 Ubuntu 切换到 Windows 10,我无法再生成源代码。我的 pom.xml 的相关部分如下

maven构建过程中的错误如下

我尝试使用 jdk 8 进行测试,但似乎只能从 oracle 网站下载 JRE

0 投票
1 回答
329 浏览

data-binding - 解决从 WSDL 转换为 Java 时类名中的冲突

我正在使用 CXF 将 WSDL 转换为 Java。启用密钥时-autoNameResolution,CXF 会生成许多具有相同内容的文件。有什么办法可以避免吗?

为了避免嵌套静态类,我启用了<jaxb:globalBindings localScoping="toplevel">. 正如您在 WSDL 元素中看到的那样,“Apple”被引用了 3 次。不幸的是,我无法更改 WSDL。CXF 相应地创建 Apple.java、Apple2.java、Apple3.java或在-autoNameResolution未设置标志时崩溃。

有没有办法教wsdl2java不要创建Apple2.java和 Apple3.java 并在所有三种情况下都引用 Apple.java?通过绑定,我可以将名称更改为Apple2->PeachApple3->Watermelon之类的名称,但这不是我想要的。很明显,所有三个苹果都有相同的字段集,并且实际上是相同的?有没有办法解决这个问题?可能是一些重构 cxf 生成的代码的重构插件?

0 投票
1 回答
1531 浏览

java - IllegalAnnotationExceptions: Two classes have the same XML type name. Code generated by CXF plugin

I have two WSDLs from which I generate Java code using maven cxf-codegen-plugin (org.apache.cxf). Both of them use the same namespace and contains complex types of the same name which was reason why I experienced issues with conflicting java class names. I decided to solve it using bindings.xml:

This renamed for example generated class B2BParameter to TaskServiceB2BParameter so I stopped getting conflicting names issues but I ran into another issue:

This is generated TaskServiceB2BParameter.java:

How can update my bindings.xml to change @XmlType.name appropriately? Or do I really need to change target package? Thank you in advance!

0 投票
1 回答
685 浏览

cxf - 在 java-11 中工作的 CXF-SOAP gradle-plugin?

我们有一个用 gradle 构建的 CXF-SOAP 服务,并试图将它从 java-8 迁移到 java-11。

是否有任何可用的 gradle 的 cxf-plugin 在 java-11 下工作?

或者任何在 java-11 下工作的 cxf/soap 应用程序的演示/示例当然也会有所帮助。

0 投票
0 回答
1349 浏览

java - SOAP 服务工作正常 SOAP UI 但在 Java 代码中解析 WSDL 会引发异常

SOAP 服务在 SOAP UI 中运行良好,但是当我解析 WSDL 时,无论是直接从 URL 调用还是从类路径调用,都会引发两个异常。我尝试了 2 个 maven 插件cxf-codegen-pluginmaven-jaxb2-plugin但例外情况是一样的。我很好奇相同的 API 如何在 SOAP UI 而不是 Java 代码中工作......

异常抛出是:

  1. unbounded prefix 'SOAP-ENV'
  2. Unexpected <xsd:element> appears

我在下面列出了两个插件配置

这是使用 maven-jaxb2-plugin 编译项目时的堆栈跟踪

以下是通过从 wsimport 解析 WSDL 的堆栈跟踪

0 投票
0 回答
493 浏览

java - 来自 WSDL 的类不是由 CXF 自动生成的

我正在尝试将使用 SOAP 的应用程序移植到 JAVA。我在使 cxf-codegen-plugin 读取来自第三方的 WSDL 时遇到问题,它实际上可以工作。我猜测问题在于 WSDL 不完全符合标准,CXF 无法完成解析。

例如,按照http://www.littlebigextra.com/consume-secure-soap-web-service-spring-boot-application/上的教程,我可以成功解析以下 WSDL https://osetesting.bizlinks.com。 pe/ol-ti-itcpe/billService?wsdlhttps://test.conose.pe/ol-ti-itcpe/billService.svc,但无法处理https://e-beta.sunat.gob.pe /ol-ti-itcpfegem-beta/billService?wsdl,如果我没有陷入这个问题会很有趣,因为最后一个应该是前两个的参考。

我还尝试了https://spring.io/guides/gs/sumption-web-service/上的 SpringBoot 教程,它不会引发错误,但它也不会创建类

这是我的 pom(取自http://www.littlebigextra.com/consume-secure-soap-web-service-spring-boot-application/

当我运行 mvn generate-sources 时,我可以看到它正在调用 wsdl2java 工具

但是,我得到以下堆栈跟踪

编辑:我包括了整个错误输出,因为我意识到堆栈跟踪之后还有其他错误

URL 的第 503 行:https ://e-beta.sunat.gob.pe/ol-ti-itcpfegem-beta/billService?ns1.wsdl是什么让我认为 WSDL 不完全兼容(因为 ? ns1.wsdl 参数,而不仅仅是 ?wsdl) 但是,如果我尝试访问该链接,我会得到与使用原始链接相同的 WSDL,所以我根本不理解 503 错误。

当我运行第二个教程中的代码时,我收到以下消息

酷,没有错误......但也没有课程。当我使用其他两个 URL 中的任何一个时,会在 target/xjc/sunat.wsdl 生成类,显示完全相同的消息。

我尝试使用带有 mvn generate-sources -X 的详细信息,但除了显示有关设置的其他消息之外,没有出现错误或有关未生成类的原因的更多信息。

如何获取任一代码来为 WS 生成类?