トップページ⇒php
1001コメント334KB

■■Servlet/JSP(EJB含む)質問スレ Part4■■

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/06/01(水) 09:09:00ID:???
質問する前に最低でもGoogleで検索するように

前スレ
■■ Servlet/JSP(EJB含む) 質問スレ Part3 ■■
http://pc8.2ch.net/test/read.cgi/php/1087331455/l50
前前スレ
■■ Servlet/JSP(EJB含む) 質問スレ Part2 ■■
http://pc5.2ch.net/test/read.cgi/php/1052879533/l50
過去スレ
■■ Servlet/JSP(EJB含む) 質問スレ ■■
http://pc2.2ch.net/test/read.cgi/php/1023501812/l50

関連スレ
【初心者】Java質問・相談スレ47【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1086716004/l50
JSP/Servletで構築されたサイト
http://pc5.2ch.net/test/read.cgi/php/1063121571/l50
◆JSP◆
http://pc5.2ch.net/test/read.cgi/php/984840356/l50

関連は>>2-10
01401232005/06/23(木) 22:27:43ID:???
>>136

問題起きてない。
IDEはEclipse使ってる。

O/Rマッパだが、純粋な美しいOOを適用できるなら、現時点では
Hibernateがベストだと思うよ。EJB3もHibernateの影響を強く受けて
いるしね。(つーかLindaがKingを召喚した)

漏れがHibernateじゃなくてiBATISを選んだのは二つの理由。

1)完璧なOOやったんじゃ、チョロっとした画面出すのに数千〜数万の
オブジェクトが出来てしまう。そんなのイヤンだからSQLのSUMとか、
やりたくないけど「月次集計テブル union 当月明細テブル」みたいな
処理もやって、パフォーマンス出さなくちゃならん。だからSQLは
自由に書きたい。

2)美しいDB構造ではない。つーか、「取消伝票発行する時に、
以前存在してた得意先はテーブルに存在しないかもしれない。
でも、取消伝票はその得意先を使って発行しなくちゃならん。」
なんて用件があった。存在しないものを、あたかも存在してるように
見せるなんてHibernateじゃ無理だろ。

つーことでiBATISにしたワケ。漏れSQLを書くの嫌いじゃないしね。
ま、iBATISは設定ファイルにSQLを直書きするので、xmlが
長くなるのがイヤンだけど、Javaソースはスッキリスッキリ。

参考まで。
01411232005/06/23(木) 22:29:06ID:???
追記

教科書だけど、「LightWeightJava」はHibernateやJSFのノウハウは
素敵だけど、Springの解説は弱い。「Spring入門」は設計理論が素敵。
なので両方読み合わせることを薦める。

あとサンプルアプリ。三冊ともなんちゃらDaoImplにAspectせずに
FacadeにAspectしていることを確認シル
0142nobodyさん2005/06/23(木) 23:04:48ID:???
>>140
> チョロっとした画面出すのに数千〜数万のオブジェクトが出来てしまう。

そんなことはないと思うが。
それに、OR使っても集計はHQLなりEQLなりSQLでDBにやらせるよ。

> 存在しないものを、あたかも存在してるように見せるなんてHibernateじゃ無理だろ。

SQLでできることならできるよ。
逆に、そういう1レコードに対する手続きは書きやすいと思う。

「ORマッピングを使うならSQLを使ってはいけない」みたいな変な縛りを課さなければいいだけ。
0143nobodyさん2005/06/23(木) 23:45:08ID:???
> チョロっとした画面出すのに数千〜数万のオブジェクトが出来てしまう。
あんたがまともに使えてないだけ。
01441402005/06/24(金) 09:35:04ID:???
>>142>>143
できるのならその方法を教えて、マジ。
ちなみに集計するだけじゃないよ。

あと、「Hibernate3なら」も無しでお願い。
0145nobodyさん2005/06/24(金) 09:57:18ID:???
>>144
なにやってるかも書かずに方法教えてといわれてもねぇ。
SQLで効率よく処理できるならSQLで書けばいいんじゃない?
ORマッピングは、データベースがやってた処理をJavaにもってきてJavaで処理記述するためのツールじゃないよ。
0146nobodyさん2005/06/24(金) 12:30:40ID:???
不安になってきた

