2015.11.18 XPagesDay 2015セッション 「XPagesとIoTでドローンを飛ばそう」
XPagesDayが今年も開催されます 2015年、今年のX...
XPages on Bluemixが2016年5月に製品版としてリリースされ、クラウド上で簡単にXPAGESアプリケーションを開発する環境が用意されました。
XPages on Bluemixでは”XPages ランタイム” と呼ばれる実行環境からXPAGESを動かすことになります。
ただ、XPagesランタイムはあくまで実行環境という位置づけであり、データ(文書)の格納を行うには、別途データ格納先として”XPages No SQL Database”と呼ばれるサービスと組み合わせて開発することが一般的でした。
“XPages No SQL Database”と言っても蓋を開けてみればただのNSFファイルであるので、フォームやビューを作って文書を格納することができます。
しかし、この”XPages No SQL Database”というサービスは今のところ Bluemix Labs Catalogと呼ばれる実験的なサービスの一部という扱いとなっており、データの永続性が保障されるわけではないというのがIBMからの発表になります。
そこで、今回ご紹介するのがデータの格納先としてオンプレミスのDominoを指定してクラウドサービスのXPages on Bluemixを使ってみようという試みです。
オンプレミスのDominoでなくても、SoftLayer等のクラウド上にあるDominoでもいいのですが、要はBluemixのサービス外からデータを参照させるという方法になり、「Hybrid XPages Application on bluemix」なんてカッコいい呼び方もされるみたいです。
Hybrid XPagesアプリケーションを動作させるにはオンプレミスの Domino構成に少し手を加える必要があります。
“XPages No SQL Database”サービスを利用したことがあればイメージがつき易いと思うのですが、”XPages No SQL Database”のユーザー情報等では「/O=bluemix」の組織名が利用されています。
これではXPages on BluemixからオンプレミスのDominoには相互認証がなくアクセス出来ないことが容易に想像できると思います。
そこで、オンプレミスのDominoから信頼されているサーバーIDを新たに作成し、XPagesランタイム・コンテナーにアプリケーションをデプロイするタイミングでサーバーIDファイルも同時にプッシュして提供するという方法をとります。
そうすることでXPagesランタイムがNRPC(Notesポート:1352)を使いセキュアにデータにアクセスすることが出来るようになります。
これでサーバーの登録は完了です。特に変わった設定はなかったかと思いますが、1つ違う点として、この作成したサーバーIDをもとに新たにDominoをインストールするという必要はありません。あくまでBluemixのXpagesランタイムに渡してやるだけで動作するようになります。
※注意1: 新たに追加したサーバーIDが「LocalDomainServers」に含まれていることを確認してください。
※注意2: Bluemix XPagesランタイムからアクセスがあるサーバーのサーバー文書の「セキュリティー」タブ一番下、Trusted Serversに新たに作成したサーバー名もしくはグループ名が入っていることを確認してください。
以上で設定は完了です。
試しにXPagesアプリケーションに以下のようなXPageを作成してみました。
<?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <xp:this.data> <xp:dominoView var="view1" databaseName="App01/ZetaDataBank!!MyControl.nsf" viewName="AllContacts"> </xp:dominoView> </xp:this.data> <xp:viewPanel value="#{view1}" id="viewPanel1"> <xp:this.facets> <xp:pager partialRefresh="true" layout="Previous Group Next" xp:key="headerPager" id="pager1"> </xp:pager> </xp:this.facets> <xp:viewColumn columnName="Id" id="viewColumn1"> <xp:this.facets> <xp:viewColumnHeader value="Id" xp:key="header" id="viewColumnHeader1"> </xp:viewColumnHeader> </xp:this.facets> </xp:viewColumn> <xp:viewColumn columnName="FirstName" id="viewColumn2"> <xp:this.facets> <xp:viewColumnHeader value="First name" xp:key="header" id="viewColumnHeader2"> </xp:viewColumnHeader> </xp:this.facets> </xp:viewColumn> <xp:viewColumn columnName="LastName" id="viewColumn3"> <xp:this.facets> <xp:viewColumnHeader value="Last name" xp:key="header" id="viewColumnHeader3"> </xp:viewColumnHeader> </xp:this.facets> </xp:viewColumn> <xp:viewColumn columnName="EMail" id="viewColumn4"> <xp:this.facets> <xp:viewColumnHeader value="E mail" xp:key="header" id="viewColumnHeader4"> </xp:viewColumnHeader> </xp:this.facets> </xp:viewColumn> <xp:viewColumn columnName="City" id="viewColumn5"> <xp:this.facets> <xp:viewColumnHeader value="City" xp:key="header" id="viewColumnHeader5"> </xp:viewColumnHeader> </xp:this.facets> </xp:viewColumn> <xp:viewColumn columnName="State" id="viewColumn6"> <xp:this.facets> <xp:viewColumnHeader value="State" xp:key="header" id="viewColumnHeader6"> </xp:viewColumnHeader> </xp:this.facets> </xp:viewColumn> <xp:viewColumn columnName="Created" id="viewColumn7"> <xp:this.facets> <xp:viewColumnHeader value="Created" xp:key="header" id="viewColumnHeader7"> </xp:viewColumnHeader> </xp:this.facets> </xp:viewColumn> <xp:viewColumn columnName="$10" id="viewColumn8"> <xp:this.facets> <xp:viewColumnHeader value="Name" xp:key="header" id="viewColumnHeader8"> </xp:viewColumnHeader> </xp:this.facets> </xp:viewColumn> </xp:viewPanel> </xp:view>
このサンプルXpageではオンプレミスにあるNSFファイルのビューを指定しています。
あとはDomino DesignerからBluemixへデプロイしてやります。
Bluemixサービスが自動で再起動され、さきほど作成したXPAGEにアクセスしオンプレミスのデータが問題なく取れていれば成功です。