【问题标题】:Error importing .net webservice with wsimport使用 wsimport 导入 .net Web 服务时出错
【发布时间】:2023-03-14 13:10:01
【问题描述】:

我有一个用 c# 编码的 web 服务。 我想在 java 应用程序中使用它,所以我尝试使用带有这些参数的 wsimport 导入它:

wsimport -keep -verbose -B-XautoNameResolution http://localhost:50358/WebService.asmx?wsdl

我的网络服务中有这样的课程:

 public class ReturnClass
{
    int _returnCode;
    DataTable _outputDataDT;


    public int ReturnCode { set { _returnCode = value; } get { return _returnCode; } }
    public DataTable OutputDataDT { set { _outputDataDT = value; } get { return _outputDataDT; } }

}

如果我使用 Datatable 变量,wsimport 会返回此错误:

[错误] 属性“Any”已定义。使用 来解决这个问题 的冲突。 http://localhost:50358/WebService.asmx?wsdl 的第 16 行

[ERROR] 以下位置与上述错误行相关 17 个http://localhost:50358/WebService.asmx?wsdl

但如果我删除数据表变量,它可以工作,但我需要数据表。

我该如何解决这个问题?

【问题讨论】:

    标签: c# java web-services wsdl wsimport


    【解决方案1】:

    查看您的模式,JAXB 看到两个具有相同名称的属性,并且无法确定在生成的 Java 代码中调用字段的内容。您需要创建一个外部自定义绑定文件。在http://docs.oracle.com/javase/tutorial/jaxb/intro/custom.html 阅读有关它的更多信息。 wsimport 命令有一个 -b 选项,您可以使用它来指定绑定文件。

    【讨论】:

      【解决方案2】:

      发布你的 wsdl。

      另外:这可能是类型/元素命名冲突,在这种情况下,您可以简单地使用

      <nameXmlTransform>
        [ <typeName [ suffix="suffix" ]
                    [ prefix="prefix" ] /> ]
        [ <elementName [ suffix="suffix" ]
                       [ prefix="prefix" ] /> ]
        [ <modelGroupName [ suffix="suffix" ]
                          [ prefix="prefix" ] /> ]
        [ <anonymousTypeName [ suffix="suffix" ]
                             [ prefix="prefix" ] /> ]
      </nameXmlTransform> 
      

      http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXBUsing4.html#wp148550

      【讨论】:

        【解决方案3】:

        我已删除所有数据表,并使用列表而不是数据表

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多