如何使用xsd元素名称而不是元素类型构造soap消息

时间:2015-05-27 22:57:03

标签: web-services java-ee soap jaxb

<xsd:element name="echodemo" type="EchodemoType">
    <xsd:annotation>
        <xsd:documentation>
            Root element
        </xsd:documentation>
    </xsd:annotation>

这是我的XSD。

但是当我通过在RSA中选择生成java从xsd生成java对象时,它会生成EchodemoType.java .. 所以我在将请求传递给我的服务之前在下面创建了LIKE

EchodemoType request = new EchodemoType();
request.setEchoRequest("This is Echo String !!!");
request .setVersion(new BigDecimal("1.0"));

在调用我的webservice时看到如下所示的soap消息。

<EchodemoType version="1.0">
<ns2:echoRequest>This is Echo String !!!</ns2:echoRequest>
</EchodemoType>

基本上我想要肥皂消息开始标记元素名称&#34; echodemo&#34;相反,使用类型&#34; EchodemoType&#34;。我还希望它具有名称空间

<echodemo  version="1.0" xmlns="http://test.com/api/test/services/echodemo">
 <ns2:echoRequest>This is Echo String !!!</ns2:echoRequest>here
</echodemo>

请告诉我如何生成类以获取肥皂消息或我需要更正此消息?

1 个答案:

答案 0 :(得分:0)

使用Object Factory来设置对象,如下所示,你不需要在DemoType.java中使用@XmlRootElement。

DemoType demoServiceRequest = new DemoType();
demoServiceRequest.setName("fgfg"); 
ObjectFactory obDemo = new ObjectFactory();  
Request requestObject = new Request();     
requestObject.setAny(obDemo.createDemo(demoServiceRequest));

在Request.java中添加DemoType类,如@XmlSeeAlso({DemoType.class})