トップページphp
984コメント425KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/06/08 11:03ID:Kkr1yl67
って無いよな?
というわけでつくたよ。
035233902/11/06 03:10ID:brJh6AGy
>>351さん
なるほど。よくわかりました。ありがとうございます。

しつこくてすいませんがまだ質問があります・・・
しかしもってexamplesにあるweb.xmlに追記せずに動いたということはexamplesにあるweb.xmlには
 <servlet>
  <servlet-name>TestServlet</servlet-name>
  <servlet-class>sample.test.TestServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>TestServlet</servlet-name>
  <url-pattern>/servlet/TestServlet</url-pattern>
 </servlet-mapping>
というような一つのクラスファイルのみにむけた記述以外にも何か他に特別な記述があったのでしょうか?
0353nobodyさん02/11/06 20:46ID:???
>>352
そういう記述があったか、もしくは Servlet Invoker が有効になってて /servlet/org.hoge.SampleServlet
というクラス名指定の呼び出しをしていたかのどちらかだろう。
0354nobodyさん02/11/07 01:38ID:+oMkddUQ
アプリケーションAのWEB-INF/classes/packageName/ 以下にクラスが
あって、アプリケーションBのServletも、アプリケーションAのクラスと
同じパッケージ下に置きたい場合は、どこに、アプリケーションB用の
サーブレット等のクラスを構築したら良いでしょうか?

やはり、アプリA/WEB-INF/classes/packageName/ 以下に
アプリBのサーブレットを置かなくてはダメなのでしょうか?

ポイントは、アプリBから、現状、アプリAのフォルダに配置してある
共通クラスを利用する必要があるのと、会社のドメインのTLDから
パッケージ名をつけているので、共通化したいです。


0355nobodyさん02/11/07 01:57ID:???

アプリA/WEB-INF/classes/net/2ch/hiroyuko/umaibou.class
アプリB/WEB-INF/classes/net/2ch/hiroyuko/umaibou.class
これじゃダメ?

ソースだけは一括管理しておいてコンパイルは2回行う
javac -d アプリA/WEB-INF/classes net\2ch\hiroyuko\*.java
javac -d アプリB/WEB-INF/classes net\2ch\hiroyuko\*.java

0356nobodyさん02/11/07 02:01ID:???
ln -s アプリA/WEB-INF/classes アプリB/WEB-INF/classes

classes まるごとじゃなくてもサブパッケージごとでリンク張れ。
Windows だと? 2000 以降ならパーティション丸ごとディレクトリにマウント
できるだろ。
0357nobodyさん02/11/07 02:06ID:???
パーティションのマウントでは無理だな、スマソ
0358nobodyさん02/11/07 03:22ID:???
>>354
共通部分のクラスを jar にまとめて $JAVA_HOME/lib/ext に入れとくとか
CLASSPATH に設定しておくとか。
035935402/11/08 01:18ID:uREFPWAh
ありがとうございます。
大体の方針はわかりました。

ところで、InvokerServletはOffにして、ServletMapping経由で
サーブレットにアクセスさせるなら、classes以下にサーブレットクラスを
配置しなくても動くんでしょうか?これできるならクラスパス設定すれば
解決しますね。あとは、共通領域に置くか、否かという話になりますね。

(ちなみに、Tomcat4.1.12(? 最新を利用)です。)
0360nobodyさん02/11/08 02:54ID:???
>>359
実運用時は Web アプリケーション jar にまとめて WEB-INF/lib にぶち込んで
おくのが普通。この場合 CLASSPATH を通す必要がなく、Web アプリケーション
コンテキストでクラスローダーが分けられる。WEB-INF/classes 以下のクラスは
オートリロード対象なので、(オートリロードがオンになってるなら) 開発時に
チョコチョコ修正するところだと思っておけば良い。システムの CLASSPATH 環境
変数にサーブレットやそれを含む jar を通すのはあまり一般的ではない。
0361nobodyさん02/11/08 03:04ID:???
> Web アプリケーション jar にまとめて
  ↓
Web アプリケーションで使うクラスを jar にまとめて
036235402/11/08 11:18ID:JbsLZRZL
うーん。Winで開発して、Linuxが本番なので、やはり共通部分は
jar化してサーバースコープで共有化しておいて、サーブレットは、
WEB-INF/lib以下にjar化しろってのが正解ですか。

