2016-11-11 5 views
0

私はWebサービスのクライアントを構築しています。私はいつもwsdlをダウンロードしているクライアントに欲しくなくてthis答えを得ました。Java SOAPクライアントが非常に遅い

しかしWSServiceDelegateのソースファイルを評価し、

URL url = wsdl.getSystemId()==null ? null : JAXWSUtils.getEncodedURL(wsdl.getSystemId()); 
WSDLModel model = parseWSDL(url, wsdl, serviceClass);          
service = model.getService(this.serviceName);            
if (service == null)                  
    throw new WebServiceException(              
     ClientMessages.INVALID_SERVICE_NAME(this.serviceName,        
      buildNameList(model.getServices().keySet())));        
// fill in statically known ports               
for (WSDLPort port : service.getPorts())             
    ports.put(port.getName(), new PortInfo(this, port));         

私はそれはまだサービスを取得するには、WSDLを解析していることがわかります。どのように私はそれを回避することができます。コンテキストを使用してエンドポイントURLを提供しました。

私はできるだけ速く、できるだけ小さくする必要があります。巨大なwsdlを追加するには、wsdlをダウンロードするよりも最悪です。

答えて

1

あなたが興味のある操作については、wsdlの要求/応答メッセージとxsdに基づいて独自のSOAPメッセージを構築できます。 Jaxbツールを使用して、XSDからJavaクラスに変換することができます。次に、POST本体(SOAPベース)をエンドポイント・アドレスにポストするために、Http Clients(Spring RestTemplateなど)を使用してポストコールを行う必要があります。これはあなたの呼び出しをより速くしますが、利益を得るためにはもっとコードを書く必要があります。

+0

詳細を追加できますか?私はあなたの提案に行ったが、これは追随するのに十分な情報ではない?いくつかの詳細を追加する(例のコードがあるかもしれない)、私はそれを受け入れられたものとしてマークすることができる –