サーバー環境について

プロジェクトサーバー

JavaEE7 サーバー(WildFly)

J2EEサーバー(旧資料)

WebSocketサーバー(旧資料)

目次

  1. はじめに
  2. WebSocketサーバーとは?
  3. WebSocketサーバーの構築
    1. Jettyのインストール
  4. WebSocketサーバー起動時の実行時パラメータ
    1. Jettyの実行時設定
  5. WebSocket(SSL付き)サーバー起動時の実行時パラメータ
  6. WARファイルビルド時に設定する環境変数
  7. WARファイルビルド時に必要なJBOSS提供jarファイル
  8. 非サポートブラウザ使用エラーメッセージ指定
  9. 送信データでの指定モデル・現象型の取得禁止指定


はじめに

このドキュメントは、WebSocketサーバーの構築ガイドです。
構築例を以下で解説します。


WebSocketサーバーとは?

WebSocketサーバーは、ClientのWebブラウザ上のJavaScriptとWebSocketサーバー間のデータ通信をWebSocketの規格に従って行うサーバーです。 WebSocketサーバーはJ2EEサーバーにデータのリクエストをPexaClientレベルで行い、データを取得し、その取得データをWebブラウザに送信します。 J2eeサーバー上のPexaのセッション情報をWebSocket上のJSONフォーマットに変換してWebサーバーとの中継を行っています。
PexaWorksで作成したWARファイルをDeployして実行します。
WARファイルにはWebサーバー上に表示するHTMLファイルのTemplateと、中継用のサーブレット・Pexaライブラリで構成されています。
基本的に、PexaWorksにおいて、HTMLテンプレートファイル作成、WARファイル作成を行います。


WebSocketサーバーの構築

WebSocketアプリケーションを実行するミドルウェアであるアプリケーションサーバーは、以下のように物があります。

  • Jetty
  • WildFly(Jboss8)将来?
現状では、PEXAが提供する実行エンジンに対応しているのはJettyとなっています。

以下で、アプリケーションサーバー毎にインストールについて説明します。

Jettyのインストール

Jettyはフリーソースのアプリケーションサーバーです。ソースコードが公開されており、ライセンスApache License 2.0 and Eclipse Public License 1.0.で提供されています。
Jettyは以下のサイトからダウンロードすることが出来ます。

http://www.eclipse.org/jetty/

ダウンロードしてきたアーカイブファイルを、任意のディレクトリに展開すればインストール自体は完了です。
特にインストーラーなどを使用する必要はありません。

現状での動作確認は、Jetty9.2.0,9.2.1,9.2.3,9.2.10,9.2.12となります。それ以前の9.0.5等はAPIが変更により使用できません。
Jettyを実行する場合は、JDK1.7が必要となります。
Webポート番号は8080ですが、これを変更する時は、start.d/http.iniのjetty.port=8080を修正します。Jetty9.2.10以降ではJettyホームのhttp.iniになります。

ファイルリストの非表示設定はetc/webdefault.xmlの下記セッションをfalseに設定(Defaultはture)
<param-name>dirAllowed</param-name>
<param-value>false</param-value>



WebSocketサーバー起動時の実行時パラメータ

WebSocketサーバーを動かす際には、いくつか実行時パラメータを与えます。
これは、JavaVMに対する実行時パラメータとして以下のような形式で指定することになります。

-D{プロパティ名}={値}
アプリケーションサーバーのJavaVMに対する実行時パラメータの指定方法は、それぞれのアプリケーションサーバー毎に方法が異なります。
実行前に環境変数JAVA_OPTSに-Dxxx=yyyの形式で与えることが出来ます。

例:Jettyの起動スクリプト例
  set JAVA_OPTS=-Xmx512M 
  set JAVA_OPTS=%JAVA_OPTS% -DENCODING=MS932
  set JAVA_OPTS=%JAVA_OPTS% -Dapserver=jnp://localhost:1099
  set JAVA_OPTS=%JAVA_OPTS% -Dicf="org.jnp.interfaces.NamingContextFactory"
  set JAVA_OPTS=%JAVA_OPTS% -Djava.io.tmpdir=/var/web/work
  set JAVA_HOME=C:\Java\jdk1.7.0_21
  set JETTY_HOME=C:\jetty\9.2.3
  cd %JETTY_HOME%

  %JAVA_HOME%\bin\java %JAVA_OPTS% -jar start.jar

以下で設定すべき実行時パラメータの内容を記述します。

Jettyの実行時設定

JettyではJ2EEサーバーとの接続の設定、応答タイムアウト・デバッグ用のダンプ設定を指定することができます。