ORマッピングってなんだっけ?
01471132005/06/24(金) 13:42:58ID:7Lvl9NLQ
>>140-141
どうもありがとうございます。かなり熟練された方なのでしょうね。
私が意外なのは、STRUTS批判があまりこのスレッドで見られなくなった
ことです。

もうJSFの時代なのでしょうか。ちょっとあれに手出して、こっちに手出して
これが新しくて面白そうだから今度はこっちという風なことをあまりしたく
なくて(というよりもそんな余裕がありません)、WEBプログラミングが
すらすらできる方はもう一流プログラマと言ってもいいと思うんです、
私もそうなりたいのですが、一時期「EJBを制すればJ2EEを制す」なんて
大きな勘違いしていて、それでもう途方に暮れています。

すこしでも皆さんに追いつけるようになりたいんです。当分の間は
HIBERNATEの勉強に精を出そうと思います。またお世話になると思います
けれども、そのときはどうぞ宜しくお願いします。

WEBプログラミングが上手にできる方々って、何を次の目標にしているの
でしょうね。組み込み系のシステム開発でしょうか。うーーーーん。
コンパイラーの自作(そんなことは誰もしませんか?)でしょうか。
ロボットの制御プログラミングなんてできたら面白そうですね。
火星探索ロボットの制御はJAVAでしたんですよね、確か。
0148nobodyさん2005/06/24(金) 13:51:04ID:???
>>146
リレーショナルデータベースのデータをJavaのオブジェクトにマッピングしてくれるツール
RDBからとってきたデータをJavaで処理したり、Javaで処理したデータをRDBにつっこむときのデータ変換をやってくれる。
RDB一発でやってた処理をJavaにもってきて、Javaで処理書くようにしてもあまり便利ではない。
0149nobodyさん2005/06/24(金) 21:41:21ID:???
ほしいデータが複数のテーブルをjoinさせないと得られないとしたら
そういう場合のORマッピングって有効なの?使える?
0150nobodyさん2005/06/24(金) 22:07:51ID:???
>>149
iBatisなら、複数のテーブルをjoinするSQLを書けばいい。
joinして引っ張ってくるだけなら定義ファイルでも可。

Hibernateは知らないので他の人プリーズ。
0151nobodyさん2005/06/24(金) 22:16:29ID:???
DAO&DTOでjdbcを使ってresultsetからbeanに値をセットする方法に比べて
定義ファイルを書く方が楽だってことで
ORマッピング(・∀・)イイということなわけ?
0152nobodyさん2005/06/25(土) 05:15:17ID:???
>>149
複数テーブルのjoinが、社員コードから社員名をとってくるとか商品コードから商品名をとってくるとかだったら、joinの必要すらない。
勝手にたぐってくれる。
パフォーマンスが気になるときにjoin書く。
0153nobodyさん2005/06/25(土) 05:20:41ID:???
>>151
152みたいな、関連データをひっぱってくるのがすごく楽。
定義ファイルとかマッピングクラスとかは、自動的に書いてくれるツールがあるから、手書きは補正程度。
0154nobodyさん2005/06/25(土) 05:37:48ID:???
JOINというか、複数テーブルをエンティティ間の関連という形で実現している。
実際に発行されるSQL文はJOINしたものを発行するか、テーブルごとに発行するかを設定により選択可能。
たくさんのオブジェクトを引っ張ってきては困る場合は遅延ロードを使えばOK。
設定ファイルはMiddlegenやXDocletで自動生成。
0155nobodyさん2005/06/25(土) 08:58:57ID:???
社員グループマスターと社員区分マスターと社員マスターがあって
社員グループコードと社員区分コードを指定して
社員オブジェクト(DTO)を取得するときもORマッピングだと大丈夫なの?

JDBCだと3つのテーブルをjoinしてwhereで条件をつけるんだけど
0156nobodyさん2005/06/25(土) 11:34:52ID:???
>>155
社員マスタのグループコードと区分コード指定するだけだろ。joinの必要なし。
抽出だけならJDBCでもjoinの必要なし。
0157nobodyさん2005/06/25(土) 12:10:30ID:???
>>154
いまからやるなら、Hibernate Annotations使って設定ファイルなしでやるのがおすすめ。
0158nobodyさん2005/06/25(土) 13:09:13ID:???
>>156
それじゃあ
社員情報を表示するときに、
社員オブジェクトの社員グループコードから社員グループオブジェクトの社員グループ名を検索するわけ?

