AppletからWeb Startへの移行

Oracle社のアナウンスによってJava Pluginの使用がJDK9より非推奨となりました。

https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free

また、多くのWebブラウザでJava Pluginが利用できなくなってきています。

このため、将来的にWebブラウザ上でJava Pluginが利用できなくなる可能性があります。

Oracle社ではJava Appletからの移行を推奨しており、移行先の一つとしてJava Web Startがあります。

このドキュメントでは、Nexaweb Java Applet から Java Web Startへの移行についてのガイドと注意点を記載しています。


まず、Oracle社からJava Appletから Java Web Start(以下JWS) アプリケーションへの移行を行うためのドキュメントがありますので、以下の「12.5.3.1 JavaアプレットからJava Web Startアプリケーションへの書直し」と「12.5.3.2 特別な考慮事項」を参照してください。

https://docs.oracle.com/javase/jp/8/docs/technotes/guides/deploy/applet_dev_guide.html#CIADJHDC

上記のJWSへの移行ガイドの中に「必要とされる主な作業は、使用しているappletクラスをアプリケーションのmainクラスに変換することです。」とありますが、Nexaweb Platformを使用しているアプリケーションでは、実行環境が製品側から提供されているためユーザー側で実行環境の変更ができません。

このため、Nexaweb Platform が提供する mainクラスから起動可能なStandalone Client を移行先の実行環境として使用します。

Standalone ClientはNexaweb Studioの「Run」メニュー等からアプリケーションを起動した際に用いられている Java Applicationベースの実行環境で、appletクラスを用いておらず、mainクラスから起動する実行環境です。

Standalone Clientについて

https://nexaweb.jira.com/wiki/pages/viewpage.action?pageId=24969523


また、Standalone Clientを用いた場合にも「12.5.3.2 特別な考慮事項」に関する内容は考慮が必要となります。

製品内部で、これらの考慮事項に該当し、機能制限等が生じている場合は、このページの末尾にある「既知の問題/制約事項」に該当項目が記載されています。


このドキュメントでは、サンプルアプリケーションを使用してApplet(Nexaweb Applet) からNexaweb Stanalone Clientを用いた Java Web Startへの移行方法についてガイドします。


サンプルアプリケーション「JavaUIExplorer」は以下のURLよりSVNを用いてチェックアウトすることができます。

https://svn.nexaweb.com/svn/NXSAMPLES/trunk/samples/java/JavaUIExplorer

移行後のアプリケーションは以下のURLよりSVNを用いてチェックアウトすることができます。

https://svn.nexaweb.com/svn/NXSAMPLES/trunk/samples_45/JWS/JavaUIExplorerWebStart/

サンプルアプリケーションは以下のように実行環境が異なってもNexaweb Applicationとして同じ見た目と同じ機能を提供します。

ブラウザ内でJava Applet として動作するNexaweb Application :


Java Web Start:として動作するNexaweb Application :

Step-by-step ガイド

この項では、Java Web Startを使用して Nexaweb Application をStandalone Client上で稼働させるための手段をガイドします。

Java Web Startアプリケーションを稼働させるためにJNLPファイルを作成します。

Java Web Startによってアプリケーションを開始するにはJNLP(Java Network Launching Protocol)ファイルを使用する必要があります。

JNLPファイルはサーバー上に配置され、ユーザーがブラウザを使用してJNLPファイルのURLにアクセスするとクライアント側のJREがJNLPファイルを検知してJava Web Startアプリケーションを開始します。

Java Web StartはJNLPファイルの記述に従って、必要なファイル群のダウンロードと設定を行います。

このため、Nexaweb ApplicationをJava Web Startで稼働させるためにはJNLPファイルの作成が必要となります。

以下のJNLPファイルはNexaweb Standalone ClinetをJava Web Startで起動させるためのテンプレートです。

