Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

jspとjnlp、jarの置き場所について

度々恐縮です。
etc.JTableTest2というパッケージにあるJTableTest2.classをjarにして、これをjwsで使いたいのですが、置き場所がうまく理解できません。
今のところ、
 webapps
  |___ ROOT
     |___ etc
        |___ JTableTest2
というところを作って、最初にキックするjspもjnlpもjarも、全部JTableTest2に置いてみたのですが、とりあえず

   メインクラス JTableTest2 が http://●●:8080/etc/JTableTest2/JTableTest2.jar に見つかりませんでした

というエラーになっています。
jspの中の<a>タグでjnlpにリンクを貼る単純な方式なのですが、それぞれどこに置けば正しいでしょうか。
(私はどこに行きたいでしょうか? と聞いているような気がしてきました)

17

回答

4154

閲覧

17件の回答

評価

0

/ROOTには基本的に作成したものをおいてはいけません。(汗)
管理用
<TOMCAT_HOME>/Tomcat 5.5/webapps/ROOT は管理用のフォルダです。
<TOMCAT_HOME>/Tomcat 5.5/webapps/<WEB_APP_NAME>に設置したらいかがですか?

評価

0

あのひとさん、ありがとうございます。
本で読んで、「ROOT」はweb.xmlに何も書かなくて良さそうだったので、つい。
とりあえずご指摘の要領で置いてみます。

評価

0

こんにちは。この後、webapps/MyWebApp/etc/JTableTest2という構造にして、
全部を「MyWebApp」に置いてみましたが、やはり

メインクラス JTableTest2 が http://●●:8080/etc/JTableTest2/JTableTest2.jar に見つかりませんでした

というエラーになります。

キックするjspでは、
 <a href="jtabletest2.jnlp">Launch the application</a>
と書いて、
リンクされるjtabletest2.jnlpは、
 <?xml version="1.0" encoding="utf-8"?>
  <jnlp  spec="1.5+" codebase="http://●●:8080/MyWebApp"  href="jtabletest2.jnlp">
  <information>
   <title>JTableTest2 Demo Application</title>
   <vendor>▲▲部</vendor>
   <homepage href="jwstest.jsp" />
   <description>JTableTest2 Demo Application</description>
   <description kind="short">A demo of the Swing JTableTest2 User Interface.</description>
   <offline-allowed />
   <shortcut online="false" />
  </information>
  <resources>
   <j2se version="1.5.0+" java-vm-args="-esa -Xnoclassgc"/>
   <jar href="JTableTest2.jar" />
  </resources>
  <application-desc main-class="JTableTest2" />
  </jnlp> 
という感じです。
置き場所・jnlpでのpathいずれも悪いのではないかと思うのですが、ご教授願えないでしょうか。
よろしくお願いします。

評価

0

メインクラス JTableTest2 が http://●●:8080/etc/JTableTest2/JTableTest2.jar に見つかりませんでした

というメッセージから察するに
JTableTest2のパッケージと
<application-desc main-class="JTableTest2" />
がマッチしてないんじゃないでしょうか?

とりあえずJTableTest2.javaのパッケージ宣言はどうなってますか?

評価

0

ゆきおさん、ありがとうございます。
JTableTesy2.javaのpackageは、

 package etc.JTableTest2;

です。
もしかしたら、

 <application-desc main-class="etc.JTableTest2.JTableTest2" />

ということでしょうか?

評価

0


>もしかしたら、
> <application-desc main-class="etc.JTableTest2.JTableTest2" />
>ということでしょうか?

そうですね。
あとディレクトリごと圧縮してjar内のディレクトリ構成もあわせる必要があります。
jarファイル解凍したらetcディレクトリが出来て
その中にJTableTest2ディレクトリが出来て
その中にJTableTest2.classがあるように

評価

0

ゆきおさん、ありがとうございます。
めでたく、ダウンロードして、applicationがローカルで動くことができました。
但し、疑問点があって、

 1.webapps/MyWebApp/etc/JTableTest2
  というディレクトリにしているのですが、
  etcとJTAbleTest2は単にディレクトリを作ったというだけです。
  そんなもんで良いんですか?
  動くんだから良いような気もするのですが.....
 2.最大の疑問です。
  前に、JWSで動かすときにクライアントに
  ODBCの設定は不要か云々と書いて、叱られたのですが、
  今回動いたJWSのapplicationはODBCで接続して
  DBからデータを採取するものなのですが、
  今のところ処理結果は空です。
  (catchで何も処理していないので詳細は不明ですが)
  他のメンバーと考えてみて、
   ・「ODBC接続のリソース」をjarに含めないと駄目なのではないか
  ということなのですが、もしそうだとすると
  どうやってODBCの設定をjarに含めれば良いでしょう?

評価

0

catchした例外を無視するな。
printStackTraceでもいいから、まずは冷害の情報を取得しなさい。
それすると原因の探りようが無い。

評価

0

それもそうです。とりあえず何か出力してみます。

評価

0

例外は e.printStackTrace() は必須かな。

パッケージはJAVA的には何であろうと問題ないです
でも世界的に守られている紳士協定的なルールがあるので
自分以外の人にも渡すなら守るようにしましょう。

