2013-05-31 4 views
7

私は春のWebサービスには新しく、階乗サービスのサンプルプログラムを作成した後、私は疑問が残っています。 web.xmlで定義されている>リクエストが ディスパッチャサーブレットに行く - - >ディスパッチャサーブレットが に見えるサーバー上のアプリケーションの実行春のWebサービスフロー


と要求を生成します。私は、これはどのように春のWebサービスの仕事だと思います[サーブレット名] -servlet.xmlのために - > XML要求 にエンドポイントを行く - - >は、ディスパッチャサーブレットは、右のエンドポイントを見つけ payloadroot探し>応答がエンドポイントによって生成される


は今、私の疑問は、次のとおりです。

  1. どのようにエンドポイントに来る要求はXML形式で来るのでしょうか?私はXSDがXMLを作成するのに役立つが、それはいつ行うのだろうか?
  2. このプロセス全体で、wsdlが構築されるのはいつですか?

後ビーン定義即ちあり:[servlet-name]-servlet.xmlファイル:

<beans ...> 
    <bean id="findFactorialService" class="springws.findFactorial.FindFactorialServiceImpl"/> 

    <bean id="findFactorialServiceEndpoint" class="springws.findFactorial.endpoint.FindFactorialServiceEndpoint"> 
     <property name="findFactorialService" ref="findFactorialService" /> 
    </bean> 

    <bean id="payloadMapping" class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping"> 
      <property name="defaultEndpoint" ref="findFactorialServiceEndpoint" /> 
     </bean> 

     <bean id="findFactorialSchema" class="org.springframework.xml.xsd.SimpleXsdSchema"> 
      <property name="xsd" value="/WEB-INF/findFactorialService.xsd" /> 
     </bean> 

     <bean id="findFactorial" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition"> 
      <property name="schema" ref="findFactorialSchema" /> 
      <property name="portTypeName" value="hello" /> 
      <property name="locationUri" value="http://localhost:7070/find-factorial-using-contractfirst/services" /> 
     </bean> 
    </beans> 

答えて

4
  1. XSDはxmlを生成しないため、検証に使用されます。また、クライアントにXMLを作成してサービスに送信する方法を理解するために、クライアントを作成する人にも使用されます。 「要求」とは、クライアントからサービスに送信されたメッセージです。通常、httpプロトコル(ワールドワイドウェブのプロトコル)を介して、サービスにどのようにアクセスするのですか。

  2. これは契約優先であることに言及しています。これは、何か他のことをする前にwsdlを書くべきであることを意味します(通常、これはインターフェイスを説明するxsdと併用します) 。 Springは、メッセージを処理するためにwsdlといくつかのアノテーションで設定することができます。jaxbを使ってコード内のJavaオブジェクトに直接バインドすることもできます。これにより、着信XMLペイロードを手動で解析する必要がなくなります。

This is old、それはあなたが使用している同じアプローチを、以下、さらには同じ非推奨春のクラスを使用しています。

最近、多くの開発者は、RESTベースのWebサービスに賛成するWS- *スタイルのWebサービスを避けています。これらのWebサービスは、Spring WebとSpringMVCを使用して非常に簡単に実現され、Javaの簡単なアノテーションpojo。必要に応じてxsdから生成されたJavaオブジェクトにXMLペイロードを自動的にバインドさせることもできます。これにより、いつでもXMLを処理する必要がなくなります。

0
  1. バネは、XMLにシリアライズし、リクエストから解析するJAXBを使用します。
  2. JAX-WSを使用している場合は、実行時にデフォルトでWSDLが生成されますが、あらかじめ生成されたWSDLも提供されます。

があなたのコメントに対処するには: - 持っている、あなたはspring-ws-core Mavenの依存関係を見てみる場合は

を、あなたはそれがspring-oxmへの依存性(>オブジェクトマッピングXML <以上の抽象化を)持っていることを確認しますjaxb-apiプロジェクトに依存しています。

あなたの依存関係で実際に何を使用しているかを詳しく見てください。 JAXBはapp-serverのlib /フォルダから来るかもしれません。

そして2番目のポイント。 JAXBはXMLにシリアライズするだけでなく、xmlからもデシリアライズできます。

+0

第1のもの:私はJAXBサービスまたはjarを使用していません。 第2の事柄:JAXBはJavaクラスを使用してxml ..に変換しますが、要求はXMLの形式でエンドポイントに送られます..オブジェクトの形.. – Chandeep

+0

は答えを更新しました – WeMakeSoftware

関連する問題