プロパティ名 意味
ENCODING Pexaで生成されたTemplateの文字コード
Webに送信するHTMLはUTF-8ですが、
プロジェクトでは別のコードで作成されることが
ありますので指定が必要です。
デフォルトはUTF-8
MS932
apserver J2EEサーバーのURL
当該プロパティがない時はクラスパス上のjndi.propertiesを採用
デフォルトはjnp://localhost:1099
jnp://localhost:1099
icf INITAIL CONTEXT FACTORY
デフォルトはorg.jnp.interfaces.NamingContextFactory
org.jnp.interfaces.NamingContextFactory
RecvBufSize WebSocketサーバ受信用メッセージバッファ容量指定。単位はKバイト
Upload使用時は1280にすること
デフォルトは64
1280
ServletTimeout WebSocketサーバセッションタイムアウト指定。単位はミリ秒
デフォルトは120000
3600000
NOCACHE HTMLテンプレートイメージのメモリキャッシュ(on/off)
デフォルトはoff
on
FNAME_DUMP HTMLテンプレートファイル名コンソール表示(on/off)
デフォルトはoff
on
UA_DUMP クライアント側ブラウザUserAgent情報コンソール表示(on/off)
デフォルトはoff
on
CONN_DUMP クライアント側ブラウザからのWebSocket接続情報コンソール表示(on/off)
デフォルトはoff
on
DATA_DUMP クライアント・WebSocketサーバ間のJSONデータコンソール表示(on/off)
デフォルトはoff
on
AutoLoginID クライアントのログイン画面表示時URLパラメータのログイン名を有効化(on/off)
デフォルトはoff
on
FORCEWSS ロードバランサー等中継機器でSSLを使用している時のみに使用、
他の時は絶対使用しないでください(on/off)
デフォルトはoff
on
FORCEWSSPORT FORCEWSS指定時のPORTを10進数の数字で指定
デフォルトは443
9443
webHost 参考リンクのホスト名(IPアドレス)
デフォルトはapserverのホスト名
192.168.100.xxx
webPort 参考リンクのポート番号
デフォルトは8080
18080
PROP クライアントプロパティファイル名の指定
デフォルトはPexa標準のプロパティ
下線の部分はプロジェクトごとに変更
クライアントメッセージ変換が必要な時は必須
env/client/res/pwtest_rich_client_plugins
PHSID 現象定数名メッセージ定義ID
デフォルトはなし
CM_PWPHST
SERRID サービスエラーメッセージ定義ID
デフォルトはなし
CM_PWSERR
AIEERID アサイン・インポートエラーメッセージ定義ID
デフォルトはなし
CM_PWSERR
java.io.tmpdir warファイルから展開されたを格納するディレクトリ指定
OSによってデフォルトtempは自動的に削除される可能性があるので注意が必要です。
デフォルトはOSによる
Tempディレクトリは手動セ生成する必要があります
/var/web/work
C://jetty/9.2.12/temp
WS_SERVERNAME WebSocketのサーバー名を固定で設定する。
デフォルトはHTTP Request情報
foo.co.jp
192.168.100.xxx
WS_PORT WebSocketのサーバーポート番号を固定で設定する。
デフォルトはHTTP Request情報
8080


WebSocket(SSL付き)サーバー起動時の実行時パラメータ

WebSocket(SSL付き)サーバーを動かす際には、いくつか実行時パラメータを与えます。
これは、JavaVMに対する実行時パラメータとして以下のような形式で指定することになります。
SSL接続に必要な設定を読み込むようにします。

  etc/jetty.xml etc/jetty-ssl.xml etc/jetty-https.xml
例:Jetty(SSL付き)の起動スクリプト例
  set JAVA_OPTS=-Xmx512M 
  set JAVA_OPTS=%JAVA_OPTS% -DENCODING=MS932
  set JAVA_OPTS=%JAVA_OPTS% -Dapserver=jnp://localhost:1099
  set JAVA_OPTS=%JAVA_OPTS% -Dicf="org.jnp.interfaces.NamingContextFactory"
  set JAVA_HOME=C:\Java\jdk1.7.0_21
  set JETTY_HOME=C:\jetty\9.2.3
  cd %JETTY_HOME%

  %JAVA_HOME%\bin\java %JAVA_OPTS% -jar start.jar  etc/jetty.xml etc/jetty-ssl.xml etc/jetty-https.xml

keystoneの取得

opessl等で、サーバ秘密鍵・サーバ証明書・keystoneを作成する。
Java のkeytoolを使用し,作成したPKCS12フォーマットをkeystoreに変換する。
作成した1keystoneを${Jetty_Home}/etcに格納する。

  1. openssl genrsa -aes256 -out server.key 2048
  2. openssl req -new -x509 -days 365 -key server.key -out server.crt
  3. openssl pkcs12 -inkey server.key -in server.crt -export -out jetty.pkcs12
  4. \jdk1.7.0\bin\keytool -importkeystore -srckeystore jetty.pkcs12 -srcstoretype PKCS12 -destkeystore keystore


