カスタム WSDL アプリケーションの使用
カスタム WSDL ジェネレータ サンプル アプリケーションをセットアップするには、次の作業を実行する必要があります。
- 特定の WSDL をサポートするカスタム WSDL ハンドラ アプリケーションを作成します。
この作業を完了するには、「カスタム WSDL アプリケーションのビルド」を参照してください。 - カスタム WSDL ハンドラを登録および使用できるように SQL Server 2005 のインストールを構成します。
この作業には、SQL Server 2005 のインストールに対して次の変更を実行する配置スクリプトの作成も含まれます。
- カスタム WSDL アセンブリ (CustomWSDL.dll) をサーバーに追加し、ADD ASSEMBLY ステートメントで使用できるように登録します。
- カスタム WSDL ハンドラ アプリケーションが正常に機能するために必要な追加のストアド プロシージャを作成します。
- SQL Server のインスタンスで、HTTP エンドポイントを作成または変更して、このエンドポイントがカスタム WSDL ハンドラを使用し、既定または単純な WSDL 応答ではなくカスタム WSDL 応答を返すようにします。
カスタム WSDL ハンドラの配置
次の手順は、SQL Server 2005 を実行しているコンピュータにローカル管理者としてログインしているか、または管理者特権を使用してリモートからこのコンピュータにアクセスできることを前提としています。
作業 1: サーバーの構成
SQL Server Management Studio で、[新しいクエリ] をクリックしてサーバーに接続します。
次の Transact-SQL スクリプトをクエリ ウィンドウにコピーします。
USE master GO -- Drop myWSDL procedure if it exists. IF (SELECT count(*) FROM sysobjects WHERE name = 'myWSDL') = 1 DROP PROCEDURE myWSDL GO -- Drop CustomWSDL assembly if it exists. DROP ASSEMBLY CustomWSDL GO -- Update the path to the compiled assembly as necessary. CREATE ASSEMBLY CustomWSDL FROM 'C:\temp\CustomWSDL.dll' GO -- Create a stored procedure to map to the common lanugage -- runtime (CLR) method As with any other SQL Server stored procedure -- that maps to a CLR method, the actual stored procedure name -- ('myWSDL') can be arbitrarily specified. CREATE PROCEDURE myWSDL ( @endpointID as int, @isSSL as bit, @host as nvarchar(256), @queryString as nvarchar(256), @userAgent as nvarchar(256) ) AS EXTERNAL NAME CustomWSDL.[MSSql.CustomWSDL].GenerateWSDL GO -- Follow the security guidelines set up for your environment. -- The following example is meant to be used for development or -- testing purposes only. GRANT EXEC on myWSDL to [PUBLIC] GO -- The following is a sample stored procedure (InOut) that -- demonstrates the configuration of an HTTP endpoint. -- If the InOut stored procedure already exists, it is dropped. IF (SELECT count(*) FROM sysobjects WHERE name = 'InOut') = 1 DROP PROC InOut GO CREATE PROC InOut @InParam int, @OutParam nvarchar(100) output AS SELECT * FROM syslanguages WHERE langid = @InParam SELECT @OutParam = [name] FROM syslanguages WHERE langid = @InParam PRINT @OutParam SELECT * FROM syslanguages WHERE langid = @InParam FOR XML raw, XMLSCHEMA RETURN 1 GO GRANT EXEC on InOut to [PUBLIC] -- The following creates a sample HTTP endpoint to demonstrate -- the endpoint setup. If the sample endpoint already exists, it -- is first dropped. IF (SELECT count(*) FROM [msdb].sys.http_endpoints WHERE name = 'sql_endpoint') = 1 DROP ENDPOINT sql_endpoint GO CREATE ENDPOINT sql_endpoint STATE=STARTED AS HTTP ( SITE='*', PATH='/sql/WSDL', PORTS=(CLEAR), CLEAR_PORT=80, AUTHENTICATION=(DIGEST, INTEGRATED) ) FOR SOAP ( WEBMETHOD 'http://myNS.com/'.'InOut' ( NAME='master.dbo.InOut' ), DATABASE = 'master', WSDL='master.dbo.myWSDL', Batches=enabled, SCHEMA = STANDARD ) GRANT CONNECT ON ENDPOINT::sql_endpoint to [PUBLIC]
スクリプトを実行します。
作業 2: ハンドラのテスト
カスタム WSDL ハンドラが正しく動作することを確認するには、変更した URL クエリ文字列を使用して、カスタム WSDL の要求を試行します。たとえば、MyServer
という名前の SQL Server 2005 のインスタンスに接続し、上記のスクリプトを使用する場合、sql/WSDL
のサーバーで確立されたエンドポイントのパスがスクリプトに含まれている必要があります。このエンドポイントでは、カスタム WSDL ハンドラを使用して応答が行われます。したがって、このエンドポイントへの接続をテストし、カスタム WSDL 要求を提供するには、HTTP Web ブラウザ クライアントで次のような URL を使用します。
http://MyServer/sql/WSDL?wsdlargument
argument の値には、さまざまな種類の各クライアントと WSDL に使用される文字列をサポートする、次のいずれかのカスタム WSDL 識別子を使用できます。
カスタム WSDL URL | 説明 |
---|---|
|
Visual Studio 2003 開発ツールを使用して開発された単純な Web クライアント向け。 |
|
Borland JBuilder 9.0 開発ツールを使用して開発された単純な Web クライアント向け。 |
|
webMethods Glue 5.0.1 開発ツールを使用して開発された単純な Web クライアント向け。 |
次の表に示すように、これら 3 つのいずれを選択した場合でも、<argument>
の値によって返されるのは単純な WSDL (すべての XSD ネイティブ型) です。完全な拡張 WSDL を必要とする場合は、クエリの引数の文字列に extended
を追加します。
単純な WSDL 識別子 | 拡張 WSDL 識別子 |
---|---|
|
|
|
|
|
|
参照
処理手順
カスタム WSDL アプリケーションの C# コード リスト
関連項目
カスタム WSDL サポートの実装
カスタム WSDL アプリケーションのビルド