スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

基礎からのサーブレット/JSP(7日目)

基礎からのサーブレット/JSP 改訂版 (プログラマの種シリーズ)基礎からのサーブレット/JSP 改訂版 (プログラマの種シリーズ)
(2007/03/01)
宮本 信二

商品詳細を見る


CHAPTER7 サーブレットを簡単に作る

invokerサーブレットの設定

invokerサーブレットを使うとweb.xmlの記述を省略し、サーブレット名の指定のみで
サーブレットを呼び出すことが出来るようになる。

${CATALINA_HOME}/conf/web.xmlの121行目付近の記述を有効にする(Tomcat6.0.24)
※invokerサーブレットのservlet要素を有効にする。

  <servlet>
    <servlet-name>invoker</servlet-name>
    <servlet-class>
     org.apache.catalina.servlets.InvokerServlet
    </servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>0</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>



${CATALINA_HOME}/conf/web.xmlの121行目付近の記述を有効にする(Tomcat6.0.24)
※invokerサーブレットのservlet-mapping要素を有効にする。

  <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
  </servlet-mapping>



web.xmlを変更したらTomcatを再起動。
すると、以下のようなエラーが出てTomcatが起動できなかった。

java.lang.SecurityException: クラス org.apache.catalina.servlets.InvokerServlet のサーブレットは特権を与えられているので、このWebアプリケーションによってロードできません


調べてみるとどうやらTomcat6でinvokerサーブレットを利用するには
${CATALINA_HOME}/conf/context.xmlのContextタグに以下の記述が必要らしい

<Context privileged="true">



この本の発売日はどうやら2007年。まぁその頃はTomcat5とか出たばっかだし
しゃーないっちゃしゃーないね。

これで以下のURL指定でweb.xmlに追記なしでサーブレットを呼び出すことが可能になる。

http://localhost:8080/{コンテキスト名}/servlet/{完全クラス名}
つまり、
http://localhost:8080/entry/servlet/foo.NowServlet
↑こんな感じで呼び出すことが可能になる。


今なら問題なく理解できるけど、コンテキストの中のクラスってのはTomcat3だか4だかの時代に
コンテキストの記述をカッ飛ばしてできないできない唸ってた気がする。覚えておこう。

あと、忘れないでおきたいのが以下の3点
・invokerサーブレットはセキュリティ面で不安があるらしく開発環境にしか使えない。
・Tomcat独自の機能である
・基本的にはweb.xmlに登録するのが正しい

特にinvokerはイレギュラーな対応だということを忘れないようにしたい。

URLの記述については数年来の悩みが解決して超スッキリ。
さぁ、次はJSPだ。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

ラム君(モヒカンVer)

Author:ラム君(モヒカンVer)
都内でプログラマのようなものをやっています。
まだまだ初心者ですがよろしくお願いします。

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。