jetty-ssl.xmlの修正(destnation passwd[jetty-ssl],source password[pexaworks]

<Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="jetty-ssl"/></Set>
<Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="pexaworks"/></Set>
<Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/keystore"/></Set>
<Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="jetty-ssl"/></Set>


jetty-https.xmlの修正(ポート番号を443から9443に修正)

<Set name="port"><Property name="https.port" default="9443" /></Set>



WARファイルビルド時に設定する環境変数

以下に必須の環境変数を列挙します。

[環境変数名:PRJHOME]
必須の環境変数です。
ビルドを実行するコンピュータ上でのプロジェクトファイルセットのトップディレクトリを指す絶対パスを指定してください。

例:pwtestプロジェクトをローカル作業環境でビルドする場合

  • set PRJHOME=C:\wsp\pwork2\pwtest

[環境変数名:JETTY_DEST_WAR]
必須の環境変数です。
使用するWebSocketサーバーのWarファイル格納位置を指定します。

  • set JETTY_DEST_WAR=C:\jetty\9.2.3\webapps


WARファイルビルド時に必要なJBOSS提供jarファイル

warファイルを作成する前に、warファイルに含める必要があるJBOSS提供Client用jarファイルを以下のディレクトリにコピーしておく必要があります。

/etc/war/jetty-html5/WEB-INF/lib

JBOSS4.2.3の場合
  • ${JBOSS_HOME}/client/jbossall-client.jar

JBOSS6.1.0の場合
  • ${JBOSS_HOME}/client/concurrent.jar
  • ${JBOSS_HOME}/client/hornetq-core-client.jar
  • ${JBOSS_HOME}/client/hornetq-jms-client.jar
  • ${JBOSS_HOME}/client/jboss-client.jar
  • ${JBOSS_HOME}/client/jboss-common-core.jar
  • ${JBOSS_HOME}/client/jboss-ejb-api_3.1_spec.jar
  • ${JBOSS_HOME}/client/jboss-integration.jar
  • ${JBOSS_HOME}/client/jboss-logging.jar
  • ${JBOSS_HOME}/client/jboss-jms-api_1.1_spec.jar
  • ${JBOSS_HOME}/client/jboss-remoting.jar
  • ${JBOSS_HOME}/client/jboss-security-spi.jar
  • ${JBOSS_HOME}/client/jboss-serialization.jar
  • ${JBOSS_HOME}/client/jboss-transaction-api_1.1_spec.jar
  • ${JBOSS_HOME}/client/jbossall-client.jar
  • ${JBOSS_HOME}/client/jbosssx-client.jar
  • ${JBOSS_HOME}/client/jnp-client.jar
  • ${JBOSS_HOME}/client/netty.jar

JMS関連はToDoで必要となります。



非サポートブラウザ使用エラーメッセージ指定

Jettyのサーブレットにおいて、サポート対象外のブラウザからアクセスされたときに、
下記エラーメッセージを表示するようにしています。
“your browser is not support.\n support browser is firefox 25-,Internet Explorer10-,safari 6- Chrome 35-\nyour user agent:”

独自のメッセージを指定したい場合には、下記ファイルを新規に作成して、メッセージ内容を記述してください。
src/htmlftl/jettyErrorMessageBNS.ftlに下記のようなHTMLのBody内の構文を記述します。

“<b>使用しているブラウザはサポート対象外です。</b><br/>
現在の使用ブラウザは:“

但し、メッセージの最後に受信したUserAgent情報を付加します。



送信データでの指定モデル・現象型の取得禁止指定

JettyからWebブラウザにWebSocketでJSONでデータを送信する時にーブレットにおいて、サービスによって、
取得されたサービスセッション内のUpdatableインスタンスから実際にWebブラウザに送信するデータから
指定されたモデル名・現象型名のデータを取得せず、送信データに入れないようにすることが出来ます。
表示以外の目的で作成されたProduce項目などに使用するようにしてください。
Webブラウザで入力されたデータには、この機能は反映されません。

以下のファイルに現象型名またはモデル名:現象型名に記述します。

  • src/htmlftl/jettycutptypes.entry
例:(先頭にタブやスペースを入れないでください))
  • SKU名カナ
  • OrderDetail:Remark
上記の例では、“SKU名カナ”という現象型が、すべてのモデルインスタンスからデータ取得されません。
また、“OrderDetail”モデル内の“Remark”現象型のモデルインスタンスからデータ取得されません。

すでに、以下の2項目送信データの抑制を行っています。
  1. Operator:OperatorPassword
  2. WF_RouteMeta
ファイルのエンコードはwindows-31Jで作成します。


更新情報

  • 最終更新者 : $Author: tann $
  • 最終更新日時 : $Date:: 2014-05-14 16:08:00 #$
  • バージョン : $Revision: 6437 $



Copyright © 2006, Atrris Corporation