サーバーの開発

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 クラス」を参照してください。