IlvManagerServletSupport クラス

XML グラファーの例で使用された IlvManagerServlet クラスは、Rogue Wave® JViews JavaScript Web アプリケーション・プロトコルをサポートするサーブレットを作成する簡単な方法を提供します。 IlvManagerServlet クラスを使用するとサーブレットを簡単に作成できますが、大きな欠点が 1 つあります。IlvManagerServlet クラスは HttpServlet クラスから派生しているため、 Rogue Wave JViews JavaScript Web アプリケーション・プロトコルに対するサポートを既存のサーブレットに追加できません。 IlvManagerServletSupport クラスの場合はできます。このクラスの API は IlvManagerServlet と同じですが、サーブレットではありません (つまり、HttpServlet クラスからの派生ではありません)。したがって、このサーブレットに IlvManagerServlet サポート・クラスの独自のサーブレットとインスタンスを作成して、Rogue Wave JViews クライアント・サイドから送信される要求を処理できます。

XML グラファー例での Web アプリケーション・サポート

この XML グラファー例では、サーブレットのコードは IlvManagerServletSupport クラスを使用して次のように再記述することができます。
package demo.xmlgrapher.servlet;

import javax.servlet.*;
import javax.servlet.http.*;

import java.net.*;
import java.io.*;
import ilog.views.*;
import ilog.views.servlet.*;

import demo.xmlgrapher.*;

public class XmlGrapherServlet extends HttpServlet
{
  IlvManagerServletSupport servletSupport ;

  class MySupport extends IlvManagerServletSupport {

    private XmlGrapher xmlGrapher;

    public MySupport(ServletConfig config) {
      super();
      xmlGrapher = new XmlGrapher();
      
      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) {
      }
      
      setVerbose(true);  
    }
    
    public IlvManagerView getManagerView(HttpServletRequest request) 
      throws ServletException {
        return xmlGrapher;
      }
    
    protected float getMaxZoomLevel(HttpServletRequest request,
                                    IlvManagerView view) {
      return 30;
    }
  }

  /**
   * Initializes the servlet.
   */
  public void init(ServletConfig config) throws ServletException {
    servletSupport = new MySupport(config);
  }

  public void doGet(HttpServletRequest request, 
                    HttpServletResponse response)
    throws IOException, ServletException {
    if (!servletSupport.handleRequest(request, response))
      throw new ServletException("unknown request type");
  }

  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
       throws IOException, ServletException {
    doGet(request, response);
  }

}
このコードでは、HttpServlet クラスから直接派生する新規クラス、新しいサーブレット・クラス XmlGrapherServlet を作成しています。doGet メソッドは、要求を IlvManagerServletSupport クラスのインスタンスに渡します。

クライアント・サイドの固定ズーム・レベルの指定

IlvManagerServletSupport クラスの次のメソッドをオーバーライドして、クライアント・サイドで使用するズーム・レベルを指定します。
public double[] getZoomLevels(HttpServletRequest request, IlvManagerView view)
この場合には、最大ズーム・レベルを使用しません。