问题标签 [wsdl2java]

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 投票
10 回答
179861 浏览

java - 如何避免需要在 CXF 或 JAX-WS 生成的 Web 服务客户端中指定 WSDL 位置?

当我通过 maven 使用 CXF 中的 wsdl2java(生成类似于 wsimport 的东西)生成 Web 服务客户端时,我的服务以如下代码开始:

硬编码的绝对路径真的很烂。生成的类在我以外的任何其他计算机上都不起作用。

第一个想法是将 WSDL 文件(以及它导入的所有内容、其他 WSDL 和 XSD)放在 jar 文件和类路径中的某个位置。但我们想避免这种情况。由于所有这些都是由基于 WSDL 和 XSD 的 CXF 和 JAXB 生成的,我们认为在运行时需要知道 WSDL 没有任何意义。

wsdlLocation 属性旨在覆盖 WSDL 位置(至少这是我在某处读到的),它的默认值为“”。由于我们使用的是 maven,因此我们尝试<wsdlLocation></wsdlLocation>在 CXF 的配置中包含以尝试强制源生成器将 wsdlLocation 留空。但是,这只是让它忽略 XML 标记,因为它是空的。我们做了一个非常丑陋可耻的黑客攻击,使用<wsdlLocation>" + "</wsdlLocation>.

这也改变了其他地方:

所以,我的问题是:

  1. 即使所有类都是由 CXF 和 JAXB 生成的,我们真的需要一个 WSDL 位置吗?如果是,为什么?

  2. 如果我们真的不需要 WSDL 位置,那么让 CXF 不生成它并完全避免它的正确和干净的方法是什么?

  3. 我们可以用那个 hack 得到什么不好的副作用?我们仍然无法对其进行测试以了解会发生什么,因此如果有人可以提前说,那就太好了。

0 投票
0 回答
606 浏览

java - 如何在使用 cxf 2.2.12 从 wsdl 生成 java 源代码时摆脱 cos-nonambig 模式错误

嗨,我从这个 wsdl https://mollusk.atollon.com//scheduler.wsdl生成源代码时遇到问题。我的问题是:

  1. 是否有可能摆脱 cos-nonambig 错误并生成源代码?
  2. 随着 wsdl 的验证顺利进行,是否有任何其他工具可以用来查找这个 cos-nonambig 问题的确切位置?
0 投票
2 回答
889 浏览

java - wsdl2 java :Java 堆空间

我正在使用网络服务。我有一个文件 wdsl,我将它转换为两个 java 文件:

wsdl2java -uri nameFile.wsdl

创建的 java 文件之一有 87kb。当我尝试使用 eclipse 打开它时,出现此错误:

我现在想如果:

1) 参数 wsdl2java 有问题。这意味着以某种方式创建更多的 java 文件而不是大文件。

2)内存问题eclipse

我该如何解决?

谢谢

0 投票
1 回答
1565 浏览

java - Axis WSDL2Java 生成的代码:快速连续执行请求时出现服务器错误

我已经获得了第 3 方 wsdl 和部署描述符等,用于 Axis Web 服务的自定义加密。我使用 WSDL2Java 来生成 Java 类,并且一切都运行良好……在某种程度上。当我每隔几分钟调用这些方法时,它们会正常工作并返回有效数据。但是当我快速连续调用它们(因为我需要)时,我得到一个普通的旧服务器错误(如下)。

如果我输出axisFault故障代码和详细信息,我会得到以下信息:-

