intra-mart Accel Platform スクリプト開発モデル プログラミングガイド 第15版 2018-08-01

ルーティング

概要

../../../_images/jssp_simple_routing.png
ルーティングとはURLに対して処理の登録、振り分けを行う機能です。
処理の登録が行われていないリクエストに対しては、アプリケーションサーバへのリクエスト処理が続行します。
スクリプト開発モデル では「スクリプト開発モデル用ルーティングテーブル」を利用してURLに対して スクリプト開発モデル のプログラムの割り当てを行います。

スクリプト開発モデル用ルーティングテーブル

設定ファイルの例を用いてスクリプト開発モデル用ルーティングテーブルが行う役割について説明します。

URLへのスクリプト開発モデルのプログラムの割り当て

  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/foo を スクリプト開発モデル のパス business/foo に割り当てるルーティングテーブルを作成します。

    • プレゼンテーション・ページ

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/foo.html にファイルを作成します。
      ファイルを以下の内容にします。
      This is foo.
      
    • ファンクション・コンテナ

      処理が存在しないため、ファンクション・コンテナは作成しません。
    • ルーティングテーブル

      %CONTEXT_PATH%/WEB-INF/conf/routing-jssp-config/routing-programming-guide-foo.xml にファイルを作成します。
      ファイルを以下の内容にします。
      <?xml version="1.0" encoding="UTF-8"?>
      <routing-jssp-config
          xmlns="http://www.intra-mart.jp/router/routing-jssp-config"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd">
      
          <authz-default mapper="welcome-all" />
      
          <file-mapping path="/app/foo" page="business/foo" />
      
      </routing-jssp-config>
      
      file-mapping要素でURLと スクリプト開発モデル のプログラムのマッピングを行います。
      path属性にURLのパス /app/foo 、page属性に スクリプト開発モデル のパス business/foo を指定します。
  • 設定ファイルを反映させるために、アプリケーションサーバを再起動します。

  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/foo へアクセスします

    ページに以下が表示されます
    This is foo.
    

    コラム

    この項目では、下記のポイントを確認しました。

    • URLへの スクリプト開発モデル のプログラムの割り当てはfile-mapping要素を用いて行う。
    • file-mapping要素のpath属性にURLのパス、page属性に スクリプト開発モデル のパスを記述する。

PathVariables

../../../_images/jssp_path_variables_routing.png
  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/bar/{id} を スクリプト開発モデル のパス business/bar に割り当てるルーティングテーブルを作成します。

    • プレゼンテーション・ページ

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/bar.html にファイルを作成します。
      ファイルを以下の内容にします。
      "id" is <imart type="string" value=id />.
      
    • ファンクション・コンテナ

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/bar.js にファイルを作成します。
      ファイルを以下の内容にします。
      var id;
      
      function init(request) {
          id = request.id;
      }
      
    • ルーティングテーブル

      %CONTEXT_PATH%/WEB-INF/conf/routing-jssp-config/routing-programming-guide-bar.xml にファイルを作成します。
      ファイルを以下の内容にします。
      <?xml version="1.0" encoding="UTF-8"?>
      <routing-jssp-config
          xmlns="http://www.intra-mart.jp/router/routing-jssp-config" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd">
      
          <authz-default mapper="welcome-all" />
      
          <file-mapping path="/app/bar/{id}" page="business/bar" />
      
      </routing-jssp-config>
      
      path属性の中に{[識別子]}と記述することでURLの途中の値がパラメータとして引き渡されます。
  • 設定ファイルを反映させるために、アプリケーションサーバを再起動します。

  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/bar/aoyagi へアクセスします

    ページに以下が表示されます
    "id" is aoyagi.
    
  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/bar/ueda へアクセスします

    ページに以下が表示されます
    "id" is ueda.
    

    コラム

    この項目では、下記のポイントを確認しました。

    • file-mapping要素のpath属性に{[識別子]}と記述することでURLの途中の値がリクエスト・パラメータとして扱える。

認可

