- PR -

画像の表示

投稿者投稿内容
Noda
常連さん
会議室デビュー日: 2005/06/14
投稿数: 21
投稿日時: 2005-08-02 19:34
WebSphere、J2EE1.3で開発を行っています。
WebSphereでPGを行い、実行したら動作には何も問題がないのですが、
サーバにあげたとたん思うように動いてくれません。

サーバの環境はApache + tomcatです。
Apacheのバージョンは不明。
tomcatのバージョンは4.1.31を使用しています。

以下が組んだソースです。

Blob ab = null;
if(d.getKao(gakusekino,conn) != null){
ab = d.getKao();
resp.setContentType("image/jpeg");
byte[] buff = new byte[1024];
InputStream in = null;
OutputStream out = null;

Random ran = new Random();
long a = ran.nextLong() + 1;

if(a < 0){
a = 0 - a;
}

filenameb = Long.toString(a);
filenameb = filenameb + ".jpg";

try{
in = ab.getBinaryStream();
out = new FileOutputStream("/home/TMP/"+ filenameb);
filenameb ="TMP/" + filenameb;
int n;
while((n = in.read(buff)) != -1){
out.write(buff,0,n);
}
}catch(IOException e1){
}
finally{
try{
if(in != null){
in.close();
}

if(out != null){
out.close();
}
}catch(IOException e1){
}
}
session.setAttribute("filenameb",filenameb);
}

と組んでいます。
kao = d.getKao();は別クラスでテーブルよりBlob型で取得したデータを受け取っています。
どうもログを追って見るとout = new FileOutputStream("/home/TMP/"+ filenameb);で飛んでいるようです。
これはサーバの環境などの影響なのでしょうか?

上記のことで不明な点がありましたら、できる限りお答えしますので、
わかる方がいらっしゃったらどうか教えてください。
taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2005-08-02 20:53
エラー箇所が特定できているなら、catchでIOExceptionだけでなく全ての例外をcatchして
スタックとレースを出力してみてはいかがでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-02 22:02
>}catch(IOException e1){
>}
例外を握りつぶしているのがなんとも甘酸っぱいですね。既に指摘されていますがスタックトレースの取得が必要ですね。
それから、開発環境とテスト環境のサーバが違うってのはなにか意図があってのことでしょうか?
環境を合わせて開発したほうが何かとスムースかと思います。今回のように問題が発生した場合、サーバの違いによるものなのかどうか切り分ける必要がなくなりますし。
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-08-02 22:17
そもそもサーバー上に/home/TMPがあるかってところと、あるのであればtomcatのプロセスにそこのディレクトリへのパーミッションがあるかどうかといったところでしょうか。
例外見ればずばりエラーの原因そのものが書かれていると思うのでほかの方が言われているようにとりあえず出力してみることをお勧めします。
Noda
常連さん
会議室デビュー日: 2005/06/14
投稿数: 21
投稿日時: 2005-08-02 22:29
例外の出力の仕方がわからないのですが・・・
ローカルでの例外は先に書いたように、出ません。
サーバで例外を出力させる方法がわからないので、ここで何かしらの解決の糸口
を得ようと投稿したわけです。

後、開発環境とサーバの環境が違う点についてはどうしようもありません;
いろいろありまして

例外出力が出来ないということで、何かしらエラーが起こる原因があったら教えてほしいのですが。
サーバでの例外の出力方法でもいいです、お願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-02 22:57
まずは Java の基本から勉強しましょう。
"例外 スタックトレース"などで検索すれば参考になるページがでてくるかと思います。
ホントに基本の基本ですので教科書を1からおさらいするのも良いかと。
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2005-08-02 23:11
e1.printStackTrace() とかすれば、Tomcatのどこかのログファイルに記録されますよ。
Noda
常連さん
会議室デビュー日: 2005/06/14
投稿数: 21
投稿日時: 2005-08-02 23:15
サーバで実行した際には、Consoleもないのにどうやってスタックトレースを表示するのかがしりたのですが・・・

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