- PR -

VisualAgeForJavaでのAppletとServlet連携

1
投稿者投稿内容
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2003-11-04 23:27
はじめまして。
IBMのVisualAge for Javaを使ってアプレットとサーブレットの連携プログラムを作ろうとしています。
ところがどうやっても次のエラーが出てしまい、サーブレットと通信ができません。
どなたか似たような経験があるかたいらっしゃいましたら教えていただけないでしょうか。

java.security.AccessControlException:access denied(java.io.FilePermision test.html read)
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2003-11-05 00:33
秀人さん、こんにちは。

サーブレットと通信できないとありますから、例外が発生してい
るのはアプレットのほうですね?

text.html へ、ローカルのファイルとして読もうとしている
箇所は無いでしょうか?
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2003-11-05 00:43
てゆうか、そっくりなのがあります。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7249&forum=12&2

# Faceさんの同僚の方でしょうか…。
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2003-11-05 01:21
Kissingerさん、ご返信ありがとうございます。
Faceさんとは何の関係もありません。ただFaceさんのスレッドを見て、自分と同じエラーメッセージだと早合点して、メッセージ内容をコピーペーストしてしまいました。
どうも失礼いたしました。

本当のメッセージはこれです。

error occured.java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8080 connect,resolve)
java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8080 connect,resolve)
java.lang.Throwable(java.lang.String)
java.lang.Exception(java.lang.String)
java.lang.RuntimeException(java.lang.String)
java.lang.SecurityException(java.lang.String)
java.security.AccessControlException(java.lang.String, java.security.Permission)
void java.security.AccessControlContext.checkPermission(java.security.Permission)
void java.security.AccessController.checkPermission(java.security.Permission)
void java.lang.SecurityManager.checkPermission(java.security.Permission)
void java.lang.SecurityManager.checkConnect(java.lang.String, int)
void sun.net.www.http.HttpClient.openServer()
sun.net.www.http.HttpClient(java.net.URL, java.lang.String, int, boolean)
sun.net.www.http.HttpClient(java.net.URL)
sun.net.www.http.HttpClient sun.net.www.http.HttpClient.New(java.net.URL)
void sun.net.www.protocol.http.HttpURLConnection.connect()
java.io.OutputStream sun.net.www.protocol.http.HttpURLConnection.getOutputStream()
void control.ServletAdapter.invoke()
void view.AppletTest2.button1_ActionEvents()
void view.AppletTest2.connEtoC1()
void view.AppletTest2$IvjEventHandler.actionPerformed(java.awt.event.ActionEvent)
void java.awt.Button.processActionEvent(java.awt.event.ActionEvent)
void java.awt.Button.processEvent(java.awt.AWTEvent)
void java.awt.Component.dispatchEventImpl(java.awt.AWTEvent)
void java.awt.Component.dispatchEvent(java.awt.AWTEvent)
void java.awt.EventQueue.dispatchEvent(java.awt.AWTEvent)
boolean java.awt.EventDispatchThread.pumpOneEvent()
void java.awt.EventDispatchThread.pumpEvents(java.awt.Conditional)
void java.awt.EventDispatchThread.run()

Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2003-11-05 01:45
接続先がループバックアドレスになっているのが大きなヒントかも
しれませんね。

以前、私も同様な現象を起こしたことがあり、解決済みですが
どうやったらいいかは忘れました。

通常、アプレットから接続できる先は、アプレットをダウンロード
した先と同一のサーバでなければならないのはご存知でしょうし、
実際、秀人さんはそのようにしていると思われます。

ただし、接続先にちゃんとしたホスト名または localhost を指定
したのに自動的にループバックアドレスとして解決されたか何か(曖昧で
すみません。時間あればちゃんと調べるのですが)で、結果として
アプレットをダウンロードしたサーバと別のサーバに接続を試みている
と認識されてしまったのではないでしょうか。

試しに接続するときに、以下の方法のどれかでうまく行かないでしょうか?
1. 実際のホスト名(DNSやhosts等に登録済みのもの)で指定。
2. localhost で指定。
3. IPアドレス で指定。
4. ループバックアドレスで指定。

クライアントとサーバを別のホストで動作させることができれば、多少楽に
解決できるかも知れませんが、同一ホストでもできたほうがいいですよね。
秀人
常連さん
会議室デビュー日: 2003/02/19
投稿数: 22
お住まい・勤務地: 東京都
投稿日時: 2003-11-05 09:32
Kissingerさん ご回答ありがとうございます。
開発環境ですが、Visual Age For JavaにはWebSphereテスト環境というものがあり、同一端末でクライアントとサーバー両方稼動できます。
この機能を使って、サーブレットはlocalhostで起動しようとしています。
ちなみにURLはhttp://localhost:8080/servlet/control.CounterServletです。
このURLをWebブラウザから指定するとちゃんとサーブレットは受信して返信を返すことができるのですが、アプレットビューアーからだとうまくいっていません。
1

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