社員オブジェクトの取得時に
社員グループ名と社員区分名を取得したいときはORマッピングってどうなるの?
0159nobodyさん2005/06/25(土) 15:45:46ID:???
WHERE 社員.社員区分=? AND 社員.社員区分コード=?
とすると適切な検索をしてくれる。
JOINして検索するかどうかは判断できるぐらいにHibernateは賢い。
(キャッシュになかったらJOINして検索してくれる)
ちなみに、HibernateはRDBに対して実際に発行されるSQL文をログやコンソールで
見ることが出来るよ。
0160nobodyさん2005/06/25(土) 19:26:08ID:???
>>159
(・∀・)ソウダッタノカー!
(・∀・)イイジャンソレ!
0161nobodyさん2005/06/26(日) 08:49:53ID:???
>>158
Lazy Lodingを指定するとそうなる。
で、そのときでも同じオブジェクトはキャッシュする。

Lazy Lodingしなければ、最初の取得時にとってくる
"from Shain s join ShainGroup g join ShainKubun k"
とか書けば、条件はマッピング定義から勝手に判断してくれる。
0162nobodyさん2005/06/26(日) 16:06:06ID:???
ちょっとtomcatの質問になってしまうんですが、どうかお願いします。
環境は以下です
OS:windowsXP home
JRE:5.0
tomcat:5.5.9

"http://localhost:8080"で接続すると、tomcatのTOPは表示されます。

eclipseで"test"というプロジェクトを作成して、直下に"hello.jsp"というjspファイルを作成しました。
ブラウザで"http://localhost:8080/test/hello.jsp"に接続してみると
──────────────────────
HTTPステータス 404 - /test/hello.jsp

type ステータスレポート

メッセージ /test/hello.jsp

説明 The requested resource (/test/hello.jsp) is not available.
──────────────────────
といったメッセージが出て、表示されません。
かれこれ二日立ち止まっています。
いったい何が原因でしょうか?私の足りない頭でしょうか?
どうかお願いします。
0163nobodyさん2005/06/26(日) 17:06:11ID:icQN5iRw
EJBを使わずとも、ある程度のWeb開発はできると言われますが
それだとEJBを使うメリットって何なのでしょうか?

Webプロジェクトの開発において
EJBを導入することによって具体的に何が可能になるのでしょうか?
0164nobodyさん2005/06/26(日) 17:54:47ID:???
>>163
分散環境でいいことあるみたい
0165nobodyさん2005/06/26(日) 18:02:28ID:icQN5iRw
>>164
詳しく…
0166nobodyさん2005/06/26(日) 19:39:45ID:???
>>162
デプロイしろ
0167nobodyさん2005/06/26(日) 21:40:09ID:2qO04mrj
一般的にプロジェクトの開発時に
フリー、シェア含めて一番使われているAPサーバって何なんでしょうか?
もしベストテンや使用シェアなどがあれば教えてください

DBだとオラクルやDB2が人気だと思いますが…
0168nobodyさん2005/06/26(日) 21:55:23ID:???
>>167
JBOSS?
WebSphere?
0169nobodyさん2005/06/26(日) 23:01:13ID:???
商用ではWebLogic/WebSphereが2topだね。
次点でOracle。
意外にInterstageも多い気がする。
開発者人気ではTomcat/WebLogic/JBossなんじゃね?
0170nobodyさん2005/06/27(月) 00:36:18ID:???
>>169
世の中のWeb開発の8割はWebLogic/WebSphereだったっけ?
0171nobodyさん2005/06/27(月) 12:10:54ID:nRBU1AZe
perlのexit()みたいなのってどうやんの
0172nobodyさん2005/06/27(月) 13:17:03ID:???
>>171
System#exit
0173nobodyさん2005/06/28(火) 02:39:08ID:???
tomcat5.0.30が文字化けで使い物にならねぇたじけてくれぇ
Eclipse、server.xml、web.xmlにもUTF-8で文字コード指定しているが
?????ばかっりだ
0174nobodyさん2005/06/28(火) 04:07:15ID:???
>>173
質問内容が使い物にならないんで助けてくれ。
0175nobodyさん2005/06/28(火) 07:33:24ID:lqYGe2ED
ヒント:UTF-16
0176nobodyさん2005/06/28(火) 14:33:38ID:bmwUbQUV

【Hibernate】について再度質問させてください。不勉強を覚悟でお聞きします。
どうかお読みになった方々がご気分を悪くされなければいいのですが・・・

