mobylet.xmlについて

mobyletの基本的な設定は、全て「mobylet.xml」という設定ファイルに記述します。

mobylet.xmlを配置する

mobylet.xmlを配置する

「mobylet.xml」は、Webアプリケーション単位に用意されなかった場合
mobylet-core-xxx.jarに含まれているmobylet.xmlを読み込むことで初期化を行いますが
Webアプリケーション単位にファイルが用意されている場合は、そちらを優先して読み込みます。

「mobylet.xml」を配置するディレクトリはデフォルトでクラスパス上となりますが
MobyletFilterのInitParameterに指定することで、任意の位置の「mobylet.xml」を使用することも可能です。
以下、「mobylet.xml」を読み込むディレクトリを設定した例です。
(※クラスパスからの相対パス指定も可能)

<filter>
    <filter-name>mobyletfilter</filter-name>
    <filter-class>org.mobylet.core.http.MobyletFilter</filter-class>
    <init-param>
        <param-name>mobylet.config.dir</param-name>
        <param-value>/var/mobylet/config/</param-value>
    </init-param>
</filter>

初期化クラスの設定

mobylet内部コンポーネント初期化

mobyletは内部にSingleton-Scope/Request-Scopeの簡易的なコンテナを持っています。
このコンテナに登録するコンポーネントを初期化する際、
MobyletInitializerインターフェースを実装したクラスを初期化時に走らせることで
各種コンポーネントを初期化しています。

以下のように<inilializers>タグ内に<chain>タグで、複数の初期化クラスを指定できます。
<chain>タグは上から順番に読み込み、初期化処理を行います。
デフォルトで指定されている「org.mobylet.core.initializer.impl.MobyletInitializerImpl」クラスは
mobyletフレームワーク内部を初期化するためのクラスですので、このクラスの指定は削除しないでください。

例えばmobylet-mailを利用するためにはmobylet-mailに対しての初期化を行う必要があるため
以下のように初期化クラスを指定することになります。

<initializers>
    <chain>org.mobylet.core.initializer.impl.MobyletInitializerImpl</chain>
    <chain>org.mobylet.mail.initializer.MobyletMailInitializer</chain>
</initializers>

mobyletフレームワークを拡張する際や、コンポーネントを変更したい場合は
初期化クラスを別途実装し、chainに指定することで、フレームワークの内部の動作を変更することが可能です。

絵文字の設定

mobylet内部コンポーネント初期化

mobyletは、絵文字変換設定ファイルの内容に従い、キャリア間の絵文字変換処理を行なっています。
この絵文字変換設定ファイルの配置場所を<emoji>タグ内の<basedir>タグで設定できますが、
絵文字変換設定ファイルはmobylet-core.jarに同梱されており、通常この値を変更する必要はありません。
また、<basedir>タグを指定しない場合、デフォルトで「emoji/」が適用されます。

<imagePath>を設定すると、キャリア判定でOtherキャリアと判定された場合でも、
絵文字を画像として表示することが可能となります。
詳細は機能リファレンスの絵文字を画像で表示するをご参照ください。

<emoji>
    <basedir>emoji/</basedir>
    <imagePath>mobylet/ei</imagePath>
</emoji>

予約変数を利用して指定することもできます。

端末情報の設定

バリューエンジン社の端末情報プロファイル設定場所を設定する

mobyletは、バリューエンジン社が無償提供している端末情報をデフォルトでサポートしています。
端末情報ファイルを設定する場所を<device>タグ内の<basedir>タグで指定することが可能です。
通常この値を変更する必要はありません。また、<basedir>タグを指定しない場合、デフォルトで「device/」が適用されます。

<device>
    <basedir>device/</basedir>
</device>

予約変数を利用して指定することもできます。

ゲートウェイIPアドレスリストの設定

キャリアゲートウェイIPアドレス

携帯端末から携帯ブラウザを利用してインターネットにアクセスする場合、 端末のIPアドレスは各キャリアのゲートウェイIPアドレスが割り当てられる。
アクセス元がキャリアのIPアドレスかどうかを確認することで、その端末が実機である確証を得ることが可能で、
かつ、UID/GUIDの偽装を防ぐことが出来る。

IPアドレスリストの配置ディレクトリ

IPアドレスリストを配置するディレクトリは以下ように設定することが出来る。

<ip>
    <basedir>ip/</basedir>
</ip>

ゲートウェイIPアドレスリスト

ゲートウェイIPアドレスリストはデフォルトでmobylet-core-xxx.jarの中の「ip」ディレクトリに格納されている。
ゲートウェイIPアドレスリストは各アプリ毎にファイルで用意することで、上書きすることが可能。
予め用意されているゲートウェイIPアドレスリストは以下の通り

  1. DOCOMO.txt : NTTドコモ端末の携帯ブラウザからアクセスする場合のゲートウェイIPアドレスリスト
  2. AU.txt : au端末の携帯ブラウザからアクセスする場合のゲートウェイIPアドレスリスト
  3. SOFTBANK.txt : ソフトバンク端末の携帯ブラウザからアクセスする場合のゲートウェイIPアドレスリスト
  4. EXTENSION.txt : キャリアを問わず特別に許可する拡張用IPアドレスリスト

除外キャリアの設定

mobyletで処理対象外とするキャリアを設定する

