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の設定内容を使って通信を行います。

コメント

このブログの人気の投稿

データプロバイダーを使いこなそう - 応用編その4 スケジューラー 補足編

HTMLヘッダーにあれこれ直接追加したいとき

GeneXusにおけるWebアプリケーションセキュリティ対策 - OWASP 2010 Top10 Security Risks in GeneXus Applications