- PR -

AXISでTEMPディレクトリに作成される一時ファイルが消えない

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/05/16
投稿数: 5
投稿日時: 2006-10-13 16:29

他所でも投稿いたしましたが、レスがないためこちらでも投稿させて頂きます。

Axis 1.4でファイル添付機能を使用しています。

クライアントでサービスからファイルを受信する際に、
TEMPディレクトリにAXISによってファイルが作成されるようですが、
なぜか削除されません。

TEMPの例)C:\DOCUME~1\user\Local Settings\Temp\Axis29066.att"

これはなぜでしょうか。

AttachmentPartを使用して、
"org.apache.axis.Message#getAttachmentsImpl()"を実行しています。

"org.apache.axis.attachments.ManagedMemoryDataSource#delete()"が
使用されていないのが問題ではないかと疑っていますが、よく理解できておりません。

どなたか同じ現象に合われた方や理由がわかる方がいらっしゃいましたら
ご教授の程宜しくお願い致します。

[環境]
Windows2000
Tomcat4
Axis1.1
未記入
会議室デビュー日: 2006/05/16
投稿数: 5
投稿日時: 2006-10-18 14:31

自己レスですが、そもそも、AXISのアタッチメントは一時ファイルを作成した後に消すわけではなく、自分で消す必要があるのでしょうか。

クライアント→サービスの場合、WEB-INF/attachments
サービス→クライアントの場合、クラインとのTEMPディレクトリにAxisXXXX.attという
ファイルが作成されます。

現在は、以下のようにプログラムしております。
--------------------------------------------------------
Message msg = call.getMessageContext().getResponseMessage();
Attachments msgAttas = msg.getAttachmentsImpl();

Collection collection = msgAttas.getAttachments();
AttachmentPart[] attachmentParts = (AttachmentPart[]) collection.toArray(new AttachmentPart[0]);

FileOutputStream fs = null;
fs = new FileOutputStream(filePath);
attachmentParts[0].getDataHandler().writeTo(fs);
fs.close();
未記入
会議室デビュー日: 2005/07/23
投稿数: 12
投稿日時: 2006-10-19 23:42
参考程度お願いします。

axis1.1においてクライアント→サーバへファイル転送した場合、
WEB-INF/attachments にテンポラリ(と思われる)ファイルが作成される事例を知っています。
#私事ではないので、詳細は覚えてません

ただその時は、アプリケーションサーバ側の問題で決着しました。
このケースも、WEB-INF/attachments 、つまりアプリケーションサーバの作成したデイレクトリ内ですよね。
axis側で該当するような実装をしていないのであれば、アプリケーションサーバの問題である可能性もあります。

作成されるファイルを削除するコードをつくることはできるとしも、アプリケーションサーバ内のものを消すのはスっきりしないですね。

まぁ、参考程度で。
未記入
会議室デビュー日: 2006/05/16
投稿数: 5
投稿日時: 2006-10-20 16:35
アドバイス有難うございます。

サービス→クライアントの場合は、必ずTEMPディレクトリのファイルが作成され、残りますが、クライアント→サーバは、不規則で、消えたり、残ったりしますので、確かにAPサーバーが影響しているかもしれません。

サーバー側は、削除ツールを作成すれば良いですが、クライアント側はそういうわけには行かないですので、問題の根本を解決しないといけないのです。

引き続き、情報がありましたらお願い致します。
1

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