../../../_images/jssp_authz_routing.png
<?xml version="1.0" encoding="UTF-8"?>
<routing-jssp-config
    xmlns="http://www.intra-mart.jp/router/routing-jssp-config"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd">

    <authz-default mapper="welcome-all" />

    <file-mapping path="/app/foo" page="business/foo" />

    <file-mapping path="/app/baz" page="business/baz">
        <authz uri="service://app/baz" action="execute" />
    </file-mapping>

</routing-jssp-config>
authz-default要素にはwelcome-allリソースマッパーが指定されています。この認可リソースマッパーは開発中に使用するものであり、アプリケーションリリース時には適したuriとactionまたはmapperを指定することを強く推奨します。
/app/foo へのアクセスの場合、file-mapping要素内にauthz要素が存在しないため、デフォルト認可設定であるwelcome-allマッパーが認可設定として有効になります。
/app/baz へのアクセスの場合、file-mapping要素内にauthz要素が存在するため、uriがservice://app/baz、actionがexecuteが認可設定として有効になります。
authz-default要素、authz要素共に省略可能ですが、file-mappingに対して有効な認可設定が指定されていない場合は設定エラーとなります。
メニュー項目はアクセス先のURLに対して権限がある物のみ表示されます。
詳細については 認可 を参照してください

コラム

この項目では、下記のポイントを確認しました。

  • authz-default要素、authz要素を用いて、認可設定を行える。
  • URLに対して、認可設定が行われていない場合は設定エラーとなる。

クライアントタイプ

../../../_images/jssp_client_type_routing.png
  • http://<HOST>:<PORT>/<CONTEXT_PATH>/app/qux スマートフォンからアクセスされた場合に、 スクリプト開発モデル のパス business/qux_sp に割り当てその他の端末でアクセスされた場合に business/qux に割り当てるルーティングテーブルを作成します。

    • スマートフォン用プレゼンテーション・ページ

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/qux_sp.html にファイルを作成します。
      ファイルを以下の内容にします。
      Smartphone.
      
    • スマートフォン以外からアクセス時のプレゼンテーション・ページの作成

      %CONTEXT_PATH%/WEB-INF/jssp/src/business/qux.html にファイルを作成します。
      ファイルを以下の内容にします。
      Not smartphone.
      
    • ファンクション・コンテナ

    処理が存在しないため、ファンクション・コンテナは作成しません。
    • ルーティングテーブル

      %CONTEXT_PATH%/WEB-INF/conf/routing-jssp-config/routing-programming-guide-qux.xml にファイルを作成します。
      ファイルを以下の内容にします。
      <?xml version="1.0" encoding="UTF-8"?>
      <routing-jssp-config
          xmlns="http://www.intra-mart.jp/router/routing-jssp-config" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd">
      
          <authz-default mapper="welcome-all" />
      
          <file-mapping path="/app/qux" page="business/qux" />
      
          <file-mapping path="/app/qux" page="business/qux_sp" client-type="sp" />
      
      </routing-jssp-config>
      
      file-mapping要素でclient-type属性を指定することで、指定のクライアントタイプでのマッピング設定が行えます。
  • 設定ファイルを反映させるために、アプリケーションサーバを再起動します。

  • PCのブラウザで http://<HOST>:<PORT>/<CONTEXT_PATH>/app/qux へアクセスします

    ページに以下が表示されます
    Not smartphone.
    
  • スマートフォンのブラウザで http://<HOST>:<PORT>/<CONTEXT_PATH>/app/qux へアクセスします

    ページに以下が表示されます
    Smartphone.
    
    • サーバへアクセスできるスマートフォン端末がない場合は http://<HOST>:<PORT>/<CONTEXT_PATH>/menu/sitemap アクセス後の右上のユーティリティメニューの「スマートフォン版へ」を選択後に、URLにアクセスしてください。
      ../../../_images/utility_menu.png

    コラム

    この項目では、下記のポイントを確認しました。

    • file-mapping要素にclient-type属性を指定することで、特定のクライアントタイプでの スクリプト開発モデル のプログラムを指定することができる。