PostgresとMySQL、MS-SQLにはそれぞれ方言があります。特に日付関数の
方言なんて酷いものです。

Hibernateを使うということは、この方言を隠蔽できるということでしょうか。
私はSunのAppSERVER8が一つのパッケージになっていて気に入っているのですが、
もし、Hibernateがそのような方言を隠蔽することができるのでしたら、
MySQLからAppSERVER8にもともと付属しているPOINTBASEを使おうと考えています。

JBOSS+HIBERNATEをJBOSSに付属してるHSQLで動かしている方ともお話し
仕手みたいです。DB板ではHSQLの評価が高いですね。

私はECLIPSE+JBOSS+HIBERNATE+HSQLに大変興味がありまして、今後は
この組み合わせで少しづつ勉強したいと思っています。

また、どうぞ宜しくお願い致します。

>>173
お使いのサーバーに余裕があるのでしたらSUNのAPPSERVER8をお奨めします。
アンインストールも優しいですので、試してみる価値あります。
0177nobodyさん2005/06/28(火) 20:34:32ID:???
>>176
PostgreSQLが使える環境で、わざわざHSQLDBを使う必要はないと思うね。
方言?dialectでぐぐれ。
0178nobodyさん2005/06/28(火) 21:37:26ID:???
ここで聞く事じゃないと思うのですけど、他にスレが見つからないので…
ttp://www.jboss.org/ が一日中繋がらないんだけど、漏れだけ? それとも何かメンテ中...?
01791782005/06/28(火) 21:41:25ID:???
ぬあ、自己解決。散々待たされた後マンテ中です、と出てきますた…すんません。
0180nobodyさん2005/06/29(水) 04:38:18ID:???
>>176
Hotonndono Hougen Ni Taiou Dekiteru Yo!
0181nobodyさん2005/06/29(水) 10:30:02ID:???
>176
あれこれ分かりようもないことを考える前に手を動かせ。
やって見てから書き込め。
>Hibernateを使うということは、この方言を隠蔽できるということでしょうか
どういう情報収集すればこんなことすら分からないのかが理解できんな。
それっぽい単語を繰り返し言って満足感を得たいだけならチラシの裏に、な。
0182nobodyさん2005/06/29(水) 11:01:44ID:???
>>176
そのへんを透過的に扱えないとフレームワークの意味がないでしょ。
0183nobodyさん2005/06/29(水) 12:02:37ID:???
興味があるといいながら、まるで試した気配がないな。
0184nobodyさん2005/07/01(金) 14:23:15ID:yr5B0l2Q
みなさん、いつも、どうもありがとうございます。
>>140
で問題になっていることは、例えば

DBに登録された
従業員のうちで4月に登録された従業員だけ抽出する
といったとき、SQLでは SELECT * FROM employee WHERE reg = 4
とすればいいだけなのに、Hibernateだと
いったん全ての従業員のJavaBeanをメモリの中に作ってしまって、
それから reg = 4 だけを抽出する。

といった問題を指摘されているのでしょうか。

>>182
透過的とは上手な表現ですね。なるほど。
0185nobodyさん2005/07/01(金) 14:30:46ID:???
>184
市ね
0186nobodyさん2005/07/01(金) 14:54:31ID:???
>>184
そんな問題はないし、指摘していない
0187nobodyさん2005/07/01(金) 16:19:42ID:???
>>184
too Muchi!
0188nobodyさん2005/07/01(金) 17:02:15ID:???
日本語訳:ムヒ塗りすぎ
0189nobodyさん2005/07/03(日) 20:12:43ID:???
セッションが切れたときにログイン画面まで戻したいんだけど
フィルター使って毎回チェックするのが普通?
それともすべてのJSPにインクルードしたJSP(〜さん。こんにちは見たいなのが
表示されてる画面上のヘッダー)でしょりしたりする?
0190nobodyさん2005/07/03(日) 22:28:55ID:???
好きなように。
0191nobodyさん2005/07/05(火) 21:24:29ID:cSKKDHID
JSF の <h:form> によって生成される HTML の <form> タグを、
method="post" じゃなく、 method="get" にしたいのですが。
なんか方法ありまつか?
0192nobodyさん2005/07/06(水) 11:45:25ID:???
http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/tlddocs/h/form.html
> The value of the "method" attribute must be "post".

post じゃなきゃ駄目と明記されてるけど。