開発がWinであることと、数ヵ月後の保守を考えたら、各Webアプリの
サーブレットには、共通モジュールとは違うパッケージ名をつけた方が
良さそうですね。jp.co.companyを頭につけちゃうと、jpのフォルダが
クラスパスの最初に見つかってしまう場所に置かなきゃいけないんですよね?

ショートカットなどのOS固有の方法は、扱いが複雑になるので避けたいです。
036335402/11/08 11:45ID:JbsLZRZL
自己レスですが、カレントも含め、ちゃんと全部のクラスパスを指定しておけば、
パッケージ階層以下の構造が複数のフォルダに分かれても、クラスの検索が
可能なんですね。

サンプル作って確認しました。スマソです。
ということで、パッケージ名は今のまま、本番運用時には共通モジュールを
jar化して切り出すことにします。

結局、時間をかけて、358さんの内容を理解したって感じです。
ありがとうございました。
0364nobodyさん02/11/08 17:23ID:B5HgIdqz
invokerをoffにした場合、WEB-INF配下にweb.xmlがないと動きませんよね。
その場合のもっとも簡単なweb.xmlの記述の仕方を教えてください。
要するに、サーブレットが起動すれば(classファイルを認識してくれれば)
いいレベルです。
0365nobodyさん02/11/10 20:02ID:ykyYofKk
jspで扱ってるrequestオブジェクトの中身を、JAVAクラス内で使うには、

public void proc(HttpServletRequest req) {}

と記述する他方法は無いのでしょうか。
0366名無しさん@Emacs02/11/11 01:15ID:???
>>365
requestオブジェクトは、jspの場合、何も宣言しなくても使えるか
ら、そんな訳の分らん錯覚に陥ってるんだろう。
jspファイルから生成されたjavaのソースファイルを見れば分るが、
jspのページを生成する_jspServiceメソッドは、コンテナが、
(予め生成した)requestやresponseオブジェクトへの参照を渡してる
から、requestとかがjsp内で使えるんだよ。

