2013年3月5日火曜日

Webサービス用外部オブジェクトのデプロイ

GeneXusにて外部のWebサービス・プロバイダーを呼び出すアプリケーションを作成する場合に外部オブジェクトを使用しますが、呼び出し先(Webサービス・プロバイダー)のURLは外部オブジェクトのプロパティに設定します。



しかし、実際にテスト環境や本番環境で動かす時には開発時のURLとは別のURLを指定しなければいけない場合がほとんどだと思います。GeneXusを使ってビルドを行わずに別のURLを指定する場合は以下の方法となります。




1.ロケーション定義ファイルの準備

1-1.ロケーション定義ファイル「Location.xml」を作成します。内容は以下の通りです。


<GXLocations>
 <GXLocation name="外部オブジェクト名">
  <Common>
   <Host>localhost</Host>
   <Port>80</Port>
   <BaseUrl>/BillingSystem.NetEnvironment/</BaseUrl>
   <Secure/>
   <Proxyserverhost/>
   <Proxyserverport/>
   <Timeout/>
  </Common>
  <HTTP>
   <Authentication>
   <Authenticationmethod/>
   <Authenticationuser/>
   <Authenticationpassword/>
   <Authenticationrealm/>
   </Authentication>
   <Proxyauthentication>
   <Proxyauthenticationmethod/>
   <Proxyauthenticationrealm/>
   <Proxyauthenticationuser/>
   <Proxyauthenticationpassword/>
   </Proxyauthentication>
  </HTTP>
 </GXLocation>
</GXLocations>
GXLocationタグのname属性に外部オブジェクト名を指定します。
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Location.xml+file+format,

Commonタグ内のHost、Port、BaseUrlタグに実行時のURL情報を指定します。

1-2.Location.xmlをターゲットディレクトリに配置してください。

・.netの場合はweb.configと同じディレクトリ(ターゲットディレクトリ)



・Javaの場合はアプリケーションサーバーのWEB-INFディレクトリ



2.Webサービス用外部オブジェクトを利用する箇所(Webパネルやプロシージャオブジェクト)にて、以下の記述を追加します。


//下の一行を追加します(ロケーション情報の取得)
&Location = GetLocation('外部オブジェクト名')
//&LocationはLocation拡張データ型です。

//Webサービスの呼び出し
&Result = &Service.Execute(&Param)

Location変数の定義

GetLocation関数でロケーション情報を取得



これにより再ビルドせずにURLの変更が可能になります。Location.xmlファイルが見つからない場合はディフォルト値としてプロパティの値を使い、存在する場合はLocation.xmlの設定内容を使って通信を行います。

0 件のコメント:

コメントを投稿