【问题标题】:Subclasses missing in Eclipse-generated WSDLEclipse 生成的 WSDL 中缺少子类
【发布时间】:2012-11-09 13:02:14
【问题描述】:

我正在尝试设置网络服务。

我的方法是:

  • 创建动态 Web 项目
  • 创建类“MyService”:

    @WebService
    @XmlSeeAlso({B.class})
    public class MyService {
        public A method() {
            return new B();
        }
    }
    
  • 创建类“A”:

    @XmlSeeAlso(B.class)
    public class A {
        public int propertyOfA=0;
    }
    
  • 创建类“B”:

    public class B extends A {
        public int propertyOfB=1;
    }
    
  • 从 MyService.java 创建 Web 服务

没有错误,所有文件都已创建。但是,B 类不会出现在 WSDL 中的任何位置。因此,所有 Web 服务响应都不会包含 propertyOfB 的任何值,因为它不在服务描述中。

如何让B 进入 WSDL?

编辑:我不确定它是否有任何区别,但我正在为 Tomcat v7.0、Apache Axis 创建 Web 服务

【问题讨论】:

    标签: java eclipse web-services soap wsdl


    【解决方案1】:

    我认为您的要求是通知 Web 服务的用户 B 类型对象也可以从 method() 操作返回。所以你要做的就是在你的 service.xml 中添加一个这样的条目,

     <parameter name="extraClass">B</parameter>
    

    因此它将向 WSDL 添加条目,提及 Web 服务操作也将返回此类对象。因此,当代码生成发生时,这些也会生成。您可以通过检查响应的 xsi:type 来找到返回的类。请阅读此博客以进一步了解,http://ssagara.blogspot.com/2011/07/how-to-get-best-use-of-axis2-object.html

    【讨论】:

    • 我不确定该放在哪里。我的项目中的任何地方都没有 service.xml 文件。文件 deploy.wsdd 和 server-config.wsdd 看起来确实将行放在其中的某个地方可能是有意义的。这样做不会导致错误,但不会改变服务器的响应。
    • server-config.wsdd 是放置它的地方。只是一个小的拼写错误:&lt;parameter name="extraClasses" value="my.package.B"&gt; 成功了。非常感谢!
    • 还有一条评论。这并没有改变 Eclipse 中生成的 WSDL。但是部署后,服务器生成的 WSDL 包含了我想要的一切。
    猜你喜欢
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多