我有一个像
这样的方法的肥皂网服务public WsResult doMyJob(String s, Information info);
当我从wsdl生成客户端时,在客户端代码中,我的webservice的方法变成了类似的东西:
public Object doMyJob(String s, Object arg0);
问题在于我希望客户端能够实现/查看我的自定义类(WsResult和Information),而无需在代码中明确定义它们。
这是否可能,如果是这样的话?
由于
编辑:
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="SendSms" targetNamespace="http://webservice.aaa.bbb.com/" xmlns:ns1="http://webservice.aaa.bbb.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://webservice.aaa.bbb.com/" xmlns="http://webservice.aaa.bbb.com/" xmlns:tns="http://impl.webservice.aaa.bbb.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="registerScheduledSms" type="registerScheduledSms" />
<xsd:complexType name="registerScheduledSms">
<xsd:sequence>
<xsd:element minOccurs="0" name="arg0" type="xsd:string" />
<xsd:element minOccurs="0" name="arg1" /> **HERE THERE SHOULD BE xsd definition for my custom class**
<xsd:element minOccurs="0" name="arg2" /> **and here**
<xsd:element minOccurs="0" name="arg3" type="xsd:dateTime" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="registerScheduledSmsResponse" type="registerScheduledSmsResponse" />
<xsd:complexType name="registerScheduledSmsResponse">
<xsd:sequence>
<xsd:element minOccurs="0" name="return" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="registerScheduledSmsResponse">
<wsdl:part element="ns1:registerScheduledSmsResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="registerScheduledSms">
<wsdl:part element="ns1:registerScheduledSms" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="SendSms">
<wsdl:operation name="registerScheduledSms">
<wsdl:input message="ns1:registerScheduledSms" name="registerScheduledSms">
</wsdl:input>
<wsdl:output message="ns1:registerScheduledSmsResponse" name="registerScheduledSmsResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
</wsdl:definitions>
我的服务代码
@WebService(endpointInterface = "com.bbb.aaa.webservice.SendSms")
public class SendSmsImpl implements SendSms {
private DbService dbService;
@Override
public WsResult registerScheduledSms(String applicationId,
ServiceAccount serviceAccount, Sms sms, Date scheduledDate) {
return dbService.addNewScheduledSms(applicationId, serviceAccount, sms, scheduledDate);
}
}
答案 0 :(得分:2)
是的,这完全可能。您的 soap客户端应生成 WSDL 上架构类型中定义的所有类。你可能遗漏了一代客户端。
如果您指定用于生成客户端的(AXIS,.NET,JAX-WS)并确认 WSDL 包含{的架构定义,将会有所帮助{1}}和WsResult
类型。