- PR -

StrutsのActionFormからASPを呼び出すのは可能!?

投稿者投稿内容
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2004-12-23 19:47
件名の通り、なんとかできないだろうかと模索している状況です。

あるEXEファイルをクライアントで実行させたいために、
ASPを使いました。
Strutsでは、クライアントPCで動作させる方法が見あたらなったため。

クライアントPCで動作できるようになったのですが、
メインフレームであるStrutsとASPフレームの連携ができず
困っています。
↑もしかしたら、すごく馬鹿の事をしようとしている!?。

やりたい処理

1)【サーバ】DBを編集し、任意のファイルに出力。
2)【サーバ】Runtimeクラスで、「iexplore.exe ASPファイルがあるURL」を実行。
3)【クライアント】ASPファイルでクライアントから、サーバの(1)のファイルを取得。
4)【クライアント】データを編集(ブラウザではできないため、やむおえず…)
5)【クライアント】結果ファイルを作成し、サーバに送信
6)【サーバ】結果ファイルを解析し、正常または異常の結果画面へ遷移。

問題点
(2)のRuntimeは処理を待たないせっかち?な習性があるため
あるEXEの処理結果が正常に終了したのか?異常終了したのか
分からないまま、(3)〜(5)を飛び越して、
(6)のデフォルト設定の画面へ勝手に遷移してしまう。

Runtimeを制御する方法もしくは、Runtimeとは違う
Strutsで用意していもので可能かご教示願います。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2004-12-23 20:06
java.net.URL は使えませんか?

URLにアクセスして、HTMLを取得できますよ
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2004-12-23 23:45
返信ありがとうございます。

URLのクラスがあるのは知っていますがが、
使い方がよくわかりません。

クライアント側PCにあるEXEを動かしたいのです。

URLのHTMLファイルを呼び込んで、
EXEを動かす方法があるのでしょうか?

もう少しヒントを宜しくお願いします。

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-12-24 00:33
サーバ技術(Servlet等)とクライアント技術(ActiveX等)の
違いは理解されていますか?

Strutsはサーバサイドの技術であり、
クライアントでのEXEの実行はブラウザの技術なので、
StrutsだろうがJSPだろうがASPだろうが
特に関係なくEXEの実行は可能です。

ブラウザはHTML内のスクリプトを
解釈してEXEの実行を行います。
サーバからクライアントに対して
個別に命令を行うわけではありません。

引用:

問題点
(2)のRuntimeは処理を待たないせっかち?な習性があるため
あるEXEの処理結果が正常に終了したのか?異常終了したのか
分からないまま、(3)〜(5)を飛び越して、
(6)のデフォルト設定の画面へ勝手に遷移してしまう。


せっかちな習性にするかは、プログラムの作成次第です。
javadocのjava.lang.Runtimeとjava.lang.Processの項を
よく読んでみてください。


結論としては、JSPファイルにScriptタグを書いて
JavaScriptでクライアントのEXEを実行するように記述すれば
Strutsでも要望を満たすことは可能ですよ。
この際クライアントのセキュリティの設定に気をつけてくださいね。

[ メッセージ編集済み 編集者: かつのり 編集日時 2004-12-24 00:34 ]
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2004-12-24 06:29
返答ありがとうございます。

疑問に思った事があります。
私は今までStrutsは、サーバで動作するものだと思っていました。
クライアントからブラウザ上で、サーバのURLを指定して
データベースの編集などを行っていたのですが、
その時にファイルを作成してデータをダンプした場合、
そのファイルは、サーバ側にできるのはないのでしょうか?

簡単なテスト環境では、サーバ側でできてました。
(ような気がします。ネットワーク環境がまだできていないため
自分のPCでしか現状確認できません…。)

また、EXEは全てのPCにある訳ではなく、
特定の職務についている人のPCにしかありません。
なので、そのEXEがあるかどうかをまず判断しなければなりません。

その識別をStrutsのみで判断できるものなのでしょうか?
JavaScriptにEXEを実行するようなソースを書いたとしても
EXEがあるかどうかが分からないため、実行ができないような
気がしています。
ASPではActiveXを介してEXEを実行しているので理解できるのですが。

個人的には、セキュリティの面からしてActiveXは使いたくないのが
本当のところです。

Runtimeは、APIをもう少し読んで試してみます。

初歩的な質問になってしまっているのですが、宜しくお願いします。

takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2004-12-24 08:11
引用:

私は今までStrutsは、サーバで動作するものだと思っていました。
・・・・・・・・・・・・・・・・・・・
そのファイルは、サーバ側にできるのはないのでしょうか?


その通りじゃないでしょうか。
で、誰かそれを否定するようなことを記述したのでしょうか?

引用:

また、EXEは全てのPCにある訳ではなく、
特定の職務についている人のPCにしかありません。
なので、そのEXEがあるかどうかをまず判断しなければなりません。


まずは「特定の職務についている人」の認証から施されては如何かと。
「本来受け取るべき人」と「そうではない人」が、ASPであれJSPであれ同一の
ページを受け取るのはどうかなと思います。

引用:

ASPではActiveXを介してEXEを実行しているので理解できるのですが。


他の方も書かれていますが、ActiveXオブジェクトを動かしているのはASPそれ自体
というわけではありません。
「なぜASPにこだわるのか」そのへんの理由を私が知らないだけなのかもしれませんが、
ActiveXオブジェクトを動かすだけなら、特にASPにこだわる理由は無いと思われます。
(動かすだけならHTMLのObjectタグとJavaScriptだけで充分ですよね?必要なものは)

引用:

個人的には、セキュリティの面からしてActiveXは使いたくないのが本当のところです。


本当に其々のクライアント毎に「何某かの処理の実行ファイル」を持たせる必要が
あるのかを再検討されてはいかがでしょうか。
サーバ側で処理を済ませられない何か特別な理由でも存在するのでしょうか?
さく
ベテラン
会議室デビュー日: 2004/06/11
投稿数: 74
投稿日時: 2004-12-24 09:53
返答ありがとうございます。

特定の権限を持っている人のみ画面遷移をおこなっても、
その人のPCにEXEが必ずあるとは限らないためです。

Strutsのみでできるなら、それに越したことはないです。
私が知ってる(教えてもらった)知識ではASPしかなかっただけです。

EXEは、既存システムのものであり、時間や開発等のコスト上
新たに開発できる余裕がないのです。

サーバ側でプロセスが動いているのに、クライアント側にある
EXEを動かす処理が今いち理解できず困っています。

Strutsというよりは、JavaScriptの話なのでしょうか?
手持ちのマニュアルを見た限りでは、ブラウザから
クライアントにあるEXEを動かすようなサンプルは見当たりませんでした。

子画面を出す時は、ローカルにあるブラウザを動かしているから
可能なのだろうって思うのですが…。

サンプルソース等なにかヒントになるものを教えてもらえないでしょうか?

宜しくお願いします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-12-24 10:07
んじゃ、ヒントだけ(答えかも)
var shell = new ActiveXObject("WScript.Shell");
WScript.ShellでMSDNをよく見てみてください。

スキルアップ/キャリアアップ(JOB@IT)