Know-how for JRun LastUpdate:
JRUNは、WEBサーバー機能を有している。通常クライアントブラウザからリスエストが投げられると、ポートNo:80のWWWサーバーが受け取る。このとき、WWWが無いとき、ホスト名:8100で投げると、JRUNの内部サーバーが受け取る事が出来る。つまりWWWが設定されていなくてもAPサーバーの動作テストが出来る。
ちなみに8100番は固定的なものではなく、インストール時の初期設定値である。
approotのようなルートディレクトリは、Web アプリケーションファイルを提供するためのドキュメントルートとして機能します。このディレクトリには、Web アプリケーションの一部として開発されるJSP ページが含まれます。たとえば、c:/myapp に配置されるWeb アプリケーションの場合、既定のトップページファイルの場所はc:/myapp/index.html になります。
WEB-INF: アプリケーションのドキュメントルート内にないアプリケーション関連のリソースが含まれます。このディレクトリには、アプリケーションの設定情報が格納されたweb.xml ファイルが含まれます。このディレクトリは、アプリケーションの公開ドキュメントツリーの一部ではありません。したがって、このディレクトリまたはサブディレクトリに含まれるファイルは、クライアントに直接提供されません。
このディレクトリまたはサブディレクトリに含まれるファイルは、クライアントに直接提供されません。たとえば、アプレットが含まれる.jar ファイルは、クライアントがアクセスできるディレクトリに置く必要があるため、WEB-INF には格納されません
WEB-INF/classes: アプリケーションのJava サーブレット用のJava クラスファイルが含まれます。
WEB-INF/jsp:JSP ページの変換時にJRun によって生成されるファイル「.class および.java」が含まれます。このディレクトリは、Web アプリケーション仕様の一部ではなく、JRun
によって追加されます。
メモWEB-INF/jsp ディレクトリは、Java Servlet 仕様Version 2.2 の中では定義されていません。このディレクトリは、JRun 特有のディレクトリです。他のアプリケーションサーバーでは、.java ファイルや.class ファイルが別の場所に書き込まれる場合があります。
一方、default/lib 内は、デフォルトサーバー内のwebアプリから共通で起動できます。が、再ロード不可なフォルダです。一度ロードされたら、リソースが変更されても再ロードされません。
再ロードしようと思ったら、該当のJRunを再起動するしかないのかな?
2001/11/08
HTML ページの追加
アプリケーションのルートディレクトリは、アプリケーションファイルを処理するときにドキュメントルートディレクトリとして機能します。アプリケーションルートまたはアプリケーションルートの任意のサブディレクトリ(WEB-INF ディレクトリを除く) にアプリケーションのHTML ページを追加します。たとえば、Web アプリケーションがc :/apps/app1 に置かれている場合、既定のウェルカムファイルはc :/apps/app1/index.html に置かれます。
JSP ページの追加
JSP ページは、HTML とスクリプトコードが混在しているテキストファイルをもとにサーブレットを作成するときに使用します。クライアントが初めてJSP ページ(.jsp ファイル) を要求したときに、そのページがJava ソースコードファイル(.java ファイル) に変換され、コンパイルされてJava クラスファイル(.class ファイル) が作成されます。JSP ページの作成方法の詳細については、第7 章を参照してください。
Web アプリケーションにJSP ページを追加するには、アプリケーションのルートディレクトリ、またはアプリケーションルートの任意のサブディレクトリ(WEB-INF のサブディレクトリを除く) にJSP ページをコピーします。既定のアプリケーションにJSPページを追加する場合は、そのJSP ページをWeb サーバーのドキュメントルートディレクトリにコピーします。これは、既定のアプリケーションでは、Web サーバーのドキュメントルートディレクトリがルートディレクトリとして機能するためです。
JRun では、JSP ページの要求に応じて生成された.java ファイルおよび.class ファイル
は、WEB-INF/jsp ディレクトリに書き込まれます。
メモWEB-INF/jsp ディレクトリは、Java Servlet 仕様Version 2.2 の中では定義
されていません。このディレクトリは、JRun 特有のディレクトリです。
他のアプリケーションサーバーでは、.java ファイルや.class ファイルが別の場所に書き込まれる場合があります。
Java サーブレットの追加
Java サーブレットは、1 つの.class ファイルに相当します。Web アプリケーションにJava サーブレットを追加する手順は、サーブレットを格納する場所によって異なります。通常、サーブレットを格納するのは、以下の場所のいずれかです。
• WEB-INF/classes 内に.class ファイルとして格納する• .jar ファイル内に.class ファイルとしてWEB-INF/lib を格納する• 複数のアプリケーションで共有されるクラスのディレクトリに格納するディレクトリWEB-INF/classes とWEB-INF/lib は、Web アプリケーションのクラスパスに自動的に組み込まれ、これらのディレクトリ内のすべての.class および.jar ファイルは再ロード可能になります。共有クラスのディレクトリは、必ずアプリケーションのクラスパスで指定しておく必要があります。また、共有ディレクトリには、再ロード可能になるものと、そうでないものがあります。
JRun でJava サーブレットを実行できるようにする場合にもっとも重要な問題は、アプリケーションサーバーは、本来WEB-INF 内やWEB-INF のサブディレクトリ内のファイルを直接操作することはできない点です。それでは、サーブレットの.class ファイルを一般にWEB-INF/classes またはWEB-INF/lib に.jar ファイルとして格納する場合、そのサーブレットをクライアントで利用できるようにするには、どのような方法をとるのでしょうか?
アプリケーションにJava サーブレットを追加する手順は以下のとおりです。
1. サーブレットの.class ファイル、またはサーブレットの.class ファイルが含まれている.jar ファイルを適切なディレクトリ( 通常はWEB-INF/classes かWEB-INF/lib)にコピーします。
2. JRun 管理コンソール(JMC) で[ app_name> Servlet URL Mapping] プロパティを使用して、該当するWeb アプリケーション内のサーブレットを登録します。サーブレットを登録すると、サーブレットのクラスファイルに対する要求のURLのマッピングがセットアップされます。この登録情報は、アプリケーションの
web.xml ファイルに書き込まれます。
たとえば、SnoopServlet.class ファイルで表されるサーブレットにアクセスするとしま
す。その場合、SnoopServlet.class ファイルをc:/apps/app1/WEB-INF/classes にコピーします。次に、JMC を使用して、以下の表に示すサーブレットのマッピングによってサーブレットを登録します。
[ 仮想パス/ 拡張子] フィールドでは、サーブレットに対応するURL を指定します。[ 呼び出されるサーブレット] フィールドでは、サーブレットの名前を指定します。このサーブレットの名前には、サーブレットのクラスファイルの名前を拡張子.class を付けずに指定します。
サーブレットを登録すると、以下のURL を使用して要求できるようになります。
[ 仮想パス/ 拡張子] フィールドでは、サーブレットに対応するURL を指定します。[ 呼び出されるサーブレット] フィールドでは、サーブレットの名前を指定します。このサーブレットの名前には、サーブレットのクラスファイルの名前を拡張子.class を付けずに指定します。
サーブレットを登録すると、以下のURL を使用して要求できるようになります。
http://local_host/app1/Snoop
JRun は、このサーブレットを処理し、サーブレットの結果をクライアントに返します。
次のURL を使用してサーブレットに直接アクセスしようとするとエラーが生じます。
http://localhost/app1/WEB-INF/classes/SnoopServlet.class
JRun ではWEB-INF 下にあるファイルを操作できないので、このURL ではエラーが生成されます。
app1 のルートディレクトリにSnoopServlet.class ファイルをコピーした後で、次のURLを使用してそのファイルへのアクセスを試みると、以下のことが生じます。
http://localhost/app1/SnoopServlet.class
この.class ファイルは、アプリケーションのクラスパスに含まれるディレクトリ内にないので、JRun によってWeb サーバーからクライアントにファイルが返送されます。Web ブラウザは.class ファイルの内容の表示方法を認識できないので、ファイルを格納する宛先ディレクトリの名前を要求するプロンプトを出します。しかし、.class ファイルをクライアントには返送せず、JRun でサーブレットをロードまた実行し、サーブレットの結果をクライアントに返します。
2001/11/05
WEB-INFフォルダにweb.xmlを見よ。管理コンソールより、WEBアプリをした場合はweb.xml内に次の記述が有る場合がある。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.// DTD Web Application 1.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
これを、削除すると、メチャ早くなる。Jrunサーバー内で1つでも上記記述を含むweb.xmlがあると遅くなるので、全部チェックすること。
以下参考
http://jrun.itfrontier.co.jp/jrunbase/diaplay.cfm?msgid=3b540e8e%2E73050okugawa%5Fhiroshi%40itfrontier%2Eco%2Ejp
このタグは、xml ドキュメントが有効であるかを確証するために使
用され、タグ内の URL に接続を試みようとします。もし、
Internet にアクセスできない環境であれば、default-event.log
内で以下のエラーを取得し、JRun は接続しようと試みることによ
りハングしたようになってしまうでしょう。web.xml からこの
<!DOCTYPE> タグを削除することでこの問題は解決します。
2001/11/07
通常のhtmlやJSPファイルなどは、HTTPリクエストに対し最初にWEBが動くのに対して、Servletはまずjavaの実行ファイルを起動する必要があるという点。
HTTPクライアントからダイレクトにServletを起動するには、多少の仕掛けが必要になる。
おおまかな手順は次の通りになる。
2001/11/08
500 Internal Server Error
/test_1/aaa:
javax.servlet.ServletException: TestServlet をインスタンス化できません。
java.lang.ClassNotFoundException: TestServlet [TestServlet]
これは、該当するクラス(TestServlet)が見つけられない時のメッセージである。クラスパスに該当のクラスがあるかどうか確認する必要あり。
404 Not Found
/test_1/test.htm:
allaire.jrun.JRunServletException: 見つかりませんでした。
at allaire.jrun.file.FileServlet.service(../file/FileServlet.java:125)
これは、/test_1でまっぴんぐされるhttpリソースがみあたらない時と思われる。サーブレットと認識されていないようだ。
2001/11/08
Jrunサーバーは複数のインスタンスを持つことができる。初期インストール時では、Adminサーバー、Defaultサーバーの二つのJRunサーバーが設定される。ここでは、3つ目のさーばーを立てる時のポイントについてメモをする。
ポイント1
\JRun\servers\default\ をコピッてしまおう。
それがラク。たとえば、\JRun\servers\test のように。
ポイント2
ポート番号を重複しないように、残らず変更する。
\Allaire\JRun\servers\追加したサーバー\local.propertiesを変更します。
control.endpoint.main.port
jcp.endpoint.main.port
web.endpoint.main.port
-Dejipt.classServer.port
-Dejipt.homePort
については、変更する必要があります。1の位を++1しておくと衝突しにくいです。
ポイント3
JRunに追加したサーバーを登録する。
\Allaire\JRun\servers\追加したサーバー\local.propertiesで表示サーバー名を設定しておきます。
########################################################################
## jvm properties
########################################################################
jrun.server.displayname=JRun Test Server
ポイント4
\Allaire\JRun\lib\jvms.propertiesにサーバーを追加します。
admin=C:/Program Files/Allaire/JRun/servers/admin
default=C:/Program Files/Allaire/JRun/servers/default
test=C:/Program Files/Allaire/JRun/servers/test
以上でサーバーを再起動すればokのはずです。
DefaultサーバーとTestサーバーを同時に起動した時だけエラーになるならば、ポート番号が重複している可能性があります。
2001/11/15
JRunのマニュアルを軽く読むとWEB-INF/classes は規定のクラスパスのように思えるが、実は必ずしもソウではない。
次の何れかの方法で設定されていないと、WEB-INF/classes
はクラスパスと認識されないので注意
など、何処かでクラスパスを通す必要があるようです。私はハマリマシタ
ドライブ名を含む絶対パスなどを記述する時は、\
を / に置き換えて入力する。
空白を含むフォルダ名の時は、""
で囲む必要があるかも
"C:/data/ome_tutorial/lesson2/web/WEB-INF/classes"
2001/11/15
JavaVMへのパラメタの追加として行います。
Javaの設定→java引数
-D につづけて、入力
例
-Dapp.properties="C:/data.dat"
2001/12/26
http://www.foo.gr.jp/server/index.html