0

我无法使用 Axis1.4 中的 WSDL2Java 生成客户端类。WSDL 包含标头

xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"

显示的错误是

java.io.IOException: Element {http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security is referenced but not defined.
    at org.apache.axis.wsdl.symbolTable.SymbolTable.checkForUndefined(SymbolTable.java:670)
    at org.apache.axis.wsdl.symbolTable.SymbolTable.add(SymbolTable.java:545)
    at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:518)
    at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495)
    at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)
    at java.lang.Thread.run(Thread.java:680)

WSDL2Java 的参数是:-o ./src --package ws.generated -v https://myurl/?WSDL

我是否缺少参数或某些特殊配置?

4

1 回答 1

0

我必须查看整个 WSDL 才能确定,但​​看起来虽然您在定义 wsse 前缀时引用了命名空间,但没有指示 (wsdl2java) 引擎在哪里可以找到命名空间中的元素/类型定义。尝试将以下内容添加到您的 WSDL 并再次执行:

       <wsdl:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
       location="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />

此元素应该是对等元素<wsdl:types><wsdl:message>元素等。

这确实假设 wsdl 前缀是用 wsdl 定义的命名空间标识的,这是一种通用约定。

于 2012-05-10T04:53:48.910 回答