要するにjavaの基本と同じで、参照を何らかの形で渡さないと使えない。
最も、customタグのように、ハンドラ作って、jspcに組み込めば、引数に
渡さなくてもいいようにできるけど、だったらcustomタグ使うか、
requestオブジェクト渡した方がまし。
0367nobodyさん02/11/15 22:05ID:???
TomcatでIP制限する方法ってありますか?
それと、Apache+Tomcatでクラスファイルをオートリロードする方法。
知ってる方がいたら是非教えてください!
0368名無しさん@Emacs02/11/15 22:43ID:???
>>367
フィルタ使うか、OS側で制限するしかない。
0369nobodyさん02/11/16 01:44ID:???
>>367
Apache と連携してるなら Apache 側で出来ないのか?
オートリロードの設定は $TOMCAT_HOME/conf/server.xml の中で。
0370nobodyさん02/11/16 03:18ID:???
認証をtomcatに任せたいんです。
ユーザ管理はmysqlでやってます。
JDBCRealm使ってる方居ますか?
検索しても引っかからないんです。
0371nobodyさん02/11/16 06:44ID:???
>>370
英語だが付属のユーザマニュアルか何かに付いてなかったか?
037237002/11/16 14:02ID:???
>>371
英語しか無いですか?
頑張って読んでみます。
やりたいことはアクセス制限とログの取得です。
037336702/11/16 15:52ID:???
>>369
apachedと連携してると、server.xmlのcontextでreloadable="true"にしててもservletクラスのアンロード、リロードがされないんですよ...
tomcatオンリーならOKなんですが。
037436702/11/16 16:11ID:???
>>368
フィルタによるプログラムセキュリティのレベルはどのくらいなものでしょう?外部からフィルタを通さずにプログラムを実行されてしまう、なんてことはあり得ないのでしょうか?
0375nobodyさん02/11/16 22:19ID:???
>374
368ではないが、バグと設定ミスがなければ、おき得ない。
0376nobodyさん02/11/17 17:58ID:dnX2K2BK
JBossはインターネットに接続できる環境でなければ正常に動作しないというのは本当でしょうか?
実際やってみたところhttp://localhost:8080/が表示されませんでした。
またそれはなぜなのでしょうか?(すごく漠然とした質問ですが・・・)
037737002/11/18 22:28ID:???
JDBCRealm動きました。テスト用DBですけど。
server.xmlとweb.xmlに書き足すだけで動くんですね。
認証部分の実装は一切してません。
037837102/11/19 00:38ID:???
>>377
俺が言うのもナンだが後学のためにおせーて (w
0379novadyさん02/11/19 11:35ID:???
Apacheでのhttd.confのIndexesを削除するとディレクトリ構造が見れなくできますが、
webapps以下には適応されません。
どのようにしたら良いかお教えください。
0380nobodyさん02/11/19 12:49ID:???
Tomcat のバージョンはいくつだ。
0381novadyさん02/11/19 14:59ID:???
お騒がせしました。
listingsとmod_jk.conf-autoに手を加えて解決しました。
038237002/11/19 23:48ID:???
>>377
その1
ttp://www.ingrid.org/jajakarta/tomcat/tomcat-4.0b5/src-ja/catalina/docs/JDBCRealm-howto.html
に翻訳されたものがありました。最近出来たみたい。
標準のserver.xmlはuser.xml(users.xml?)を使う設定になってます。
ここをコメントアウトします。「Realm」で検索すれば見つかります。
その近くに各種DB用のテンプレートがありました。
あとは上記のURLの様にやれば出来ると思います。
connectionNameとconnectionPasswordは設定したほうが良いかも。
038337002/11/19 23:58ID:???
>>377
その2
ttp://kamakura.cool.ne.jp/oppama/ssja/tomcatauth.html
にMemoryRealmでのやり方が書いてました。
これを参考にしてweb.xmlを書き足せば動くと思います。
動かない場合はlogs/catalina.outを読めば分かると思います。
実はパスワードの暗号化はまだやってないんですけどね。
038437002/11/20 00:10ID:???
上の2つ参照先が違った。
>>378が正解。
apacheと連動させる場合はserver.xmlのapache-tomcat部分も
書きかえる必要があります。
0385nobodyさん02/11/20 14:49ID:B0p7tRKQ
tomcatでIEからxxxx.lzhファイルをダウンロードさせようとすると文字バケ表示になってしまいます。
web.xmlにmime-typeを追加すれば出来るのですが、あらゆる拡張子をダウンロードさせたいため、
mime-typeに指定なしのファイルをダウンロードさせるなにか良い方法はあるでしょうか?
0386nobodyさん02/11/20 15:12ID:dpW8VNzd
JavaBean からデータベースに SQL を投げる際に、
DB Server 自体が落ちているとかっていう情報を
拾うことは出来るんでしょうか?

DB は Oracle なんですが。
0387名無しさん@Emacs02/11/20 23:59ID:???
>>386
例外になったら落ちてんじゃない?
0388m02/11/21 23:59ID:2Ed6O/dE
                                     ∩     ∩
                                     | つ   「,"|
                                     .!,'っ_ ⊂_,! 
              ∩     ∩               /  ・ ヽつ ミ
              | つ   「,"|     ギュッ      ▼,__  | 
              .!,'っ_ ⊂_,!                (゚Д゚ ,)・|  ミ
              /  ・ ヽつ     ∩     ∩     (|   、)| 
  ̄ ̄ ̄ ̄ ̄ ̄\  ▼,__  |      | つ   「,"|     |   ・・| ミ
 しかばねだYO!>   (゚Д゚ ,)・|       !,'っ_ ⊂_,!      ヽ.._人 
 ______/   (|   、)|      /  ・ ヽつ       ⊂二⊃ ミ
               |   ・・|     ▼,__  |        .⊂二⊃ 
               ヽ.._人       (゚Д゚ ,)・|        ⊂二⊃ ミ
               ⊂二⊃       (|   、)|         ⊂二⊃ 
               ⊂二⊃       |   ・・|         ⊂二⊃ ミ
               ⊂二⊃       ヽ.._人 
               ⊂二⊃      ヾ⊆≡⊇ ″       みょーん
_________  ⊂二⊃____ ヾ⊆≡⊇ ″__________
0389nobodyさん02/11/22 18:06ID:b/1bts2b
地図と連動したiアプリ出会い掲示板を
java言語で制作したいです
手伝って下さい

実際に稼動し売上の50%あげます
0390nobodyさん02/11/22 23:07ID:???
>>389
わかりました。連絡先教えてください。
0391nobodyさん02/11/23 17:05ID:fnU7YKt0
jspとjavabeansについて質問です。
JavaBeansのオブジェクトを転送してjspファイルで使用したいのですが、
この場合、2行めのrequestオブジェクトに設定した名前と8行目に設定した
id="obj"のとこは一致させないといけないのでしょうか?
自分はforwardで呼び出されたjspが8行目で値が取り出され使用されていると思っているのですが。

0:呼び出し元:サーブレット部(CtrlServlet.java)
1:myJavaBean myObj = new MyJavaBean();
2:request.setAttribute("obj",myObj);
3:
4:RequestDispatcher rd = getServletContext().getRequestDispacther("/Output.jsp");
5:rd.forward(request,response);
6:
7:呼び出し先:JSP部(Outout.jsp)///////
8:<jsp:useBean id = "obj" class="ctrlServlet" scope="request"/>




0392nobodyさん02/11/23 17:57ID:UbdTqBEx
JBossのServletAPIでコンパイルしてクラスファイルを作成し、
jarでWARファイルを作成してJBossにデプロイしたらエラーがでました。
エラーメッセージは以下の通り

[ERROR,AutoDeployer] DeploymentInfo failed:file:/D:/ProgramFiles/JBoss-2.4.6_Tom
cat-4.0.3/jboss/deploy/ROOT.war
org.jboss.deployment.J2eeDeploymentException: Error while starting ROOT.war: Err
or during deploy, Cause: org.jboss.deployment.DeploymentException: Error during
deploy, Cause: java.lang.IllegalArgumentException: addChild: Child name '' is n
ot unique

どなたかヒントください・・・
0393nobodyさん02/11/24 00:43ID:???
> この場合、2行めのrequestオブジェクトに設定した名前と8行目に設定した
> id="obj"のとこは一致させないといけないのでしょうか?

その通り。request、sessionなんてあたりのオブジェクトは
「名前の文字列=関連付けられたオブジェクト」
という形でAtrributeに登録される。


0394既出でつか?02/11/25 18:43ID:???
そういえば、おまえらJ2EE1.3.1 APIの
日本語オンラインドキュメントが公開されたみたいですよ?

http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/index.html
039535402/11/26 01:34ID:2NlroRg/
以前、複数のWebアプリ間で、classes以下の共有をしたいと書いた
ものですが、WindowsのTomcat4では、相互のパスをクラスパスに
書くことで、相互参照ができていたのですが、
LinuxのTomcat4に持っていったら動かなくなりました。

具体的には、自分のアプリのWEB-INF/classesの絶対パスをクラスパスに
設定すると(catalina.shに記述)、HttpServletExceptionが出て正常に動作しません。
そのパスを変えると正常に動作します。

Linuxに限りクラスパスに、自己アプリケーションのWEB-INF/classesを書いては
いけないなどの話ってあるのでしょうか???

ここでお聞きした話どおり、共通部をjarにまとめることで、目的の動作自体は
できてるのですが、WinでできてLinuxでできないというのが、どうも解せないところで。

0396nobodyさん02/11/26 04:12ID:???
>>395
>ものですが、WindowsのTomcat4では、相互のパスをクラスパスに
>書くことで、相互参照ができていたのですが、
>LinuxのTomcat4に持っていったら動かなくなりました。

単にclasspathが通ってないだけだろ。
System.out.println(System.getProperty("java.class.path"));
とでもして確かめてみれば?

そんな面倒な事しなくても、CATALINA_HOME/shared/classes or lib に配置するのでは
ダメなのか?試したことないが。
0397nobodyさん02/11/26 07:01ID:yx5pl41J
mysqlとjdbcの連動がうまく行きません
環境はTURBOLINUXです。

WNINDOWS2000serverの方がTOMCAT+MYSQLの構築は簡単なんですかねぇ?
0398nobodyさん02/11/26 08:22ID:???
WindowsもLinuxも変わらん。JDBCドライバコピーするだけ
0399nobodyさん02/11/29 15:24ID:???
スラッシュで終わるリクエストが来た場合,(禁止していなければ)
ディレクトリの一覧がクライアント返りますよね。この画面をServlet
で制御したいのです。実際のディレクトリをみてファイルを一覧を取
得して動的にページを作ればいいわけすが,.warにまとめてしまうと
「実際のディレクトリ」が存在しないので,この手が使えません。

.war内の特定のディレクトリ内にあるリソースの一覧を取得する方法
はないのでしょうか?
0400nobodyさん02/11/30 03:18ID:N3cPDgWW
JSPの質問でつ。

関数の中でhtmlを吐き出すときこういう↓書き方は無理なんですか? out.printしないとだめぽ?
%>
<HTML>
<HEAD>
<TITLE>test</TITLE>
<%
0401nobodyさん02/11/30 11:00ID:q4zNHxed
>400
フラグ検査だけを関数に切り出して、

<%! func定義 %>

<% if (func() == true){ %>
 テキスト情報
<%}%>

などとやる。
そうすれば、Servlet翻訳時に自動的にif文の間にout.printlnが挿入される。
0402nobodyさん02/11/30 23:17ID:VzfGXbBx
>>401
つまり一番外のスコープでしかむりぽってことでつか?
0403nobodyさん02/12/01 06:35ID:???
>>402
そんな馬鹿なことはするなってことだ。絶対に後で後悔する。
0404nobodyさん02/12/02 00:31ID:FZnx/Sv6
たとえばヘッダ部分は(いろんなページで)何回も使うから
サブルーチンにしといて…みたいなことはできないんでつか?
もちろんout.printすればできるだろうけど、

out.print("<HTML>");
out.print("<HEAD>");
// (ここらへんにTITLEやらMETAやらSTYLEやらSCRIPTやらイパーイ)
out.print("</HEAD>");

↑これじゃ嬉しくないっすよね。
ソースのごちゃごちゃさはPerlでCGI書くときとかわらん…
ダブルクォートはいちいちエスケープせなあかんし。

ASPならできるのにな(ぼそっ

なんか漏れが激しく勘違いしてるなら指摘してください。
0405nobodyさん02/12/02 00:51ID:???
// (ここらへんにTITLEやらMETAやらSTYLEやらSCRIPTやらイパーイ)

↑の部分を別ファイルにして <jsp:include page="そのファイル.jsp" flush="true" />
とやっときませう。

…JSP からじゃないのかな。サーブレットなら request.getRequestDispatcher("そのファイル.jsp").include(request, response)
してくれ。
040640302/12/02 06:53ID:???
>>404
>ASPならできるのにな(ぼそっ

何故ASPXで*出来なくなった*のかその無い頭で考えてみてください。
0407nobodyさん02/12/02 08:44ID:j/3KH6Gx
JSPにしてIncludeすればいいのに。ボソ
0408bloom02/12/02 08:53ID:Ss+94/LC

http://www.agemasukudasai.com/bloom/
0409nobodyさん02/12/03 06:45ID:Vbwn1Jvx
数行のインクルードファイルいっぱいでuzaaaaaa-----!!!な感じだな。
0410nobodyさん02/12/04 02:12ID:6EZVQnk9
実際、ウザーーーーなソースが多すぎる
0411nobodyさん02/12/05 11:12ID:???
cocoon XSPで、うま〜
0412nicebodyさん02/12/05 22:16ID:9IL6Ad5C
質問ですが。
サーブレット作ってみたんですが、よく分からんことがあります。
catch(Exception e){}とかだけだと、ちゃんと動くのに、
catch(NullPointerException nullpo){}とかを足すと、動かなくなって
しまいます。 どんな時にどんな例外が発生するのか、ほとんど知らんですが、
どの程度catchすればいいんでしょ?トリアエズ今は、知ってる限りのExceptionを
連ねて、コンパイル時にエラーが起きたものだけ削ってます。
ダメ??
0413nobodyさん02/12/05 22:29ID:???
412>>
何でもいいのでServletのサンプルを一度見たほうがいいよ。
Exceptionは、
try {
    :
}
catch( 自分で定義したException e ) {
    :
}
catch( Javaに登録されているException e ) { // NullPointerExceptionとかIOExceptionとか
    :
}
catch( Exception e ) { // java.lang.Exception(全ての例外の基底クラス)
    :
}
finally {
    :
}
という感じに記述する。
とりあえず、「ユーザ定義例外(もしあれば)」→「Javaに登録されている既知の例外(もし必要ならば)」→「Exception(これか必ずつける習慣をつけよう)」→「finally」の順に記述しよう。
知ってる限りのExceptionを並べるというのは意味がない。
NullPointerExceptionを記述するとエラーが出るというのは、try節の中に書いてある君のコードに、NullPointerExceptionを報告するコードが存在しないことを意味する。
「報告」の意味は、throwsでJavaの本を調べれ。てゆうか後は面倒くさいのでJavaの本を読んでくれ。

0414nicebodyさん02/12/05 23:07ID:???
>>413
ありがとうです。
もっと勉強しなくちゃです。っていうか、
僕の持ってる本にはfinary{}なんて書いてなかった。
0415nobodyさん02/12/05 23:16ID:???
> 僕の持ってる本にはfinary{}なんて書いてなかった。

DB接続を行う処理の場合は「必須」です。
てゆうかコネクションの解放にfinallyを使わない厨房ソースが多いこと・・・。

0416nicebodyさん02/12/05 23:21ID:???
>>415
あ、なるほど。DB接続とかをclose()しないといけないってことですね?
tryの中には書いていたけど、catchの方は気にしてなかったです。
0417nobodyさん02/12/06 00:47ID:???
DBのcloseはfinallyで書く。これ常識。むしろそこらへんで厨房度が分かる。
さらにfinallyの中にさらにtry...catchを入れるのが由!(今月号の日経OSでも載ってたNE)

ちなみにfinallyは正常ケースだろうがcatch節に飛んだケースだろうが、そのメソッドを抜ける際に必ず実行されるYO!

0418miya02/12/06 03:57ID:ICF5OpxX
すいません。今壁にぶち当たっているのですが、だれかたすけてください。
 Win2k + Tomcat4.1 + Apache2 で連携していて
 環境変数 CLASSPATH にC:\classesを追加しています

 /アプリケーションコンテキスト/WEB-INF/classes/TestServletから
 CLASSPATHに設定したC:\classesディレクトリ以下のクラスファイル
 が見えなくなっています。 コンパイル時は何ともないのに実行時に
 NoClassDefFoundErrorが発生してしまいます。

だれかたすけてください。うぅ。
0419nobodyさん02/12/06 08:32ID:???
J2EEではServletコンテナやAPサーバに勝手にclasspathを追加しないのが基本。
Tomcatなら環境変数CATALONA_HOMEを通して、common/libまたはcommon/classに必要なJARまたはclassを置く。
そうすればTomcatが起動時に勝手にこいつらにPathを通してくれる。
また、特定のWebアプリケーションからしか参照しないclassであれば、WEB-INF/classesまたはWEB-INF/libに配置してWAR化すること。

0420nobodyさん02/12/06 08:33ID:???
CATALONA_HOME

CATALINA_HOME

0421nobodyさん02/12/06 10:57ID:Kdf5QYtb
>>406
なんでできなくなったんですか?
0422nobodyさん02/12/06 20:02ID:aSWE3JmD
Win2000でtomcat4.0+apache1.3をmod_jk.dllで繋いでいるんですが、少々
困っていると言うか、疑問なんですけれど、web.xmlで設定した<url-pattern>が、
tomcat単体ではちゃんと反映されるのに、apache経由だと404になってしまいます。
これは正常なことなのか、はたまた僕の設定が甘いのか、ググってもイマイチ
それらしい答えがありません。はたしてどうなんでしょうか?
0423nobodyさん02/12/06 20:51ID:???
>>421
ソースぐちゃぐちゃ。メンテナンス性最悪
0424nobodyさん02/12/07 03:45ID:6B+N2QJl
>>423
そ、そうか?
0425nobodyさん02/12/07 03:50ID:NfROD7dM
>>407
結局、激しくインクルードファイルに分割するってことは
CGIやASPと同じくデザイナーさん泣かせなわけですね。
デザインとプログラムの分離は無理と。
0426miya02/12/07 08:42ID:dCIzefcY
>>419
419番さん、ありがとうございます。なんとか理解できました。これで先に
 すすむことができます。近いうちにまた壁にぶつかるとおもうけど・・・。
 J2EEも勉強しなくちゃいけないですね。

0427バイク犬02/12/08 09:12ID:???
Linux Apache 1.3.27、tomcat 4.0.4 で mod_webapps.so で連携を
計ってるのですが、やはり、DocumentRootを共有するってのは出来ないん
でしょうか?
webapps以下に、シンボリックリンクでapacheのDocumentRootを置いて
みたのですが、その場合、すべてtomcatに転送されている感じで、phpや
cgiが動きません。cgiはplain/textに、phpはmimeを吐かない書類として
実行されません。

上の方にproxyでとか、mod_jkを利用する方法なども見かけたのですが…
0428nobodyさん02/12/08 19:32ID:???
マルチポストしていいですか?
0429webApp02/12/09 01:37ID:6eYifm2a
WebSphereをアプリケーションサーバとしてJAVA開発を行っているものです。

複数端末でのユーザの2重ログインチェックを行いたいのですが。


ある端末Aのログイン画面で「user001」というユーザで
ログイン認証を行った場合、端末Aにユーザが
ログインしている間はその端末Aや
他の端末Bのログイン画面で「user001」というユーザで
ログイン認証を行えないようにしたいのです。

セッション変数を使用するという手もあるとおもうのですが、
1つのブラウザの範囲内でしかセッション変数の格納や取得ができないもの
と思っています。
全てのブラウザのセッション変数を管理するようなしくみなどないもので
しょうか?
なにかいい方法がございましたらご教授お願いします。
0430nobodyさん02/12/09 01:55ID:???
普通そういうものこそDBで管理しないだろうか(ログオン管理TBLまたは監査証跡TBLとか作って)。
DB使いたくないならStateful Session Beans。

0431workaholic02/12/09 03:01ID:???
>>429
俺も以前仕事でそんな処理を書いたことあるけど、
>>430 の言うように、さくっとDBで管理したよ。
つーか 完全にClientが別なのに(端末A,端末B)ステ付Session Beansで、
管理ってできるんだっけ???
043243002/12/09 11:39ID:???
ごめんStateful Session Beanは勘違い。
0433webApp02/12/09 12:20ID:10t8e7Hw
>>430,431
あの後、Stateful SessionBeanを調べてみましたが
どうも、別端末からは出来ないようです。
やはり、DBで管理しないといけないですか。
そうなると、ユーザがログアウトした場合を考えると
ログアウトボタンなどで正しい方法でログアウトして
くれる場合はよいのですが、ブラウザの×ボタンを押さ
れた場合、DBの情報を更新することが出来るのでしょうか。
0434workaholic02/12/09 12:39ID:rnIhPMMe
>>433
javaScript使って、onUnload(あるいはonBeforeUnload)等のイベント拾って、
「ログアウト」の旨を伝える内容を、自動submit。
それ以外の方法取りたかったら、もっとキっついClientサイドの
処理書かないといけない。ActiveX使うとか。
...っつても、処理内容はjavaScriptでやるのと同じだから、意味無し。
ギャフン。
043543002/12/09 13:08ID:???
タイマー使って定期的にDB調べて、一定期間アクセスがないユーザがいたらログアウト扱いで更新。
監査証跡の場合によく使う手口です。記録に残るのでタイムアウトでログアウトさせたという明確な証拠として残る。
ちなみに監査証跡にするんだったら、ユーザの1つ1つのアクションすべてに対してロギングするよ。
(いつ誰がどのページに遷移してどんな操作を行ったか、とか)

ユーザ管理(アクセス権管理やログオン制御も行う)+監査証跡という組み合わせって一般的だと思うんだけど。

0436nobodyさん02/12/09 22:31ID:???
>>429
まぁ 1 台構成ならファイルでも出来るわな。File#createNewFile() はアトミック性が
保証されてるし。

1) ログイン時に適当なディレクトリに <userid>.lock ファイルを作る。ファイル
  作成に成功すればログイン完了、失敗すれば二重ログイン扱い。

2) ロックファイルの作成に成功した場合、File#deleteOnExit() を仕掛けておく。

さらに一定時間経過したロックファイルを削除しなければならないので以下を処理が
必要。

1) ログインが完了したユーザのセッションに HttpSessionBindingListener を
  実装したオブジェクトをぶち込んでおく。このオブジェクトは valueUnbound()
  時に自分のロックファイルを削除する。

