-PR-
解決済み

アプレットからサーバ側のプログラムを起動したいのですが…

  • すぐに回答を!
  • 質問No.27014
  • 閲覧数433
  • ありがとう数14
  • 気になる数0
  • 回答数5
  • コメント数0

仕事でJavaを使うことになったのですが、プロジェクト員一同Java初心者で、必死にJavaを勉強していますが、以下のことで困っています。申し訳ありません。助けてください。
UNIXサーバ側の設定とかをいじるプログラムがあるのですが、それをアプレットにして、SEさんがリモートからでも操作出来るようにしろ、と言われました。
とりあえず、Javaアプレットからサーバ側(アプレットのクラスが置いてあるのと同じマシン)のCプログラムを起動し、その結果を受け取るようにしたいのですが、Java経験者に相談したら「アプレットにはセキュリティ上の問題があるのでCGIかServletを使わないと出来ない」と言われました。
では…とServletの勉強を初め、サーバー側にServletEngineをいれてみたのですが、
ServletはHTTPポートと違うポート(8000番とか)を開けてそこにアクセスしなくてはいけないようにみえます。それならクライアント側プログラムをアプレットにし、サーバ側プログラムとSocket通信で結び、サーバ側プログラムがCプログラムを起動、としたほうが楽そうですが、ひとつしかポートを開きたくないと言われたのです。
もしかして「アプレット+Servlet が アプレット+CGI相当」じゃなく「Servlet が アプレット+CGI相当」なのでServlet用のポートだけ開けとけばいいとかいうことでしょうか?
 とか思っていたら、JNIでC言語のメソッドをJavaメソッド扱いするとかいう話も小耳に挟みました。それでできるのかしら?
・webポートだけを開いて
・サーバ側のCプログラムを起動してその結果を受け取る
・クライアントのマシンにあらかじめインストールしなくても、ブラウザからアクセスすると操作が対話的に出来るような

ものを簡単に作ろうとしたら、一体何を勉強するべきなのでしょうか…。
Applet+CGI? Applet+Servlet? RMI? JNI…?
助けてください…(TT)
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル5

ベストアンサー率 60% (3/5)

ちゃんと、設定すればwebポートだけ開けられます。

Cのプログラムは、コマンドラインで動くものですか?

コマンドラインで動作する時は、
サーブレットだけで、実装します。Cのプログラムは、RunTimeExec(だったかな)をしようして、コマンドを起動します。

Cのプログラムがライブラリーの時は、
RunTimeExecの変わりにJNIを使用します。

アプレットは、使用しない方が、いいでしょう。
お礼コメント
noname#2875

ありがとうございます。
ServletEngineのインストールと設定時にポート80を指定すればよいのでしょうか?やってみます。(^ ^)

CはライブラリなのでRuntime.getRuntime().execではなくJNIを使ったほうがよいのですね…。JNIの勉強もしなければ…(^_^;)

アプレット使用しないほうがよいのはなぜですか…?クライアントに表示側はGUI画面を持っているので、GUIイメージはアプレットにしたほうがよいのかと思ったのですが、ServletにGUIの表示させたほうがいいのでしょうか?
ServletでGUIは出せないのかと何故か思いこんでたのですが、違うのでしょうか…。

あ、サーバ側にGUIおけるのだったら、ひょっとしてサーバ側にSwing置いたらSwing使った画面とかにしても大丈夫?…そんなわけないか。クライアント側はどーやって解釈するのだ(一人つっこみ)

なんか頑張ってみます…。
投稿日時 - 2001-01-12 11:06:22
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル11

ベストアンサー率 49% (139/279)

Applet、Servlet間の通信についてですが、下記のURLを参照してください。
お礼コメント
noname#2875

ありがとうございます。
今みてみました。

これはTextAreaとかのGUI画面もつためにApplet、Servletの通信してるのですよね…?やっぱりServletではGUIだせないのでしょうね…。
投稿日時 - 2001-01-12 11:18:50


  • 回答No.2
レベル9

ベストアンサー率 44% (32/72)

私もJAVAアプレット&CGIで色々やっています。