俺は使ったことないから分からんが、taglib 弄って
何とかなったりならなかったりするかも知れないな。
0193nobodyさん2005/07/06(水) 14:02:24ID:???
>>189
うちはフィルタでやってるよ。
セッションって勝手に作られるときがあるんで特定のタグを
ログイン時にセッションに書き込んでフィルタで毎回チェックしてる。
(ログイン画面なんかのチェック除外のURLはweb.xmlのInitParameterに設定してる)
0194nobodyさん2005/07/06(水) 14:05:54ID:???
>>189
> それともすべてのJSPにインクルードしたJSPでしょりしたりする?
あらゆる JSP で include が行われるわけじゃないし filter のほうが汎用性が高いと思う。
0195nobodyさん2005/07/07(木) 10:36:02ID:???
JSPではログインに限らず、処理をしない。
0196nobodyさん2005/07/07(木) 16:29:38ID:???
失礼します。

昨日とあるサイトを見せられ、改造しろといわれて中を見て、
一日経ってどうやらこれは「XML+jsp/Servlet+JavaBeans」で作られているらしい
ということが分かってきたような段階です。

aspの経験はあり、似たような感じのjspはなんとか動かせたのですが、
実際に作る際にはロジック部分はServlet、JavaBeansに切り分けて書いているようです。
そこでとりあえずjspからBeansを呼んでみようとしたのですが、うまくいきません。

