4

我有一个用 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 会返回此错误:

[错误] 属性“任何”已定义。使用 <jaxb:property> 来解决这个冲突。第 16 行http://localhost:50358/WebService.asmx?wsdl

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

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

我怎样才能解决这个问题?

4

3 回答 3

0

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

于 2012-07-03T00:40:27.493 回答
0

发布您的 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

于 2012-07-03T00:47:52.623 回答
0

我已删除所有数据表,并使用 List<> 而不是 Datatable

于 2012-08-01T14:23:55.523 回答