今回のご質問では、どこまで何をするか?によるかと思います。

リアルに近い形でサーバとクライアントで情報のやり取りをやるのであれば、サーブレットを勉強すれば良いかと思いますが。。。どうですか?
ご存じの通り、サーブレットはサーバー側で起動するアプレットの様なものですのでサーバー側で色々設定ができる様になっていて、他のソフトウエアとの親和性もアプレットに比べて緩和されています。

アプレットは、クライアントマシンでのセキュリティーに大きく依存してしまうので色々できない事があります。

私は今、JAVAで占いやアンケートなどを行わせてその結果をサーバに保存だけしたいので、アプレット&CGIで色々やっています。

似たような悩みを最初は抱えておりましたが、CGIをC言語で開発しコンパイルした実行コードをサーバ上で動作させてしまうのが一番簡単では無いでしょうか?
但し、サーバーは自分で管理し設定しなければなりません。

そして、DLLなどで共通の動的ライブラリーも作ったり二重起動せずスレッドなどで対応できるソフトウエアにしておけば、メモリも少なく、起動も早いソフトになります。(その分デバックし難くなりますが・・・)



ご参考まででした。
お礼コメント
noname#2875

ありがとうございます。
CGIのほうが簡単ですか…。CGIのほうがいい気がしてきました。

サーバの管理設定はCGIを使ったときもServletを使ったときもいっしょですよね…?たぶん…

共通のライブラリ…?
スレッド対応…?ってCGIってアクセスごとにプロセス立ちあがるのですよね…?ごめんなさい。なんかイメージがつかめませんでした。(TT)
投稿日時 - 2001-01-12 11:15:03
  • 回答No.4
レベル5

ベストアンサー率 60% (3/5)

GUIですが、
HTMLとJavaScriptで実現できそうなので

アプレットを使用する時は、NNとIEでは、動作が多少違うので、
Java-PlugInをブラウザーに組み込まないといけません。
お礼コメント
noname#2875

なるほど!ありがとうございました。
自分で勝手に変な解釈して勝手に混乱してたみたいです。ごめんなさい。

そうか、ダイアログとかだすくらいならJavaScriptで実現すれば、Servletに作らせるHTML文の中にJavaScriptのコードを組み込めばいいのですものね…。そういう使い方があるのですね!

お答えありがとうございました(^ ^)
投稿日時 - 2001-01-16 14:46:22
  • 回答No.5
レベル5

ベストアンサー率 25% (1/4)

nobi2000さんのarataさんへのお礼に関して一言。
ちょっと認識がずれていませんか?
もともとGUIを表示するのはClient(Applet)のはず
だからservletでGUIは必要無いと思うのですが...

nobi2000さんの質問から察するに
appletから設定のためのコマンドをservletに送る(applet-servlet通信)
servletがCのプログラムを実行(Runtime.exec)
servletが実行結果を受け取る
appletがその情報を受け取り表示する

と言う手順になりそうなのですが...
参考になれば幸いです
お礼コメント
noname#2875

ありがとうございます。
自分がものすごく根本的に間違ってたことに気づいて恥ずかしいです。ご指摘ありがとうございます。(__)

Servlet→Server側で動く
Applet→Cliant側で動く

とわかっているつもりで全然わかっていませんでした。
「servletでGUI」って
サーバー側で「出せ!」と命令すれば、画像だけクライアント側に現れると解釈していたということですよね。

NO.#3 hogehoeさんのお答えを見て、
(hogehoeさんは「HTMLとJavaScriptで代用すればよい」という意味で「Appletを使わないほうが」とおっしゃったのに)
「Appletを使わなくてもGUI出せるからApplet使わないほうが」の意と勘違いしたのですが、
arataさんに教えていただいたURLをみて
先ほどの(Appletを使わなくてもGUI出せるから~)解釈は勘違いでは?とうすうす気づいたのに自信が持てなかったので書いたのですが、考えが足りない発言でした。

でもその勘違いを丁寧に正してくださって嬉しいです。
参考の手順をみてもやもやしていた気持ちがクリアになりました。
ありがとうございました!
投稿日時 - 2001-01-16 14:36:34
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