0

我有一个肥皂网络服务,它有一个类似的方法

public WsResult doMyJob(String s, Information info);

当我从 wsdl 生成客户端时,在客户端代码中,我的 web 服务的方法如下:

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);
    }
}
4

1 回答 1

2

是的,这是完全可能的。您的soap 客户端应该生成在您的WSDL上的模式类型中定义的所有类。您可能会在客户端生成过程中遗漏一些东西。

如果您指定使用什么来生成客户端(AXIS、.NET、JAX-WS)并确认您的WSDL包含模式定义WsResultInformation类型,将会有所帮助。

于 2010-12-04T11:44:34.833 回答