http://www.atmarkit.co.jp/fjava/rensai2/javaent10/javaent10.html

評価

0

前のスレ「jwsとjdbcドライバについて 」も読んでたけどスルーしてました。
(今日は比較的暇だから回答してみる)
向こうでも言われてるけど何をしたいかによるんじゃないかな。

JWSで配布してるクライアントから直接DB接続したいのかな?
今時のシステムでクライアントプログラムからネットワーク経由でDBに直接接続する事は滅多にありません。

別にしてもいいけど、そうしたいのならJWSで一緒にJDBCドライバを配布するか、ブリッジドライバを配布して個々のクライアント端末にODBCドライバ入れてもらうしかないでしょうね。

よくあるのはクライアントから接続するのはApサーバのみ。
ApサーバのプログラムがDB接続、データを表示形式、もしくは表示形式に近い状態まで成型してクライアントに送り返すという構成です。
そうしておけばDBに接続するのはサーバプログラムだけで済みますよね?
通じてるかな?

ちなみに↑の表示形式に近い状態まで成型するってのが一般的にビジネスロジックって言われてる奴ですね。
非常に大味な説明ではあるけれど。

DBサーバはレンタル出来るけどAPサーバを用意できないとか
配布アプリが接続するDBはユーザが任意に選択するとか
EJB作るのがめんどくさいとか
色んな事情があるのかもしれないのでどうしろとは言えないけど
一度WebAPとかEJBをキーに入門書、入門サイトをよく読んでみるといいんじゃないかな。

評価

0

読み返してみたらビジネスロジックうんぬんはちょっと違うなぁ
まあ本題ではないので参考程度でお願いします。

評価

0

ゆきおさん、ありがとうございます。
Apサーバ云々のことは、感じは分かりますが、実際に実感を持っては理解できていないと思ってください。
そういうレベルではありません。
jarを作り直そうとして、invalid header.... とエラーが出て作り直せなくなりました。
多分、全体的な知識レベルが付いていっていないのだと思います。
EJBは、個人的には最悪のものだと思いました。極論すれば「たかだかHTML叩くのになぜこんなややこしいことを」というのが私の実感です。
Javaを断念してaspとかphpをうろうろするようになったのも「EJB」で分からなくなってしまったからというのが大きな理由のひとつです。理解しようという気も失せるという感じでした。
最大の理由は、servletに「synchronized」をどう書くかで悩んでいるうちにいやになったからですが。
メインフレーム育ちなので、スレッドは放り出すけど、順番の管理はしないということが理解できませんでした。
とりあえず、出直し、出直し..............

評価

0

今更書いても仕方ないかもだけど
.NETだろうとJ2EEだろうと考え方には大差ないですよ。

それにクライアントを使用しているユーザとDBの内容に合わせて
動的コンテンツを生成するだけでいいなら別にEJBじゃなくてもよくって
ちょっとした物ならservretだけで十分機能を果たせる。

クライアントが無くてブラウザをクライアントにするなら
JSPだけで動かすって事も出来るしね。

別にJAVA信者じゃないけどよく知らないものを最悪とかいうのはどうかな?
ましてや此処はJAVA掲示板な訳だしさ。

評価

0

>最大の理由は、servletに「synchronized」をどう書くかで悩んでいるうちにいやになったからですが。

こんなこと言ってる時点でどこに逃げても同じ。
ちゃんと勉強しようよ。

評価

0

ゆきおさん、↑さん、どうもありがとうございます。
充分理解できなかったものの僻みと捉えていただいて、結構です。確かに、ご指摘どおり、無神経な表現で、申し訳ないことでした。
周囲にJava系の人間が全くいなくて、殆ど市販本で勉強をしてきたのですが、「EJB」はその理解のできなさ加減で、私個人にとっては最悪のものでした。
ともかく、もう踏み込んではいけないもしくは踏み込める領域ではないと明らかに感じさせられるものでした。
また、「synchronized」は、元々メインフレームではプログラムレベルでのことではないため、何も考えずに歳をとってしまったところに、いきなり考える羽目に陥ったため、結局「全ブロックをsynchronizedしてしまう」ようなことをしてしまって、自己嫌悪に陥った挙句、Javaを離れようと思わざるを得なくなった項目のひとつでした。
長々語ってしまって申し訳ありません。
cobolerの愚痴です。お忘れください。

評価

0

>よくあるのはクライアントから接続するのはApサーバのみ。
>ApサーバのプログラムがDB接続、データを表示形式、もしくは表示形式に近い状態まで成型してクライアントに送り返すという構成です。
>そうしておけばDBに接続するのはサーバプログラムだけで済みますよね?

古い話で申し訳ないです。この後ずーっとOpenLaszloをやっていました。で、ある日、ふとこのことについて思いついたのは、「タイプ1のドライバだから駄目」ということでは? ということです。
ブリッジは、確かAppletには使えなかったはずなので、通常WEBで何かする場合は「タイプ4のドライバ」を使うのではないですか?
例えば、tomcatを立てて、jdbcのドライバに「タイプ4のドライバ」を使えば、クライアントはDBのパスを考える必要がないということではないかと思いました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。