0

私はプロジェクトを持っていて、SpringそれをSOAP Web Service.
エンティティ、DAO、およびコントローラーがあり、Apache CXFを使用したくありません。
Spring-WS は最初にコントラクトであると読みました。Intellij Idea を使用していますが、エンティティから .wsdlおよび.xsdファイルが生成されました。

エンティティを削除して続行した場合、最初に契約としてカウントされますか?
Spring-WS とは何か、またその開発方法を理解するのに役立つ良い例や何かを教えてください。

4

3 に答える 3

3

ああ、私は最近、xsd に基づいて spring-ws を介して Web サービスを公開する方法を見つけるために、同じ探求の多くを経験しました。Spring WS 2 Made Easyを見つけたこのブログをチェックすることを強くお勧めします

私が調べた 20 以上のうち、最も役立つものの 1 つであり、完全なソースを簡単にダウンロードできます。

xsd (または wsdl) のみに基づいて Web サービスを公開できます。

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:sws="http://www.springframework.org/schema/web-services"
    xsi:schemaLocation="http://www.springframework.org/schema/beans     
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/web-services                          
        http://www.springframework.org/schema/web-services/web-services-2.0.xsd">

<!-- To detect @Endpoint -->        
<sws:annotation-driven />

<!-- publish wsdl from xsd (use during development)-->
<sws:dynamic-wsdl
    id="processStuff"
    portTypeName="MyService"
    locationUri="/myService"
    requestSuffix="Request"
    responseSuffix="Response"
    targetNamespace="http://mycompany.com/dostuff">
    <sws:xsd location="/WEB-INF/xsds/myschema.xsd"/>
</sws:dynamic-wsdl>

<!-- publish static wsdl (better for production deployments)-->
<sws:static-wsdl id="orders" location="/WEB-INF/wsdl/orders.wsdl"/>

</beans>

Spring WS は ID の場所で wsdl を公開します。xsd の例では、これは http://localhost:8080/[warName]/processStuff.wsdl で公開されます。

リクエストとレスポンスのサフィックスに一致する xsd のアイテムは、公開時に wsdl 操作として解釈されます。

次に、xsd からの操作と引数に一致する @Endpoint で注釈が付けられたクラスを開発する必要があります。

小さな例:

@Endpoint
public class MyWebService {

    @PayloadRoot(namespace = "http://mycompany.com/dostuff", localPart = "SomeRequest")
    @ResponsePayload
    public SomeResponse getSomething(@RequestPayload SomeRequest something) {
        return new SomeResponse();
    }
}

私はそれが最初に契約だと言います.コードを介して契約を書いただけです. 個人的には xsd よりも Java コードを書きたいと思っています。

Sean F が指摘したように、動的 wsdl 生成は、Spring のページに記載されているように、開発中にのみ行う必要があります。

注意

実行時に XSD から WSDL を作成するのは非常に便利ですが、この方法にはいくつかの欠点があります。まず、リリース間で WSDL 生成プロセスの一貫性を保つように努めていますが、それでも (わずかに) 変更される可能性があります。第 2 に、生成が少し遅くなりますが、生成された WSDL は後で参照できるようにキャッシュされます。したがって、プロジェクトの開発段階でのみ使用することをお勧めします。次に、ブラウザーを使用して、生成された WSDL をダウンロードし、プロジェクトに保存して、.xml で公開することをお勧めします。これは、WSDL が時間の経過とともに変化しないことを本当に確実にする唯一の方法です。

于 2013-09-24T05:18:11.843 に答える