Standalone.jnlp
<jnlp spec="1.0+"
      codebase="http://localhost:8080/JavaUIExplorerWebStart/ClientClassLoader"
      href="http://localhost:8080/JavaUIExplorerWebStart/Standalone.jnlp">
   <information> 
      <title>Standalone Client Launcher</title> 
      <vendor>Nexaweb</vendor>
      <description>A application for Nexaweb Standalone Client</description>
      <description kind="short">Nexaweb Standalone Client short Description</description>
     <update check="always" policy="always"/>
   </information> 
   <resources>
      <j2se version="1.3+" href="http://java.sun.com/products/autodl/j2se"/>
      <j2se version="1.3+"/>
      <jar href="http://localhost:8080/JavaUIExplorerWebStart/NexawebStandaloneClient.jar"/>
      <jar href="http://localhost:8080/JavaUIExplorerWebStart/NexawebImages.jar"/>
   </resources>
   <application-desc main-class="com.nexaweb.client.standalone.StandaloneClient">
      <argument>-server</argument><argument>http://localhost:8080</argument>
      <argument>-appcontext</argument><argument>/JavaUIExplorerWebStart</argument>
      <argument>-initialPage</argument><argument>index.xal</argument>
   </application-desc>
   <security>
      <all-permissions/>
   </security>
</jnlp>

JNLPファイルの仕様に関しては、以下のOracle社のドキュメントも併せて参照ください。

http://docs.oracle.com/javase/jp/8/docs/technotes/guides/javaws/developersguide/syntax.html

「/jnlp/application-desc/argument」はアプリケーションの引数を指定します。
Standalone Clientに指定可能な引数については以下の Standalone Clientのドキュメントを参照ください。
https://nexaweb.jira.com/wiki/pages/viewpage.action?pageId=24969523
「-server」「-appcontext」「-initilaPage」引数は必須項目になります。

上記のJNLPファイルを動作させるためには、Standalone Clientを動作させるための事前準備が必要になります。

また、Nexaweb Platform 4.5.63.0025以上のバージョンではStandalone ClientをJava Web Startで起動するために動的にJNLPファイルを作成するための以下のテンプレートが提供されます。
jnlp.jsp
<?xml version="1.0" encoding="UTF-8"?>
<!-- 
This is template jsp file for dynamic jnlp file. 
-->
<%@page contentType="application/x-java-jnlp-file;charset=UTF-8"%>
<%@page import="com.nexaweb.server.jnlp.JnlpUtils"%>
<% 	
	JnlpUtils jnlpUtils = new JnlpUtils(request,response);
	// if you want to use the https protocol, you need to call "jnlpUtils.setHttpsProtocol(true)" here, 
	// the default http protocol comes from your http request.
	// When a https protocol is used, please validate the next comment line.
	// jnlpUtils.setHttpsProtocol(true);
 %>
<!--The jnlp file is dynamically generated in the server, so don't change it.-->
<jnlp spec="1.0+" codebase="<%= jnlpUtils.getBaseUrl() %>"  >
   <information> 
	<title>Standalone Client Launcher</title> 
	<vendor>Nexaweb</vendor>
	<icon kind="splash" href="<%= jnlpUtils.getBaseUrl() %>Nexaweb/images/logoNexaweb.gif" />
	<description>An application for Nexaweb Standalone Client</description>
	<description kind="short">Nexaweb Standalone Client short Description</description>
	<!--<offline-allowed/>  -->
	<update check="always" policy="always"/>
   </information> 
   <resources>
	<j2se version="1.3+" href="http://java.sun.com/products/autodl/j2se"/>
	<j2se version="1.3+"/>
	<!-- Please make sure these jars (NexawebStandaloneClient.jar,NexawebImages.jar) are put to your project WebContent directory and signed, don't change it  -->
	<jar href="<%= jnlpUtils.getNexawebStandaloneClientJar() %>"/>
	<jar href="<%= jnlpUtils.getNexawebImagesJar()  %>"/>
	<%= jnlpUtils.getPreLoadJars()  %>
   </resources>
   <!-- Please don't change it, the main class is "com.nexaweb.client.standalone.StandaloneClient" -->
   <application-desc main-class="<%= jnlpUtils.getMainClass()%>">
	<!-- Read start params from nexaweb-client.xml -->
	<%= jnlpUtils.getParams() %>
	<!--Read the cookie from the browser and set it to StandaloneClient as a argument, if cookie is empty, getCookie will return string empty.-->
	<%= jnlpUtils.getCookie() %>
	<!-- You can add your attributes here, like <argument>-initialPage</argument><argument>java-index.xal</argument>,-->
	<!-- Just kind reminder,the'use-http-request-header-for-session-id' is not changed in here, it doesn't work even if  you set this value like  <argument>-use-http-request-header-for-session-id</argument><argument>false</argument>  -->
   </application-desc>
   <security>
      <all-permissions/>
   </security>
