Rogue Wave® JViews JavaScript Web アプリケーションのサーバー・サイドは、次の 2 つの主要部分で構成されます。
それは、Rogue Wave JViews API の上部に構築された任意のタイプの複雑な 2 次元ディスプレイである Rogue Wave JViews アプリケーション自体と、クライアントに JPEG イメージを作成するサーブレットです。
XML グラファー例でサーバー・サイドがどのように構築されているかを把握することは、これらの部分を分析するのに役立ちます。
XML グラファー・サーバー
XML グラファー例では、ノードとリンクのグラフは地図上に表示されます。この Rogue Wave JViews アプリケーションは、
<installdir>
/jviews-framework89/samples/xmlgrapher/src/xmlgrapher/servlet/XmlGrapherServlet.java にある XmlGrapher.java ファイルで定義されています。
メモ
XML グラファー例のこの部分には、標準的な Rogue Wave JViews コードのみが含まれているため、詳細な説明は省きます。例作成における同クラスの使用方法についてのみ説明します。サーバー・サイドのアプリケーションは、表示する情報の種類によってまったく異なります。
XmlGrapher クラス
XmlGrapher
クラスは、Rogue Wave JViews の簡単なサブクラスです。 IlvManagerView クラスです。この小さなコンポーネントの主な機能は、ノードとリンクを記述した XML ファイルを読み出し、これらのノードとリンクを地図の上部に表現する Rogue Wave JViews グラファーを作成することです。この機能は次のメソッドで行います。
public void setNetwork(URL url)
XML ファイルには、地図および地図のビットマップ・ファイルに関する情報が含まれています。各ノードの位置情報を含むノードのリストとリンク情報もあります。示された例では、ノードの位置が x-y 座標で示されています。実際の地図作成アプリケーションでは、Rogue Wave JViews API で地理投影法を使用することができます。
setNetwork メソッドは、XML ファイルを解析し、地図を作成し、地図上にノードとリンクを配置します。また、直交リンク・レイアウト・アルゴリズムを適用して、リンクを自動的に配置します。
XML ファイルの例は、
<install-dir>
/jviews-framework89/samples/xmlgrapher/webpages/data にあります。
サーブレット
アプリケーションを構築したら、アプリケーションのイメージをクライアントに作成するサーブレットを作成する必要があります。このタスクを達成するために、Rogue Wave JViews Framework は定義済みサーブレットを提供しています。定義済みサーブレットには、 IlvManagerServlet という名前が付けられています。このクラスは、パッケージ ilog.views.servlet にあります。
XML グラファー例に対して作成したサーブレットは、非常に簡単なものです。サーブレットの機能に関する詳細は、「IlvManagerServlet クラス」を参照してください。XML グラファー例のサーブレットは、次のファイルに格納されています:
<installdir>
/jviews-framework89/samples/xmlgrapher/src/xmlgrapher/servlet/XmlGrapherServlet.java
import javax.servlet.*; import javax.servlet.http.*; import java.net.*; import ilog.views.*; import ilog.views.servlet.*; import demo.xmlgrapher.*; public class XmlGrapherServlet extends IlvManagerServlet { private XmlGrapher xmlGrapher; /** * Initializes the servlet. */ public void init(ServletConfig config) throws ServletException { super.init(config); xmlGrapher = new XmlGrapher(); String xmlfile = config.getInitParameter("xmlfile"); if (xmlfile == null) { xmlfile = config.getServletContext().getRealPath("/data/world.xml"); xmlfile = "file:" + xmlfile; } try { xmlGrapher.setNetwork(new URL(xmlfile)); } catch (MalformedURLException ex) { } setVerbose(true); } public IlvManagerView getManagerView(HttpServletRequest request) throws ServletException { return xmlGrapher; } protected float getMaxZoomLevel(HttpServletRequest request, IlvManagerView view) { return 30; } }
import
ステートメント:import javax.servlet.*; import javax.servlet.http.*;
Java Servlet API を使用するために必要です。
import
ステートメント:import ilog.views.*; import ilog.views.servlet.*;
Rogue Wave JViews と Rogue Wave JViews サーブレット・サポートを使用する場合に必要です。
import
ステートメント:import demo.xmlgrapher.*;
は、XMLGrapher クラスに必要です。
IlvManagerServlet.
クラスは、Java サーブレット API から継承した HTTPServlet クラスの抽象 Java™
クラス・サブクラスです。XmlGrapherServlet は、IlvManagerServlet クラスを継承しており、次の 3 つのメソッドのみを定義しています。
init メソッド
XmlGrapher
オブジェクトを作成してサーブレットを初期化します。public void init(ServletConfig config) throws ServletException { xmlGrapher = new XmlGrapher(); ...
続けて、
XmlGrapher
オブジェクトが次の setNetwork
メソッドを使用して XML ファイルを読み込みます。String xmlfile = config.getInitParameter("xmlfile"); if (xmlfile == null) xmlfile = config.getServletContext(). getRealPath("/data/world.xml"); try { xmlGrapher.setNetwork(new URL("file:" + xmlfile)); } catch (MalformedURLException ex) { }
XML ファイルはサーブレットの構成で指定できます。デフォルトでは、
world.xml
ファイルを使用します。getManagerView メソッド
getManagerView メソッドは、
IlvManagerServlet
クラスの唯一の抽象メソッドで、イメージを生成するために使用される IlvManagerView を返します。ここでは、XmlGrapher オブジェクトが返されます。public IlvManagerView getManagerView(HttpServletRequest request) throws ServletException { return xmlGrapher; }
getMaxZoomLevel メソッド
このメソッドを使用すると、クライアント・サイドにユーザーの最大ズーム・レベルを固定できます。このメソッドは、より大きい値を返すように上書きされます。
以上のように、サーブレットの作成は非常に簡単です。
これでサーブレットは、JPEG イメージを送信してクライアントからの HTTP 要求に応答できます。この例をインストールしたら、以下の HTTP 要求を試すことができます。
http://localhost:8080/xmlgrapher/ demo.xmlgrapher.servlet.XmlGrapherServlet?request=image &format=JPEG&bbox=0,0,512,512 &width=400 &height=200 &layer=Cities,Links,background%20Map
これによって以下のイメージを生成することができます。
この要求では、demo.xmlgrapher.servlet.XmlGrapherServlet という名前のサーブレットに、「都市」、「リンク」、「背景地図」を表示したレイヤーを持つマネージャー領域 (0、0、512、512) を示すサイズ 400 x 200 のイメージを作成することを依頼します。
Rogue Wave JViews がクライアント・サイドに提供する JavaScript オブジェクトまたは Java™
クラスがユーザーに代わって HTTP 要求を処理するため、ほとんどの場合サーブレット・パラメーターに関する知識は不要です。
これは非常に簡単なサーブレットの例です。このサーブレットはすべてのクライアントに対して同じ IlvManagerView インスタンスを使用しているため、すべてのクライアントが同じデータを参照することになります。さらに複雑な IlvManagerServlet クラスの使用方法については、「IlvManagerServlet クラス」を参照してください。