mobyletは、内部でリクエストやレスポンスなど、Servlet仕様の主要なクラスをラップして様々な処理を行なっています。
<through>タグ内の<carrier>タグでキャリアを指定することで、対象キャリアの端末からのアクセスの場合に、
リクエストへの文字コード設定を除く、mobyletのほぼ全ての処理をスキップさせることが可能です。

以下の設定例では、Docomoからのアクセスの場合にmobyletの処理をスキップします。
<carrier>タグには「DOCOMO」「AU」「SOFTBANK」「OTHER」が設定可能です。

<through>
    <carrier>DOCOMO</carrier>
</through>

デフォルト値の設定

デフォルトのコンテンツタイプを設定する

<default>タグ内の<contentType>タグを設定することで、アプリケーション全体のContent-Typeを設定することが可能です。
「HTML」「XHTML」のいずれかを設定可能で、<contentType>タグを設定しない場合、デフォルトはHTMLとなります。

<default>
    <contentType>XHTML</contentType>
</default>

プロキシの設定

プロキシサーバーを設定する

画像リサイズ処理での対象画像の取得など、mobylet内部で通信処理を行なう場合があります。
ローカルでの開発時など、環境によってプロキシサーバーを
経由しなければ通信できないようなケースでは、<proxy>タグを設定します。

<proxy>タグ内の<host>タグにはプロキシサーバーのホスト名、<port>タグにはポート番号を設定します。

<proxy>
    <host>proxy.mobylet.org</host>
    <port>8080</port>
</proxy>

JSESSIONIDの使用設定

JSESSIONIDの利用制限をする

mobyletではデフォルトでJSESSIONIDを利用する設定になっており、URLクエリとして出現します。
場合によって、JSESSIONIDを使いたくない場合や、Cookieを利用したい場合には
予めmobylet.xmlに設定しておくことで、
mobyletフレームワーク全体でJSESSIONIDを使用しない動作にすることも出来ます

<jsession>NONE</jsession>

利用可能な設定は以下の通りです。

  1. DEFAULT : デフォルト設定、URLクエリとCookieにJSESSIONID情報を付与する
  2. NONE : URLクエリにもCookieにもJSESSIONIDを付与しない
  3. USE_QUERY : URLクエリにJSESSIONID情報を付与し、Cookieには付与しない
  4. USE_COOKIE : CookieにJSESSIONID情報を付与し、URLクエリには付与しない

GatewayのIPアドレスとの整合性チェック

セキュリティレベルを上げる

携帯サイトにおいてはUID/GUIDといった、ユーザを特定するIDを利用することが可能だが、
これらはPC等から偽装するようなことが可能である。
この偽装による個人情報の流出を防ぐため、各キャリアのゲートウェイIPアドレスからのアクセスかどうか
チェックすることでIDの偽装を許さないアプリを作成することが可能になる。

<secureGateway>SECURE_ID</secureGateway>

利用可能な設定は以下の通りです。

  1. NONE : デフォルト設定。ゲートウェイIPとの整合チェックを行わない
  2. SECURE_ID : Mobylet#getUid()/Mobylet#getGuid()呼び出し時にIP不整合であればnullを返却
  3. SECURE_CARRIER : Mobylet#getCarrier()呼び出し時にIP不整合であればCarrier.OTHERを返却
  4. SECURE_ALL : SECURE_IDとSECURE_CARRIERの両方を適用

ゲートウェイIPアドレスリスト

ゲートウェイIPアドレスリストはデフォルトでmobylet-core-xxx.jarの中の「ip」ディレクトリに格納されている。
ゲートウェイIPアドレスリストは各アプリ毎にファイルで用意することで、上書きすることが可能。
予め用意されているゲートウェイIPアドレスリストは以下の通り

  1. DOCOMO.txt : NTTドコモ端末の携帯ブラウザからアクセスする場合のゲートウェイIPアドレスリスト
  2. AU.txt : au端末の携帯ブラウザからアクセスする場合のゲートウェイIPアドレスリスト
  3. SOFTBANK.txt : ソフトバンク端末の携帯ブラウザからアクセスする場合のゲートウェイIPアドレスリスト
  4. EXTENSION.txt : キャリアを問わず特別に許可する拡張用IPアドレスリスト

Mobylet実装クラスの変更

Mobylet実装クラスを独自拡張する

mobyletではデフォルトでMobylet実装クラスにMobyletImplクラスを使用しています。
このクラスを独自拡張したい場合、mobylet.xmlに拡張クラス名を記載することで拡張出来ます。
※mobylet-s2extensionライブラリを利用している場合はdiconで変更することも出来ます。

<implements>
    <mobylet-class>com.hoge.mobylet.CustomMobyletImpl</mobylet-class>
</implements>

CSS Expand機能の利用

CSS Expand機能(外出しCSS展開機能)を利用する

ContentTypeをXHTMLで利用する場合のみ、外出しCSSをインライン化するCSS Expand機能が利用可能です。
CSS Expand機能は通常よりも少し負荷が掛かるため、mobylet.xmlの設定で機能をONにする必要があります。

<cssExpand>
    <execute>true<execute>
    <removedClass>true<removedClass>
</cssExpand>

executeタグではCSS Expand機能のON/OFFをtrue/falseで設定可能です。
removedClassタグは省略可能ですが、この設定をtrueにすることで、 CSS Expand機能が実行された場合にHTML文書中に存在する、全てのclass属性を除去することが可能です。

ページのTOPへ戻る