2) 適当なスレッドを立ててロックファイルの最終更新日から一定時間経過したもの
  を消すようなサーブレットを作成 (この場合、リクエストのたびに
  File#setLastModified() が必要)。このサーブレットをサーブレットコンテナの
  スタートアップに登録。init() でロックファイルをすべて消す処理を入れておくと
  良い。

ただ、ブラウザの×ボタンを押した時にはしばらくの間ログインできなくなるがな。
2重ログインを防止しようとすると避けられない問題。さもなくば同一 IP からの
2重ログインを許可するしかない。
043743602/12/09 22:36ID:???
同一 IP からの二重ログインは i-mode みたいなラウンドロビンプロキシ使ってる
端末には無効なのであしからず。
0438nobodyさん02/12/10 01:48ID:uIXkTSgk
Tomcat4.0.4、PostgreSQL7.3から配列をキャストしたいのですが

String[][] my_Array = (String[][])rs.getArray("name");

等とすると

「この型は declaration には不適合です。
 java.lang.String[][] から java.sql.Array には変換できません。」

と言われてしまいます。配列をキャストする、変換する方法ってないのでせうか?
043943802/12/10 04:04ID:???
まだ実装されていない…?
0440nobodyさん02/12/10 04:05ID:B9fPQtcJ
Tomcat4.1.12での話しなんですけど、
JakartaのOROやLog4jなど利用しよと思うんですけど、
今はstartup.shでCLASSPATHをガツガツ追加して動かしてるんですが、
もっとスマートに導入する方法あると思うんですけど、
教えてください。
0441nobodyさん02/12/10 04:56ID:???
>>440
$TOMCAT_HOME/lib/
以下にjarファイルをコピ。
0442nobodyさん02/12/10 08:39ID:???
>>438
java.sql.Arrayのドキュメントみれ
0443nobodyさん02/12/10 19:23ID:B9fPQtcJ
>>441
レスどうも。
rpmでインストールしたせいか、$TOMCAT_HOME/lib/に相当する、
/var/tomcat4/libが存在しないんすよ。
とりあえず、/var/tomcat4/shared/classesに入れてみたんですけど
駄目でした・・・
自分でも怪しいとこ探してみます。
どもでした。

0444nobodyさん02/12/10 23:26ID:???
JSTLの式言語で ${ メソッドの呼出し } みたいなことってできないんですか? たとえば ${ java.util.List#get() }みたいなこと。
0445nobodyさん02/12/10 23:43ID:???
>>444

できない。というより意味がない。<%= %>でだめな理由は?
ELはJSP記述を補完するものであって完全にリプレースするものではないよ。
0446nobodyさん02/12/11 10:17ID:???
ファイルアップロード機能付き掲示板のソースって
どこかに落ちていない?
0447nobodyさん02/12/11 11:09ID:???
>>446
http://tool-ya.ddo.jp/2ch/trash-box/
0448nobodyさん02/12/11 17:42ID:LEQcc0R2
Servlet&JSPの未来は明るいのでしょうか?
来年になったら.NETに押されて過去の遺産になるとかいってるやつが
うちの近所にいるのですが、本当でしょうか?

この前雑誌で見た、ASP.NETのWEBアプリの開発の容易さは大衆受け間違いなしと思うのですが
どうでしょう?
0449nobodyさん02/12/11 20:46ID:GqIGiZUN
>>448
Javaにも新しい展開が生まれていくと思われ。

少なくともフレームワークやJSP系は徐々に洗練され
始めてるでしょ。好みはそれぞれだと思うけど。

まあ、もし「.NET」が普及するんであれば、その恩恵で
かつてのVBのような展開で、糞みたいなWebアプリが次々
登場するでしょう。

※個人的にはさらに単価が安くなりそうで鬱。
045043802/12/12 01:55ID:???
>>441
Array my_Array = rs.getArray("name");
String[][] my_Values = (String[][])my_Array.getArray("name");
やっぱり分かりません…
045143802/12/12 01:58ID:???
>>450
レス番までも間違えました…>>442さんへ、です。
■ このスレッドは過去ログ倉庫に格納されています