</jnlp> 

上記のJNLPテンプレートファイルはJSPによって拡張されており、以下の機能が利用できます。

  1. ブラウザセッションのCookieを継承
  2. nexaweb-client.xml ファイルのコンフィグレーションの自動設定(一部除く)
  3. JARファイルの事前ロード設定を使用したダウンロードJARファイルの設定

Nexaweb Platform 4.5.62から以下の機能が提供されています。

a.)   “JnlpServlet”と呼ばれるServletがNexaweb Platformに追加されました。

Servletプログラムと、Servletを認識させるために初期に配置されるweb.xmlにURLパターンとして “/jnlp” がマッピングされています。

web.xmlが既存プロジェクトに存在しており、内容がデフォルトから変更されている場合、Nexaweb Platform 4.5.62以上のバージョンを適応しても上記の“/jnlp”のマッピングは追加されません。

その場合は、手動でweb.xmlに以下の“/jnlp”へのマッピングを追加してください。

web.xml設定例
<servlet>
  <servlet-name>JNLP</servlet-name>
  <display-name>JNLP</display-name>
  <description/>
  <servlet-class>com.nexaweb.server.jnlp.JnlpServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>JNLP</servlet-name>
  <url-pattern>/jnlp</url-pattern>
</servlet-mapping>


この結果、ブラウザに以下のURLへアクセスする事で動的JNLPテンプレートファイルを利用できます。

http://localhost:8080/JavaUIExplorer/jnlp

b.)   動的JNLPテンプレートファイルの提供。

Nexaweb Platform 4.5.62以上のバージョンを使用して、プロジェクトを作成するか、既存プロジェクトのNexaweb Platformをアップグレードすると以下のパスに動的JNLPテンプレートファイルが作成されます。

<プロジェクトフォルダ>\WebContent\Nexaweb\jsp\jws\jnlp.jsp

c.)   動的JNLPテンプレートファイルのパス設定。

動的JNLPテンプレートファイルはデフォルトでは

<プロジェクトフォルダ>\WebContent\Nexaweb\jsp\jws\jnlp.jsp

に配置され、JnlpServletからこのファイルが読み込まれます。

このJNLPテンプレートファイルのパスはnexaweb-client.xmlの以下の項目によって変更可能です。

/client-app/launch-configuration/jnlp-jsp-path

d.)   JnlpUtilsクラスの提供。

動的JNLPテンプレートファイルで動的な値を設定するために使用するクラスとしてcom.nexaweb.server.jnlp.JnlpUtilsクラスが提供されています。

このクラスによって動的JNLPテンプレートファイル内で、動的に変更される値の設定や、コンフィグレーション情報のパラメータ設定、Cookie情報の設定を行う事ができます。

メソッド

機能

void setHttpsProtocol(boolean)

JnlpUtilsクラスによって出力されるサーバーURLのプロトコルが HTTPS の場合、trueを設定します。

getBaseUrl()やgetServer()で得られるURL情報のプロトコルをコントロールします。

デフォルトは false です。このためデフォルトは HTTP になります。

String getBaseUrl()

<jnlp/>のcodebaseやhrefに指定するURLを返します。

String getCookie()

Cookie情報を返します。

