2011-05-17 40 views
7

我正在使用NetBeans的Web Service生成工具。我查看了可用的教程,但找不到任何有关如何将自定义类用作返回类型的任何信息。我读过的大部分教程都不比Hello World复杂:它们接受并返回简单类型,如字符串。使用自定义类作为JAX-WS返回类型?

所以说我想要一个有3个字段的类:一个String,一个int和一个double []。到目前为止,我可以通过自己的类的唯一方法是创建“信封类”,没有方法,没有参数的构造函数,并且声明所有的字段都是公共的。我宁愿编写标准的Java类。很显然,我不能通过SOAP发送这些方法,但是我认为有一种方法可以在编组类时忽略这些方法,并且只会对字段进行Marshall。

有人告诉我有注释有助于此,但我找不到有关如何实现它们的任何教程。任何指导将不胜感激。

回答

4

JAX-WS使用JAXB映射类型,所以类应符合该规范。您可以在java.xml.bind.annotations包中找到JAXB注释。

如果你想元帅非注解类,符合规则的JavaBeans应该工作:

public class Foo { 
    private String bar; 
    public String getBar() { return bar; } 
    public void setBar(String bar) { this.bar = bar; } 

    public static void main(String[] args) { 
    Foo foo = new Foo(); 
    foo.setBar("Hello, World!"); 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    JAXB.marshal(foo, out); 
    foo = (Foo) 
     JAXB.unmarshal(new ByteArrayInputStream(out.toByteArray()), Foo.class); 
    System.out.println(foo.getBar()); 
    } 
} 

如果你想使用的构造方法的参数,等等看spec有关的部分工厂方法和适配器。

+0

感谢McDowell,关于注释的信息有很多帮助。 – Benji 2011-05-18 02:55:24

5

如果您使用NetBeans界面来设计您的ws。

  • 单击添加新的操作

enter image description here

  • 选择返回类型,浏览你的类(如图所示)
+0

我试过了,NetBeans生成的代码没错,但GlassFish不会部署任何使用我的自定义类作为返回类型的东西。基本上任何具有参数构造函数或方法的东西都会被拒绝。这意味着设置字段值的唯一方法是让它们公开:不完全理想。你列出的方法是否适合你?也许这是GlassFish的错误,而不是我的代码... – Benji 2011-05-17 09:52:39

+0

以及我将这部署在tomcat上。你可以在这里发布错误日志 – 2011-05-17 10:03:02

+0

我已经在我朋友的机器上试过了。瞧,一切正常。我怪NetBeans 7.0。感谢您的协助,Jigar Joshi – Benji 2011-05-17 10:40:49

相关问题