Wsdl 可选参数在生成的 java 存根代码中成为必需的
Posted
技术标签:
【中文标题】Wsdl 可选参数在生成的 java 存根代码中成为必需的【英文标题】:Wsdl optional params become mandatory in generated java stub code 【发布时间】:2014-11-11 13:37:39 【问题描述】:我是网络服务的新手。 我已经从提供的 wsdl 生成了存根。 我观察到的是存根生成的代码,要求我提供强制性的可选参数。 例如这是wsdl文件中的方法之一。
<complexType name="OPP_BOOK_FACT">
<sequence>
<element form="unqualified" name="Descriptions" type="tns:Descriptions" minOccurs="0"/>
<element form="unqualified" name="CustomerID" type="tns:CustomerConfirmationID" minOccurs="0"/>
<element form="unqualified" name="UID" type="tns:UPRID" minOccurs="0"/>
<element form="unqualified" name="Ext" type="tns:ExtAuth" minOccurs="0"/>
<element form="unqualified" name="Partner" type="tns:Partner"/>
<element form="unqualified" name="Subscriber" type="tns:Subscriber"/>
<element form="unqualified" name="FactBook" type="tns:FactBook"/>
<element form="unqualified" name="FactAuth" type="tns:FactAuth"/>
<element form="unqualified" name="Price" type="tns:Price"/>
<element form="unqualified" name="SubseReqData" type="tns:SubseReqData" minOccurs="0"/>
<element form="unqualified" name="FactBundleTemplate" type="tns:FactBundleTemplate" minOccurs="0"/>
<element form="unqualified" name="ContentInfo" type="tns:ContentInfo" minOccurs="0"/>
<element form="unqualified" name="Discount" type="tns:Discount" minOccurs="0"/>
<element form="unqualified" name="FactShoppingBasket" type="tns:FactShoppingBasket" minOccurs="0"/>
</sequence>
</complexType>
如果您注意到例如“CustomerID”、“UID”和“Ext”是可选参数,例如 minOccurs="0"。 但是生成的stub api如下。
com.xstg.www.soap.schemas.services.v80.Xaction80Stateful_wsdl.Xaction80StatefulPortType.OPP_BOOK_F ACT(Description[] arg0, Long arg1, String arg2, ExtAuthElement[] arg3, 合作伙伴 arg4, 订阅者 arg5, FactBook arg6、FactAuth arg7、Price arg8、SubseReqData arg9、FactBundleTemplate arg10、ContentInfo arg11、折扣 arg12、FactShoppingBasket arg13) 抛出 RemoteException
很明显,要从客户端调用此方法,我还必须明确提供所有可选参数变量。
我已经使用<axis-wsdl2java>
ant 调用来生成存根。
我可以知道这是什么原因吗?据我说,客户存根不应该期望我也提供所有可选参数。 如果您需要任何其他信息,请告诉我。
更新: 我们使用的是轴 1.4。上述存根是使用axis-1.4 生成的。 我对axis2进行了同样的尝试。在axis2中生成的存根不同。但是我需要使用axis-1.4,因为旧的客户端代码已经使用这个版本开发了
【问题讨论】:
【参考方案1】:您是否介意尝试添加 nillable="true"。
喜欢:
<element form="unqualified" name="Ext" type="tns:ExtAuth" nillable="true" minOccurs="0"/>
【讨论】:
我试过了,但没有运气。看起来 nillable="true" 是说参数可以取空值或不取值。以下链接中有一个很好的解释关于这个dimuthu.org/blog/2008/08/18/…以上是关于Wsdl 可选参数在生成的 java 存根代码中成为必需的的主要内容,如果未能解决你的问题,请参考以下文章