代码之家  ›  专栏  ›  技术社区  ›  draganstankovic

我可以用Object type作为@WebMethod的参数吗?

  •  3
  • draganstankovic  · 技术社区  · 15 年前

    我尝试创建一个参数为java.lang.Object的web方法,但收到类似以下错误: http://community.jboss.org/message/532500

    无法将java.lang.Object作为web方法参数传递。“

    如果我不能将对象作为web方法参数传递,那么这背后的原因是什么?当我想通过单个web方法传递各种对象类型时,如何处理这种情况?

    如果可以,我该怎么做?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Marc Bollinger    15 年前

    我不是一个大JAXB/JAX-WS的家伙,但是:他可能是对的。

    在下面这个简单的例子中, DemuxEnum 将是包含要发送的所有类型的值的枚举:

    MyObject obj = new MyObject();
    ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
    ObjectOutputStream objectOut = new ObjectOutputStream(byteOutStream);       
    objectOut.writeObject(obj);
    objectOut.close();
    
    byte[] serializedObject= byteOutStream.toByteArray();
    someWSObject.SendObject(DemuxEnum.MyObjectType, serializedObject);
    

    您已经设置了一个web服务端点 (DemuxEnum, byte[]) . 为了获得额外的积分,您可以使用其他序列化程序/反序列化程序技术,如 Apache Thrift Google ProtocolBuffers .

    编辑 :这样做的明显缺点是,如果它是面向客户的web服务,那么它就不会摇摆不定。如果是这样的话,最好枚举具有具体参数的web方法。

        2
  •  2
  •   wulfgarpro    13 年前

    更好的方法是使用JAXB作为他在另一篇文章中收到的答案中概述的OP——请参阅: http://myarch.com/create-jax-ws-service-in-5-minutes