String getAppContext()

アプリケーションコンテキスト名を返します。

String getServer()

サーバー情報を返します。

http://localhost:8080/

String getMainClass()

<application-des/>のmain-classに指定するStandaloneClientのメインクラス名を返します。

String getNexawebStandaloneClientJar()

Standalone ClientのJARファイル名を返します。

String getNexawebImagesJar()

Standalone Clientの画像用JARファイル名を返します。

String getParams()

nexaweb-client.xmlのコンフィグレーション情報をパラメータとして返します。

String getPreLoadJars()nexaweb-client.xmlの「/client-app/client-classpath/pre-loaded-in-applet-def/*」に設定されている事前ダウンロードJARファイルとプラグインの事前ダウンロードJARファイル用の<jar/>要素を文字列で返します。

getCookie()メソッドを<application-desc/>の子要素の位置に以下のように記述することで、Cookie情報をStandalone Clientに渡す事ができます。

  <%= jnlpUtils.getCookie() %>

Nexaweb Platform 4.5.62以上のバージョンでは上記getCookie()によって出力されたパラメータを解釈してStandalone Client内で使用するCookie情報として扱うことができます。

getCookie()によるCookie情報が含まれるJNLPファイルでStandalone Clientを起動した場合、呼出元のブラウザで扱われていたCookie情報を継承してStandalone Clientを動作させることができます。

※JWSで起動させた場合、デフォルトでは呼出元ブラウザのCookie情報は継承されません。

※Cookie情報の継承はStandalone Clientの起動後に使用されます。このため、JWSによるJARファイルのダウンロード時にはCookie情報が継承されたリクエストは使用されません。

Nexaweb Application プロジェクトへStandalone Clientのファイルを追加する

アプリケーションがJava Web StartランチャーにロードさせるためにランチャーはJARファイル及び、メインクラスを指定する必要があります。

また、JARファイルはWebから参照可能な位置に配置する必要があります。

Standalone Clientは専用のJARファイルを必要とし、Nexaweb Application プロジェクトのデフォルトの状態ではプロジェクト内に適切に配置されていません。

このため、プロジェクトに対して手動でStandalone ClientのJARファイルを配置する必要があります。

Standalone Clientは以下の二つのJARファイルを必要とします。

  • NexawebImages.jar
  • NexawebStandaloneClient.jar.

この二つのファイルはNexaweb Platformのインストールフォルダ直下の「bin」フォルダに配置されています。


これらのファイルをNexaweb Application プロジェクト内の「WebContent」フォルダ以下の外部から参照可能な場所にコピーします。

※Nexaweb Platformのアップグレード/ダウングレードを行った場合は、手動でJARファイルの変更が必要です。

これらのファイルは、既存のJava AppletベースのNexaweb Platformで使用されていた以下のファイル群を置き換える機能を持っています。

/WebContent/WEB-INF/Nexaweb/client/lib/NexawebClient-Common-Resources.jar

/WebContent/WEB-INF/Nexaweb/client/lib/NexawebClient-OnDemand.jar

/WebContent/WEB-INF/Nexaweb/client/lib/NexawebClient.*

/WebContent/WEB-INF/Nexaweb/client/lib/ NexawebClient-UITesting.*

このため、Standalone Clientでアプリケーションを動作させる場合、これらのファイルは使用されなくなります。


前述のStandalone.jnlpや動的JNLPのテンプレートファイルであるjnlp.jspでは「WebContent」フォルダの直下にStandalone ClientのJARファイルが配置されていることを前提にJNLPファイルが記述されています。

もし、JARファイルの配置を変更する場合は、JNLPファイルの<resource/>セクションでJARファイルのパスを指定することが可能です。


JARファイルの設定

Sandalone ClientでNexawebアプリケーションを動作させるために必要なクラスファイルは全てJARファイルにパッケージし、JNLPファイルの設定によってダウンロードさせる必要があります。

JNLPによるファイルのダウンロードは、/jnlp/resourcesの子要素に<jar/>セクションとして記述する必要があります。

<jar>セクションの記述例
<jar href="http://localhost:8080/JavaUIExplorerWebStart/NexawebStandaloneClient.jar"/>

<jar/>セクションのhref属性に記述するパスは”/<app-apth>”からの相対パスになります。絶対パスで記述する場合はhttpから記述します。

nexaweb-client.xmlの<pre-loaded-in-applet-def/>の子要素として<archive/>が適切に設定されている場合<archive/>のname属性に設定された名称を/ClientClassLoader/の後に続けて記載することで、JARファイルのダウンロードが可能です。

それ以外の場合、JARファイルは外部から参照可能な場所に配置し、”/<app-apth>”からの相対パスか、絶対パスにて記述する必要があります。


Standalone ClientでNexawebアプリケーションを動作させるために必要となるJARファイル群は以下になります。

NexawebImages.jar

製品内部で使用している画像ファイル群が格納されているJARファイルです。

このファイルのダウンロードは必須です。

NexawebImages.jarがWebContent直下に配置されている場合の記述
<jar href="http://localhost:8080/JavaUIExplorerWebStart/NexawebImages.jar "/>

NexawebStandaloneClient.jar

Standalone Clientの実行環境用JARファイルです。

このファイルのダウンロードは必須です。

NexawebStandaloneClient.jarがWebContent直下に配置されている場合の記述
<jar href="http://localhost:8080/JavaUIExplorerWebStart/NexawebStandaloneClient.jar "/>

ユーザーMCO

クライアント側で使用するユーザークラス(MCO)の全てをJARファイルにパッケージしたJARファイルです。

このファイルのダウンロードは、ユーザーMCOを使用している場合に必須です。

「mco.jar」としてパッケージし、nexaweb-client.xmlの<pre-loaded-in-applet-def>の子要素として<archive>に設定済みの場合の記述
<jar href="mco.jar"/>

ユーザー使用外部ライブラリJARファイル

クライアント側で使用する外部ライブラリのJARファイルです。

このファイルのダウンロードは、クライアント側で外部ライブラリを使用している場合に必須です。

「commons-logging-1.0.4.jar」としてパッケージし、nexaweb-client.xmlの<pre-loaded-in-applet-def>の子要素として<archive>に設定済みの場合の記述
<jar href="commons-logging-1.0.4.jar"/>

PluginAccessibility-classes.jar

アクセシビリティプラグイン機能を使用している場合に使用されるJARファイルです。

このファイルのダウンロードは、アクセシビリティプラグイン機能を使用している場合に必須です。

「/WebContent/WEB-INF/client/plugins/pre-loaded」にプラグインファイルを配置している場合の記述
<jar href="nxplugin-PluginAccessibility-PluginAccessibility-classes.jar"/>

ファイルの実体 :

/WebContent/WEB-INF/client/plugins/pre-loaded/PluginAccessibility.jarunpacked/lib/*

PluginDataFramework-classes.jar

データフレームワークプラグイン機能を使用している場合に使用されるJARファイルです。

このファイルのダウンロードは、データフレームワークプラグイン機能を使用している場合に必須です。

「/WebContent/WEB-INF/client/plugins/pre-loaded」にプラグインファイルを配置している場合の記述
<jar href="nxplugin-PluginDataFramework-PluginDataFramework-classes.jar"/>
<jar href="nxplugin-PluginDataFramework-ognl-2.6.7.jar"/>

※データフレームワークプラグインは内部でonlg外部ライブラリを使用しているため「nxplugin-PluginDataFramework-ognl-2.6.7.jar」を一緒に記述する必要があります。

ファイルの実体 :

/WebContent/WEB-INF/client/plugins/pre-loaded/PluginDataFramework.jarunpacked/lib/*

PluginDataRequest-classes.jar

データリクエスト機能を使用している場合に使用されるJARファイルです。

このファイルのダウンロードは、データリクエスト機能を使用している場合に必須です。

「/WebContent/WEB-INF/client/plugins/pre-loaded」にプラグインファイルを配置している場合の記述
<jar href="nxplugin-PluginDataRequest-PluginDataRequest-classes.jar"/>

ファイルの実体 :

/WebContent/WEB-INF/client/plugins/pre-loaded/PluginDataRequest.jarunpacked/lib/*

PluginValidationFramework-classes.jar

バリデーションフレームワークプラグイン機能を使用している場合に使用されるJARファイルです。

このファイルのダウンロードは、バリデーションフレームワークプラグイン機能を使用している場合に必須です。

「/WebContent/WEB-INF/client/plugins/pre-loaded」にプラグインファイルを配置している場合の記述
<jar href="nxplugin-PluginValidationFramework-PluginValidationFramework-classes.jar"/>

ファイルの実体 :

/WebContent/WEB-INF/client/plugins/pre-loaded/PluginValidationFramework.jarunpacked/lib/*

PluginTestScript-classes.jar

Test API機能を使用している場合に使用されるJARファイルです。

このファイルのダウンロードは、Test API機能を使用している場合に必須です。

「/WebContent/WEB-INF/client/plugins/pre-loaded」にプラグインファイルを配置している場合の記述
<jar href="nxplugin-PluginTestScript-PluginTestScript-classes.jar"/>

ファイルの実体 :

/WebContent/WEB-INF/client/plugins/pre-loaded/PluginTestScript.jarunpacked/lib/*

利用している機能に応じてJNLPファイルにこれらのJARファイルをダウンロードする記述を追加する必要があります。


Nexaweb Platform 4.5.62以上のバージョンで提供される動的JNLPのテンプレートファイルを用いた場合、nexaweb-client.xmlとプラグインの設定状況に応じて、自動的に<jar/>セクションを追加します。

このため、動的JNLPのテンプレートファイルを用いている場合は、手動で<jar/>セクションを追加するための記述は不要です。


JARファイルに署名する

クライアント側で稼働させるJREのバージョンによっては全てのJARファイルに対して署名を行う必要があります。

署名のルールや対象となるファイル群はJava AppletベースのNexaweb Platformの際と同じですが、追加で Standalone Clientで使用する二つのJARファイルも署名の対象となります。

※署名の対象はクライアント側にダウンロードする全てのJARファイルが対象となります。

※MCOとして使用されるクラスファイル群も全てJARファイルにパッケージし、署名が必要になります。

Nexawebアプリケーションを今後はJWSによるStandalone Clientのみを使用する場合、Java AppletベースのNexaweb Platformのファイル群に対する署名は不要になります。Java AppletベースのNexaweb Platformと環境によって併用する場合は、継続して署名が必要になります。

Nexawebアプリケーションに対する署名については「Nexawebアプリケーションの署名」も参照ください。


このステップでは、サンプルアプリケーションを動作させるために、以下のようにキーの作成とJARファイルへの署名を行います。

keytoolを使用して署名用のキーを作成します。

コマンドプロンプトから以下のように入力してください。
keytool -genkey -keystore nxWS.keys -alias http://www.nexaweb.com/ -validity 365

パスワードの確認が表示された場合、パスワードとして"123456789"を入力してください。

作成されたキーファイルを使用してJARファイルに対して署名を行います。

コマンドプロンプトから以下のように入力してください。
jarsigner -keystore nxWS.keys -storepass 123456789 [jar-file-name].jar http://www.nexaweb.com/

[jar-file-name]には署名対象となるJARファイル名を指定してください。

上記の、キーファイルの作成と署名のステップはサンプル用です。

実プロジェクトでは、適切な証明書を用いて署名してください。

ブラウザからJava Web StartとしてNexawebアプリケーションを開始する

Java Web StartとしてNexawebアプリケーションを開始するためには、ブラウザからJNLPファイルへアクセスします。

JNLPファイルへのアクセス時にWeb/アプリケーションサーバーがMIMEタイプとして「application/x-java-jnlp-file」を返した場合、クライアント側でJWSの実行環境が設定されていると、Java Web Startによってアプリケーションが開始されます。

MIMEタイプの設定は、利用しているサーバー環境によって設定方法が異なります。

環境毎に適切な手段によってMIMEタイプの設定を行ってください。

MIMEタイプの設定例 :

WebサーバーがApacheの場合 : .htaccess に以下の内容を追加
AddType application/x-java-jnlp-file jnlp
アプリケーションサーバーが Tomcat の場合 : web.xml に以下の内容を追加
<mime-mapping>
  <extension>jnlp</extension>
  <mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>

また、Nexaweb Platform 4.5.62以上で提供される JnlpServlet を使用する場合、 JnlpServlet のプログラム内でMIME タイプが設定されますので、サーバー環境への設定は不要です。

JSP/Servlet等のプログラムからの設定例
response.setContentType("application/x-java-jnlp-file");

※MIMEタイプはいずれかの手段で、JNLPファイルのダウンロード時に認識されれば全てに設定頂く必要はありません。


JnlpServletが有効な場合、以下のURLアクセスする事でJava Web StartによってNexaweb アプリケーションを開始できます。

           http://<domain-name>:<port-number>/<app-name>/jnlp

サンプルアプリケーションの場合は、以下のURLになります。

           http://localhost:8080/JavaUIExplorer/jnlp


既知の問題/制約事項

Nexaweb Java AppletからJWSによるStandalone Client環境へ移行した場合、以下のNexaweb API、コンフィグレーションに対する制約が生じます。

JWSへ移行する場合は、これらの制約が与える影響について考慮してください。

JARファイルのダウンロード

Cookie情報の継承はStandalone Clientの起動後にStandalone Clientから発生するNexaweb Applicationによるリクエスト時に使用されます。

このため、Java Web StartによるJARファイルのダウンロード時のリクエストにはCookie情報は継承されません。

JavascriptService API

JavascriptService APIはNexaweb Appletから呼出元ブラウザで定義済みのJavascript関数を呼び出す機能として提供されています。

JWSでアプリケーションを起動した場合、ブラウザ内でアプリケーションが動作しなくなるため、Javascriptへのアクセス手段が無くなります。

このため、Standalone ClientではJavascriptSerice APIを利用できません。

PrintService API

PrintService APIはスクリーンキャプチャをブラウザの印刷機能を用いて印刷する機能として提供されています。

JWSでアプリケーションを起動した場合、ブラウザ内でアプリケーションが動作しなくなるため、スクリーンキャプチャした画像をブラウザ内で表示することができなくなります。

このため、Standalone ClientではPrintService APIを利用できません。

代わりにStandalone ClientではPermissionedPrintService APIの使用を推奨します。

PermissionedPrintService APIはJava の AWTによるスクリーンキャプチャ印刷機能を提供しています。

DisplayService#showStatus()

DisplayService#showStatus()メソッドは指定された文字列をブラウザのステータスバーに表示する機能として提供されています。

JWSでアプリケーションを起動した場合、ブラウザ内でアプリケーションが動作しなくなるため、ブラウザのステータスバーは存在しません。

このため、Standalone ClientではDisplayService#showStatus()メソッドを利用できません。

RequestService#openBrowser()

RequestService#openBrowser()メソッドはNexawebアプリケーションから別ブラウザを開くための機能を提供されています。

この機能はStandalone Clientでも利用可能ですが、 Nexaweb Appletとは実装が異なります。

Nexaweb Appletではnexaweb-client.xmlの<javascript-browser-open-enabled/>設定値が “true” であった場合、 Javascript関数から別ブラウザを開きます。”false”であった場合、Java APIのjava.applet.AppletContext#showDocument()を使用して別ブラウザを開きます。

一方で、Standalone Clientではnexaweb-client.xmlの設定内容に関係なく、クライアントOS別にシェル呼び出しに近い実装で、デフォルトブラウザを起動する方法で別ブラウザを開きます。この呼び出しは、新規にブラウザプロセスを起動するため、新しく開かれたブラウザではStandalone Clientで保持されていたセッション情報及び、Cookie情報は継承されません。

このため、RequestService#openBrowser()メソッドを使用して別ブラウザを開いた際に、呼出元ブラウザのセッション情報やCookie情報を継承することを前提とした実装がされている場合、代替手段を検討頂く必要があります。

無効となったコンフィグレーション

/client-app/launch-configuration/window-title

ブラウザのウインドウタイトルを設定するコンフィグレーションですが、JWSではブラウザが存在しないため、無効となりました。

代わりに、Java Applicationのウインドウのタイトルとして表示されます。

/client-app/launch-configuration/applet-parameters

動作環境がJava Appletでは無くなったため、このパラメータは無効となりました。

JVMパラメータを指定する場合は、動作環境のコンフィグレーションファイル(JNLP等)の設定に置き換える必要があります。

/client-app/launch-configuration/display-unknown-vm-in-status

未検証JVMで起動した際にメッセージとボタンを表示するためのコンフィグレーションですが、Nexaweb Applet起動時に使用していたdetect.jarに該当する機能はStandalone Clientには存在しないため、無効となりました。

/client-app/launch-configuration/applet-load-timeout

Java Appletのロード時のタイムアウトを設定するためのコンフィグレーションですが、Java Appletのロードが無くなったため、無効となりました。

/client-app/launch-configuration/applet-class

Java Applet起動時のクラス名称の指定を行うためのコンフィグレーションですが、Java Applet自体が無くなったため、無効となりました。

代わりにJNLPファイルの”/jnlp/applicatioin-desc@main-class”にStandalone Clientのメインクラスを記述します。

/client-app/launch-configuration/launch-ui/*

Nexawebアプリケーションの起動時に表示されるスプラッシュ画面に関するコンフィグレーションですが、Java Appletによるスプラッシュ画面が無くなったため、無効となりました。

/client-app/launch-configuration/launch-requirements/*

Nexaweb Appletアプリケーションの起動直後に起動環境要件を制限するためのコンフィグレーションですが、Nexaweb Applet起動時に使用していたdetect.jarに該当する機能はStandalone Clientには存在しないため、無効となりました。

代わりに一部の起動制限をJNLPの記述ルールによって実現できます。

/client-app/launch-configuration/applet-width

ブラウザウインドウ内でのJava Appletの表示幅を指定するコンフィグレーションですが、ブラウザ内で起動することが無くなったため、無効となりました。

代わりにStandalone Clientの起動パラメータとして「-width」を指定する事で、Standalone Clientの表示幅を指定する事ができます。

/client-app/launch-configuration/applet-height

ブラウザウインドウ内でのJava Appletの表示高を指定するコンフィグレーションですが、ブラウザ内で起動することが無くなったため、無効となりました。

代わりにStandalone Clientの起動パラメータとして「-height」を指定する事で、Standalone Clientの表示高を指定する事ができます。

/client-app/launch-configuration/launch-error-pages/*

Nexaweb Appletの起動時に何らかのエラーが発生した場合に表示するエラーページのURLを指定するコンフィグレーションですが、Nexaweb Applet起動時に使用していたdetect.jarに該当する機能はStandalone Clientには存在しないため、無効となりました。

/client-app/launch-configuration/applet-id

Java AppletのIDを指定するためのコンフィグレーションですが、Standalone ClientはJava Appletとしては起動しないため、無効となりました。

/client-app/javascript-browser-open-enabled

RequestService#openBrowser()メソッドを使用した際に、別ブラウザを開くためにJavascriptを用いた別ブラウザウインドウのオープンを使用するかどうかを決定するコンフィグレーションですが、Standalone ClientではJavascriptが使用できないため、無効となりました。


スタンドアロンクライアント

Web Start

Running Nexaweb application in Java 1.7u51 and later

Updating Client-Side Jar Manifests for Java 1.7u51 and Later