2010-12-04 23 views
0

私はクライアントコードでクライアントを生成するときにsoapクライアントでのsoap Webサービスの戻り値の使用方法

のようなメソッドを持つSOAPサービスを持っています。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); 
    } 
} 

答えて

2

はい、それは完全に可能です。 石鹸クライアントは、WSDLのスキーマタイプで定義されたすべてのクラスを生成する必要があります。あなたはクライアントの世代で何かが欠けている可能性があります。

それはあなたが(AXIS、.NET、JAX-WS)は、クライアントの生成のために何を使用しているを指定して、WSDLWsResultInformationタイプのスキーマ定義が含まれていることを確認した場合に役立つだろう。

+0

お返事ありがとうございます。私はJAX-WS(wsdl2javaバイナリ)を使用してwsdlからクライアントを生成しています。しかし、私のwsdlファイルには私のカスタムクラスについては何もありません。私はそれが問題だと知っています。私のカスタムクラスの定義でwsdlを生成するにはどうすればいいですか? – dds

+0

どのアプリケーションサーバーを使用していますか? Tomcat、JBoss、Websphere、Oracle、BEA Weblogic?あなたの問題はおそらくサーバー側にある可能性が高いので、サーバー用のコードと現在生成されているWSDLを投稿すると役立ちます。 –

+0

@パブロ・サンタクルス:私は風船に取り組んでいます。私は元の回答にすぐにファイルを追加しています – dds

関連する問題