----------------------
ROOT/WEB-INF/classes/test1.class 作成
>public class test1 {
      ↓
ROOT/test.jsp 作成
><jsp:useBean id="obj_test" class="test1" scope="session" />
      ↓
>C:\Tomcat4.1\work\Standalone\localhost\_\test_jsp.java:77: シンボルを解決できません。
>シンボル: クラス test1
>場所  : org.apache.jsp.test_jsp の クラス
>      test1 obj_test = null;
----------------------

そこで質問なのですが、
jspからJavaBeansを使用する際に必要な事は、以下に挙げる以外にありますでしょうか?
●WEB-INFの下にclassesフォルダを掘る。(どこかの設定でpathを通す必要あり?現状何もしてません)
●classesフォルダの下に任意の名前のコンパイルしたclassファイルを置く。
●jsp固有のタグを使用してインスタンスを生成する。

以上、ご教授宜しくお願いします。.
0197nobodyさん2005/07/07(木) 16:43:47ID:???
どこかの設定でpathを通す必要あり?
→不要。

JavaBeansは、デフォルトパッケージ(パッケージ指定無し)で作ってはいけない。
必ずパッケージ宣言をし、/WEB-INF/classes の下にパッケージツリー構造のフォルダを作成して
そこにコンパイル済みクラスファイルを配置する。
あと、クラス名は大文字から始めるべし。言語仕様上は小文字から始まる名前でも動作するが
Sunでは推奨していないし、業界全体でもクラス名は大文字から始める習慣が浸透している。
コード中で変数名なのかクラス/インタフェース名なのか区別しやすいからね。
0198nobodyさん2005/07/07(木) 22:35:07ID:???
>>196
いまから使うならTomcat4.1じゃなくTomcat5.5を使ったほうがいいよ。
まだ日本語版でてないけど、NetBeans4.1使えばweb.xmlエディタもついてるので、作業しやすい。
0199nobodyさん2005/07/08(金) 09:27:12ID:???
>198

>昨日とあるサイトを見せられ、改造しろといわれて中を見て、
と書いてあるが。
5.5だとJDKまで入れ替えろってことか。きびしいな。
0200nobodyさん2005/07/08(金) 09:39:15ID:???
>>199
JDKも最新つかっときゃいいんじゃねぇの?
あぁ、「とあるサイト」を改造して別のサイト作るわけじゃないのね。
0201nobodyさん2005/07/08(金) 10:36:39ID:???
>>197
教えて頂いた通り、classesの下に任意のフォルダを作成し、
その名称をパッケージ名とすることで問題なく動きました。
名称の約束事等も、大変参考になりました。
ありがとうございます!

>>198-200
仰るとおり既にある環境がtomcat4.1なんですが、開発(作業)環境の問題はたしかにあるんですよね。。
私の偏見かもしれないんですが、オブジェクト指向系の開発環境って
エディタが勝手に各種設定をやってくれるってイメージがあるので(結構な数のBeansをコンパイルする時等)、
そこら辺も調べてます。
0202nobodyさん2005/07/08(金) 11:54:27ID:???
オブジェクト指向系ではない開発環境はほとんどないと思うが・・・
0203nobodyさん2005/07/08(金) 20:13:04ID:4YhNblk4
Tomcat 5.0.18 を使用していますが、開発中のコードで、
内部サーバーエラー 500 と出るのは解りますが、
肝心のメッセージ内容が、 "org.apache.jasper.JasperException: ???????"
って表示されるので、原因を知ろうにも、何が悪いのか解りません。

何をどうすれば、 ??????? の部分がちゃんと読めるようになりますか?
0204nobodyさん2005/07/08(金) 20:15:50ID:???
5.0.28以降を使う
0205nobodyさん2005/07/08(金) 20:41:43ID:4YhNblk4
>> 204
Tomcat のバージョンを 5.0.28 にしたら治った。。
ありがとうございます。

あー、疲れました。
0206nobodyさん2005/07/09(土) 04:52:09ID:???
どうして最新版を使わずに悩むのか、謎だな。
0207nobodyさん2005/07/10(日) 16:40:51ID:???
謎という程でもない
0208nobodyさん2005/07/12(火) 14:49:27ID:???
>>33と同様に
Tomcat4.1でContextを追加して別のプロジェクト(?)を追加したいのですが
追加すると
Tomcatが勝手に終了してしまいます。
>>43にContextを追加するなとありますが
4.1で追加すると何か問題があるのでしょうか?
0209nobodyさん2005/07/12(火) 14:56:46ID:???
>>33 への回答は >>41。

>>43 が何を言いたかったのかは >>43 にきいとくれ。
0210nobodyさん2005/07/12(火) 14:59:37ID:???
>>43ではないが・・・
server.xml を直接編集せずに
コンテキスト設定ファイルを作ってそれをデプロイしろってことでしょ?
0211nobodyさん2005/07/14(木) 00:32:21ID:???
TomcatでFTP通信したいんですが上手くいきません・・・
誰か簡単に手順を教えてください( ´Д`)
0212nobodyさん2005/07/14(木) 01:04:30ID:???
・FTPサーバーに接続する
・コマンドなげる
・ファイルやりとり
・接続閉じる
0213nobodyさん2005/07/14(木) 21:59:43ID:ruRs12+o
>>211
・http://www.amazon.co.jp/exec/obidos/ASIN/4774121681/ を買う
・読む
・理解する
・プログラムを作る
・実行する
・(゚Д゚)ウマー
0214nobodyさん2005/07/15(金) 05:13:24ID:???

jakarta-tomcat-5.5.9をlinuxサーバにインストールし、

http://host:8080/servlets-examples/servlet/HelloWorldExample
とりあえずこれがブラウザから実行できるようになったので、
では自作プログラムをと思ったのですが、

HTTPステータス 404 -
The requested resource (/TEST/servlet/test) is not available.

このエラーです。

javac -classpath /usr/jakarta-tomcat-5.5.9/common/lib/servlet-api.jar test.java
これでコンパイルは出来ていて、web.xmlの中でservlet-name,servlet-classの指定もしたのに、
ブラウザで実行できません。

また、web.xmlはそのままで、
HelloWorldExampleの方を同じ方法でコンパイルすると、やはりコンパイルは出来るのですが、同じエラー(HTTPステータス 404 )です。

オリジナルの容量が  2056 HelloWorldExample.class
上のコンパイルでは  1721 HelloWorldExample.class
となっているので何かコンパイル時に足りないことがあるのかと思うのですが、
どのような指定が正しいのでしょうか?
0215nobodyさん2005/07/15(金) 06:52:29ID:???
>>214
web.xmlに指定した内容をはりつけてみろ
0216nobodyさん2005/07/16(土) 08:05:51ID:???

/servlet-examples 以下を /testに全てコピーして、
/test/WEB-INF/web.xmlにこれを追加

<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
....
</servlet>

<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/HelloWorld</url-pattern>
</servlet-mapping>


でも
HelloWorldExampleの部分は触れていないのですが
HelloWorldExampleをコンパイルすると
オリジナルと容量が変わって実行できなくなるというのはどういうわけなんでしょう?

HelloWorldExampleをコンパイルする前(オリジナルのファイル)を実行する
( host:8080/test/servlet/HelloWorldExample をブラウザから開く)と
ちゃんと実行できるのですが、
このサンプルファイルをコンパイルし直して,/test/WEB-INF/classes(オリジナルに上書き)コピーしても実行できていないということは
やはりコンパイル方法
javac -classpath /usr/jakarta-tomcat-5.5.9/common/lib/servlet-api.jar ...java
これがおかしいと思うのですが
web.xmlの設定の問題なのでしょうか?

0217nobodyさん2005/07/16(土) 09:16:30ID:6Cm0TSY1
server.xml
0218nobodyさん2005/07/16(土) 09:43:22ID:???
/test きってないんだねぇ
0219nobodyさん2005/07/16(土) 10:13:17ID:???
そんなところで悩むなら、おとなしくNetBeansでも使って勉強しろと思うのはおれだけか。
0220nobodyさん2005/07/16(土) 12:01:49ID:???
>>219
うん、おまいだけ。
肝心なところをわからないままで進めてどうする。
0221nobodyさん2005/07/16(土) 12:14:25ID:???
HTTPステータス 404 -
The requested resource (/TEST/servlet/test) is not available.

このエラーを見る限り、ブラウザからは
http://localhost:8080/Test/servlet/test をリクエストしているように見える。
web.xmlをそのように設定しているのなら
http://localhost:8080/test/servlet/HelloWorld だろ。
0222nobodyさん2005/07/16(土) 12:16:18ID:???
コンパイル後のサイズなんて気にするな。
コンパイラによっても変わるし、コンパイル時のオプションによっても変わるから。
02232142005/07/16(土) 13:31:53ID:???
ありがとうございます
>>221

はい、こちらを見ています。
http://host:8080/test/servlet/HelloWorld
http://host:8080/test/servlet/HelloWorldExample
こちら側の実際の名前と説明時の名前が一致していなくてすみません


>>220
どうしてもわからないのは
インストール時にサンプルとしてついているHelloWorldExample.java をコンパイルしても
web.xml等設定を全く変えていないのに

HTTPステータス 404 - /test/servlet/HelloWorldExample
type ステータスレポート
メッセージ /test/servlet/HelloWorldExample
説明 The requested resource (/test/servlet/HelloWorldExample) is not available.

もちろん/test/WEB-INF/classes/HelloWorldExample.class は存在しています。
これが、
オリジナルのファイルであるとちゃんと実行できているのに、HelloWorldExample.javaをコンパイルして
HelloWorldExample.class と置き換えると上のエラーが出るのです。
0224nobodyさん2005/07/16(土) 13:42:21ID:???
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
....
</servlet>

クラス名がHelloWorldExampleなのに、なんで設定はHelloWorldなんだ?
0225nobodyさん2005/07/16(土) 16:48:31ID:???
ツールで勝手にやってくれるようなところで悩むより、プログラムの部分で悩んだほうがいいと思うが。
02262142005/07/16(土) 17:35:59ID:???
もちろんweb.xml中には
<servlet>
<servlet-name>HelloWorldExample</servlet-name>
<servlet-class>HelloWorldExample</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldExample</servlet-name>
<url-pattern>/servlet/HelloWorldExample</url-pattern>
</servlet-mapping>
この記述もあります。

>>216 >>223
オリジナルのweb.xml,HelloWorldExample.classのままだとちゃんと実行できているのに、
オリジナルのweb.xmlのままでHelloWorldExample.javaをコンパイルしてHelloWorldExample.class
を作ると、
HTTPステータス 404 -
のエラーなのです。

現在、web.xmlはオリジナルのままです。
そのままだとちゃんと実行できているのに、
HelloWorldExample.javaをコンパイルしてHelloWorldExample.classを作り、オリジナルの上に上書きすると、実行できなくなるのです。

要するに、自前コンパイルのファイルは全く実行できていないのです。

下記、ソースコードです。
これを、 javac -classpath /usr/jakarta-tomcat-5.5.9/common/lib/servlet-api.jar HelloWorldExample.java
とやってコンパイルします。
コンパイル時にエラーは全く出ません。

02272142005/07/16(土) 17:36:53ID:???
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorldExample extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
ResourceBundle rb =
ResourceBundle.getBundle("LocalStrings",request.getLocale());
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
String title = rb.getString("helloworld.title");
out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
out.println("<a href=\"../helloworld.html\">");
out.println("<img src=\"../images/code.gif\" height=24 " +
"width=24 align=right border=0 alt=\"view code\"></a>");
out.println("<a href=\"../index.html\">");
out.println("<img src=\"../images/return.gif\" height=24 " +
"width=24 align=right border=0 alt=\"return\"></a>");
out.println("<h1>" + title + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
0228nobodyさん2005/07/16(土) 23:52:16ID:???
>>226
jakarta-tomcat-5.5.9/logs/catalina.out にエラーメッセージが出ているだろう?

jakarta-tomcat-5.5.9/webapps/servlets-examples/WEB-INF/classes から
LocalStrings.properties を /WEB-INF/classes にコピーしてみろ。
02292142005/07/17(日) 11:43:16ID:???
LocalStrings*はすべてコピー済みです。
念のためもう一度コピーしましたが何も変わりません。


jakarta-tomcat-5.5.9/bin/startup.sh
jakarta-tomcat-5.5.9/bin/shutdown.sh
Using CATALINA_BASE: /usr/java/jakarta-tomcat-5.5.9
Using CATALINA_HOME: /usr/java/jakarta-tomcat-5.5.9
Using CATALINA_TMPDIR: /usr/java/jakarta-tomcat-5.5.9/temp
Using JRE_HOME: /usr/java/j2sdk1.4.2_04

catalina.outに追加された部分は、

This release of Apache Tomcat was packaged to run on J2SE 5.0
or later. It can be run on earlier JVMs by downloading and
installing a compatibility package from the Apache Tomcat
binary download page.

0230nobodyさん2005/07/17(日) 12:06:15ID:???
>>229
書いてあるとおりだ!ボケ!!!

Tomcat5.5の動作環境を調べてみろ。
ちゃんと必要条件を満たしているのか???
まあ、パッチを当てればその環境でも動くのだが。
02312142005/07/17(日) 13:45:57ID:???
コンパイルしない
最初からサンプルとしてついているclassファイルはこの環境のままでちゃんと実行できているのですが
なぜなんでしょうか?
0232nobodyさん2005/07/17(日) 13:59:20ID:???
そんなことで3日悩むなら、NetBeans使ってサーブレットの勉強を3日間進めたほうが有意義だと思うが。
それで動かしなれたら、設定とかで3日悩んだりもしないだろうし。
0233nobodyさん2005/07/17(日) 14:07:11ID:???
>>232
「Servletの作成」だけにスコープを絞るのならそうだろうね。
Servletの動かし方を知りたいのなら、その方法はダメ。
「よくわからないけど、動いてしまっている」ままの状態で進んじゃってもね・・・
0234nobodyさん2005/07/17(日) 14:11:34ID:???
>>231
想定外のことが実行できちゃってるだけ。
02352142005/07/17(日) 14:15:06ID:???
設定の問題なのでしょうか?

サーブレットは現在、ブラウザから問題なく実行できています。(サンプルとして最初からついているclassファイルは)

web.xmlの設定で、別のURLを対応付けさせるということも出来ています。


ただ一点、
自分でコンパイルしたclassファイルだけが実行できないのです。
(サンプルファイルとして最初からついているソールファイルに対しても)




これはコンパイル(に関する設定)の問題だと思うのですが違うのでしょうか?


javac -classpath /usr/jakarta-tomcat-5.5.9/common/lib/servlet-api.jar HelloWorldExample.java
このようにしてコンパイルします。
コンパイルエラーは出ません。

javacの変わりに、
 /jdk1.5.0_04/bin/javac と指定してみても同じです。(コンパイルエラーは出ず、classファイルが生成されます)
0236nobodyさん2005/07/17(日) 14:32:21ID:???
>>235
コンパイルはjdk1.5で行って、実行はjdk1.4.2で行われてるからじゃないのか?
0237nobodyさん2005/07/17(日) 17:32:18ID:???
>>233
なにも動かないよりまし。
動かせば理解しやすくなる。というか、動かないことには何も理解できない。
0238nobodyさん2005/07/17(日) 19:44:24ID:???
そもそも、NetBeansなんていうマイナーな開発環境はおすすめしかねる。
この業界、デファクトスタンダードに乗っておくのが吉。
0239nobodyさん2005/07/17(日) 23:53:37ID:???
最初の勉強だけNetBeans使ってもいいと思うが。
Webアプリの入門とSwingの入門にはいいと思うよ。
実際の開発に使えないほどヘボくはないし。
■ このスレッドは過去ログ倉庫に格納されています