class org.apache.axis.AxisFault 故障代码 = {http://xml.apache.org/axis/}服务器故障原因 = 服务器错误故障字符串 = 服务器错误故障详细信息 = [Lorg.w3c.dom.Element;@2d4ba772 [org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) 上 org.apache.axis.SOAPService.invoke(SOAPService.java:473) 的服务器错误。 transport.http.AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java: 327) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core 的 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 在 org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:175) 在 org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 在 org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:241) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580) 在org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:595) , 3rdpartyhostnameconnector.CoyoteAdapter.service(CoyoteAdapter.java:241) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java: 580) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 在 java.lang.Thread.run(Thread.java:595) , 3rdpartyhostnameconnector.CoyoteAdapter.service(CoyoteAdapter.java:241) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java: 580) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 在 java.lang.Thread.run(Thread.java:595) , 3rdpartyhostname

有人可以帮忙吗?我束手无策..这可能是时间/缓存问题吗?也许是 WSDL2JAVA 工具创建的 createCall() 方法中的缓存值之一?

0 投票
2 回答
4826 浏览

maven-2 - CXF:如何使用 JAXB 外部绑定文件更改 WSDL 导入的 XML Schema 的包?

我有一个 WSDL 文件,它导入了几个 XML 模式,每个模式都有相同的命名空间(我们称之为 A)。我正在尝试使用 JAXB 外部绑定文件来更改为这些模式生成的包名称(比如说 B)。这是一个例子:

我有一个 POM 文件,其中包含从 WSDL 生成代码的配置(使用 cxf-codegen-plugin)。

我的 WSDL:

这是我的实际绑定文件,它根本不起作用,似乎根本没有应用(没有错误消息......)。

由于我在生成中没有任何错误消息,可能是因为用于访问导入模式的 XPath 表达式不好......

你们有什么线索吗?我有点卡在这里...

提前感谢您的投入!

0 投票
4 回答
9506 浏览

java - 为什么axistools-maven-plugin 试图访问这个相对模式位置?

我们正在使用 Axis 1.x 做一个 Web 服务项目,我在让 Maven 构建工作时遇到问题。

我做一个

这触发了axistools-maven-plugin的wsdl2java目标。它最终中止

这是对的。那个文件不存在。(并且 -e 不会产生额外的有用信息——它是 LifecycleExecutionException,由 MojoExecutionException 引起,由 AxisPluginException 引起,由 FileNotFoundException 引起。)

关键是,它不应该搜索WEB-INF\project.xsd,它应该访问WEB-INF\wsdl\project.xsd.

这是 WSDL 所说的:

这似乎对我所有的同事都有效。我们都在使用 Maven 2.2.1,axistools-maven-plugin 使用以下配置固定到 1.4:

我已经完全清除了我的本地 Maven 存储库,希望它是一个恶意依赖项,但这并没有改变任何东西。知道是什么原因导致这只是我,而不是我的同事吗?


编辑 1:我尝试将 schemaLocation 更改为wsdl/project.xsd(仅出于测试目的,我将无法对 WSDL 进行任何永久性修改)并得到了这个有趣的结果:

如果您像我一样,现在认为这可能./project.xsd会起作用……不,对不起,这使它WEB-INF/project.xsd再次直接搜索。


编辑2:好的,现在axistools只是在取笑我......

../project.xsd
--> src/main/webapp/project.xsd(错误)

../wsdl/project.xsd
--> src/main/webapp/wsdl/project.xsd(错误)

../WEB-INF/wsdl/project.xsd
--> src/main/webapp/WEB-INF/WEB-INF/wsdl/project.xsd(错误)

提醒一下,正确的路径是src/main/webapp/WEB-INF/wsdl/project.xsd.

0 投票
2 回答
2286 浏览

java - WSDL2JAVA 不生成 setter 方法

有没有人遇到过这个?基本上我从 SUN jre 切换到 IBM 的,编译失败,因为 wsdl2java 没有编译必要的 setter 方法。

提前致谢。

0 投票
0 回答
2722 浏览

java - 调用使用 xsd:anyType 的 SOAP WebService

我需要调用一个 WebService,它的参数定义为 xsd:anyType 数组,定义如下:

并且返回类型也是 xsd:anyType 类型,像这样:

WebService 实际上是一个服务器,它可以执行许多不同的任务,这些任务可以由服务器的用户配置(每个任务都有自己的特定参数)。

到目前为止,我可以使用 Microsoft 的 WSDL 实用程序为这个 Web 服务生成 C# 客户端代理。只要我正确地将所有参数转换为 .Net 'object' 类型,生成的 C# 代码就可以轻松使用。

我现在需要为这个 Web 服务生成一个 Java 客户端(老实说,我只是 Java 的初学者)。似乎有一个名为 WSDL2JAVA 的实用程序,我在http://ws.apache.org/muse/docs/2.0.0/tutorial/01-install-muse.html找到了它。但是如果我运行它,它会给我以下错误:

警告:[ID = 'NoWSRPSchema'] 未找到 WS-RP 模式。java.lang.RuntimeException: [ID = 'NotDocLiteral'] WSDL 操作 'runTask' 不是 doc-literal,因为它为其 SOAP 主体定义了具有多个消息部分的消息。文档文字消息的 SOAP 主体应包含一个根请求元素(带有操作名称)和零个或多个子元素(参数)。在 org.apache.muse.tools.inspector.ResourceInspector.getInputName(ResourceInspector.java:486) 在 org.apache.muse.tools.inspector.ResourceInspector.createJavaMethod(ResourceInspector.java:329) 在 org.apache.muse.tools .inspector.ResourceInspector.getOperations(ResourceInspector.java:570) 在 org.apache.muse.tools.inspector.ResourceInspector.run(ResourceInspector.java:

严重:[ID = 'CodeGenFailed'] 代码生成失败,请参阅下面的异常信息。

捕获到异常:[ID = 'NotDocLiteral'] WSDL 操作“runTask”不是文档文字,因为它定义了一条消息,其中包含多个消息部分用于其 SOAP 主体。文档文字消息的 SOAP 主体应包含一个根请求元素(带有操作名称)和零个或多个子元素(参数)。

我认为这里不支持 xsd:anyType。

为该 Web 服务生成代理类的更简单方法是什么?最好尽可能简单,就像 WSDL 为我创建了 C# 代理一样。

0 投票
2 回答
13758 浏览

wsdl - 两个类具有相同的 xml 类型名称

当我尝试在 RAD 中发布我的工作区时,我收到此错误“两个类具有相同的 xml 类型名称”,可能是因为相同的类名称存在于同一个包中,但存在于两个不同的 jar 中。似乎@XmlType 注释需要在这些类的源中为其属性名称和命名空间具有不同的值。我尝试了 Apache CXF 中可用的 wsdl2java,但我无法让它生成这个命名空间属性。我尝试摆弄 -p 包选项,但这只是为了将生成的源代码放在指定的包中。

任何想法如何为 wsdl 中遇到的每个元素生成此命名空间属性?TIA。

0 投票
2 回答
5279 浏览

jaxb - 如何调试 Wsdl2Java Jaxb 错误“声明导致冲突”

我有一个由 .NET 生成的 wsdl,我试图在 Java 应用程序中使用它。为此,我正在尝试使用 CXF Wsdl2Java 工具。问题是当工具运行时,它会抛出一个 jaxb 异常:

我知道我可能需要创建一个自定义绑定文件来在构建时重命名一个对象,但我不知道从哪里开始。如何找出 wsdl 中的哪些对象导致了问题?

(如果异常实际上说明了哪些元素导致了命名冲突,那似乎会很好)