- PR -

別のサーバにあるファイル(DATA)にアクセスしたいですが。

投稿者投稿内容
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-04-07 13:54
こんにちわ。

お世話になります。

まず環境がちょっと変わった環境です。

サーバーが二つあります。Aサーバー,Bサーバーです。

Aサーバーにはコンテンツのみ入れます。HTML,EXCELなど。。。
BサーバーにはJAVAクラスを入れます。

まず作りたいのはAサーバーのコンテンツにセキュリティをかけたいです。
普通のやり方ですが。。。(res.setStatus(res.SC_UNAUTHORIZED); で。。。)

でもコンテンツのURLを隠すためにはURL欄にはサーブレット名のみ表示したいです。
GET方式で次に表示するファイル名はパラメータで持ちます。

A−>B(セキュリティ)−>Aの感じですね。

1.sendRedirectとかも考えてみましたがAのURLがばれちゃいますので。。(直接URLで打たれちゃだめです。)
2.RequestDispatcher rd = context.getRequestDispatcher(url);
  rd.include(req, res);
  同じサーバではないと使えないですよね。
3.ソケットを使えばできそうな気がしますけど
  常識的によろしいでしょうか。
  別のサーバーとつなげてソースなどを読み込んできてBでAのコンテンツを表示する形です。


みなさんのご意見を聞かせてください。

よろしくお願いします。














[ メッセージ編集済み 編集者: minami 編集日時 2004-04-07 14:19 ]

[ メッセージ編集済み 編集者: minami 編集日時 2004-04-07 14:56 ]
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-04-07 14:47
OSレベルでファイルにアクセスして、FileInputStreamから
ServletOutputstreamに流し込むとか。

各サーバのOSや環境が分からないので、具体的にどうするかは
書きようがないですが。
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-04-07 14:50
ご返答有難うございます。

OSレベルでファイルにアクセスするってことはどういうことでしょうか。
教えていただけますか。

AサーバーからBサーバーのファイルをどうすればアクセスできますか。

もう一度ヒントお願いします。



ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2004-04-07 14:56
「サーバー」とは何を指していますか?ファイルサーバ?APサーバ(ServletEnginge)?

例えていうなら Tomcat が2つ動いていて、1つの Tomcat を隠したい
ということですか?
ふーばー
大ベテラン
会議室デビュー日: 2003/06/05
投稿数: 163
投稿日時: 2004-04-07 15:02
引用:

OSレベルでファイルにアクセスするってことはどういうことでしょうか。
教えていただけますか。


ServletEnginge を介さないということです。

引用:

AサーバーからBサーバーのファイルをどうすればアクセスできますか。



それを聞きたければ、きちんと情報を提示するべきです。
A、BサーバのOSの種類すら書いていないじゃないですか。
#そもそもそれは他人に聞くことか?

AとBのネットワーク関係やファイルアクセス権などがわからないと本当に正しい
回答など出せないということがわかりますか?
いろいろやりとりして、Bのポートが80しか開いていなかった、というオチも
ありうるんですよ。
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-04-07 15:04
説明が足りなかったですね。
申し訳ありませんでした。T.T

もう一度説明させていただきます。

サーバーっていうのはPCのことです。 PCが二つです。
両方ともLinuxです。サーブレットを置くサーバー(B)はTomcatです。コンテンツサーバー(A)はサーブレットは動きません。

同じPCでやるならなんとかできそうですけど
今離れているPC(サーバー)で処理したいので。。。

どういうふうにすればいいでしょうか。

教えてください。

よろしくお願いします。




[ メッセージ編集済み 編集者: minami 編集日時 2004-04-07 15:05 ]

[ メッセージ編集済み 編集者: minami 編集日時 2004-04-07 15:10 ]

[ メッセージ編集済み 編集者: minami 編集日時 2004-04-07 15:50 ]
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2004-04-07 15:31
はじめまして。
引用:

サーバーが二つあります。Aサーバー,Bサーバーです。

Aサーバーにはコンテンツのみ入れます。HTML,EXCELなど。。。
BサーバーにはJAVAクラスを入れます。

まず作りたいのはAサーバーのコンテンツにセキュリティをかけたいです。
普通のやり方ですが。。。(res.setStatus(res.SC_UNAUTHORIZED); で。。。)

でもコンテンツのURLを隠すためにはURL欄にはサーブレット名のみ表示したいです。
GET方式で次に表示するファイル名はパラメータで持ちます。

A−>B(セキュリティ)−>Aの感じですね。



A、Bともサーブレットが動くと言う前提でいいでしょうか。
ぱっと思いつくのは、A側でリクエストを受け取ったあとcommonsのHttpClient等を
用いてB側にHttpリクエストを発行、B側では接続元のIP等でアクセス制限を行う
(セキュリティの確保)。
A側ではBからのレスポンスを受け取りクライアントに返す。

というのはどうでしょうか?B側のtomcatの設定でA以外からのアクセスを拒否するように
しておけば安全だと思います。

他の分散アーキテクチャを用いても可能だと思いますがHTTPベースであればこの方法
が早いと思います。
タラン
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 138
投稿日時: 2004-04-07 15:44
SKT様

丁寧な返答有難うございます。

実はシステムのことがよく分かりません。T.T

A:コンテンツサーバーには多分サーブレットが動かない環境だと思います。
それでBサーバー(Tomcat)これは私が管理してるので確実です。
Aはただのapacheとかほかのコンテンツサーバーだと思います。

私が今作りたいのはですね。

AのコンテンツサーバーのFirst.htmlページからBのサーブレットが呼ばれてセキュリティ処理が終わってAの次のページSecond.htmlを表示したいですが。。
BのサーバーではAのsecond.htmlは見れないですよね。
sendRedirectなどを使いたいですけどURLがばれるので
http://IP:8888/Second.htmlっていうURLがユーザーに見えるとログインなしでSecond.htmlが次回からアクセスできちゃいますよね。
なのでincludeとかforwardを使いたかったですけど
同じパソコンにはないのでどうしよもありません。

そこでBからAに接続してAのSecond.htmlのファイルを読み込んでBで出力したいですが
その方法がわからないですよ。
ソケットとかを利用できるんでしょうか。

説明がめちゃくちゃですみません。

よろしくお願いします。



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