- PR -

JSPで読み込んだまま固まる・・・・・

投稿者投稿内容
乳牛
常連さん
会議室デビュー日: 2003/04/15
投稿数: 22
投稿日時: 2003-11-26 19:13
引用:

C'zkaさんの書き込み (2003-11-26 19:07) より:
この場合の静的と言うのは、今吐き出されているJSPのソースをhtmlで動かしてみるということでしょうか?とりあえず、試してみます。



そうです、そうです。
右クリックでソースを保存して見てください。リンク先などのパスに注意して多少手を加えないと同じ条件にならないかもしれません。
再現したら、問題を簡単にする為に再現する必要最小限のHTMLを目指して削っていきましょう。おのずと問題個所が浮き彫りになってくるはずです。
C'zka
ベテラン
会議室デビュー日: 2003/09/04
投稿数: 64
投稿日時: 2003-11-26 21:14
途中経過です。
JavaScriptを修正する事で、長持ちするようになったりならなかったりです^^;
結果的には途中で止まるのですが、いじる事で動作が変わるため明らかにここに原因があると考えています。

ツリー表示のJavaScriptを貼り付けておきます。自分では気が付かないものがあるかもしれませんから・・・・・

if (!document.getElementById) {
document.getElementById = function() { return null; }
}

var menuCookie = "menusToExpand"

function initializeMenu(menuId, actuatorId) {
var menu = document.getElementById(menuId);
var actuator = document.getElementById(actuatorId);
if (menu == null || actuator == null) return false;

//if (window.opera) return; // I'm too tired
actuator.parentNode.style.backgroundImage = "url(../../image/plus.gif)";
actuator.onclick = function() {
var display = menu.style.display;
this.parentNode.style.backgroundImage =
(display == "block") ? "url(../../image/plus.gif)" : "url(../../image/minus.gif)";
menu.style.display = (display == "block") ? "none" : "block";

// Begin custom code for remembering expanded menus with cookies
var menusToExpand = getCookie(menuCookie);
if (menu.style.display == "block") {
// set a cookie to keep the menu expanded
if (menusToExpand == null) {
setCookie(menuCookie,menuId);
} else if (menusToExpand.indexOf(menuId) == -1) {
setCookie(menuCookie,menusToExpand+","+menuId);
}
} else {
// remove it from the expanded cookie list
if (menusToExpand.indexOf(menuId) != -1) {
// check for comma after menu
if (menusToExpand.indexOf(menuId+",") != -1) {
menusToExpand = menusToExpand.replace(menuId+",","");
} else {
menusToExpand = menusToExpand.replace(menuId,"");
}
if (menusToExpand == "") {
deleteCookie(menuCookie);
} else {
setCookie(menuCookie,menusToExpand);
}
}
}
// End custom code
//document.links[0].target = "_top";

//alert("id = " + actuator.id);
//if (actuator.id.search("Actuator") < 0) {
// parent.parent.location.href = actuator.href;
//}
//location.href = actuator.href;
//document.location.reload();
return true;
}
}

function openMenu(menuId) {
var menu = document.getElementById(menuId);
var actuatorId = menuId.substring(0, menuId.indexOf("Menu")) + "Actuator";
var actuator = document.getElementById(actuatorId);
if (menu != null) {
var display = menu.style.display;
menu.parentNode.style.backgroundImage = "url(../../image/minus.gif)";
menu.style.display = (display == "block") ? "none" : "block";
}
}

function expandMenus() {
var menusToExpand = getCookie(menuCookie);
if (menusToExpand != null) {
// if more than one menu has been menusToExpanded,
// create an array of menusToExpanded menus
if (menusToExpand.indexOf(",") != -1) {
menuArray = menusToExpand.split(",");
for (var i=0; i < menuArray.length; i++) {
openMenu(menuArray[i]);
}
} else {
openMenu(menusToExpand);
}
}
}

// =========================================================================
// Cookie functions
// =========================================================================
/* This function is used to set cookies */
function setCookie(name,value,expires,path,domain,secure) {
document.cookie = name + "=" + escape (value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
}

/* This function is used to get cookies */
function getCookie(name) {
var prefix = name + "="
var start = document.cookie.indexOf(prefix)

if (start==-1) {
return null;
}

var end = document.cookie.indexOf(";", start+prefix.length)
if (end==-1) {
end=document.cookie.length;
}

var value=document.cookie.substring(start+prefix.length, end)
return unescape(value);
}

/* This function is used to delete cookies */
function deleteCookie(name,path,domain) {
if (getCookie(name)) {
document.cookie = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-11-27 01:06
どうやら、問題は JavaScript 側にありそうですね。

もう関係なさそうですが、Tomcat 側の問題だとして、スレッドダンプをとるならば
>このDOS窓は、TomcatのWindowの事でしょうか?それとも、別途立ち上げたものでしょうか?
これは、Tomcat が動いているプロセスを表す DOS 窓のほうです。最近 Tomcat 触っていないのでどんなだかわすれてしまいましたが、たぶん起動スクリプトをダブルクリックしてぼこっと現れるウィンドウです。
C'zka
ベテラン
会議室デビュー日: 2003/09/04
投稿数: 64
投稿日時: 2003-11-27 17:33
>インギさん

他の業務で確認に時間がかかりました・・・・・

一応、ctrl + Breakで確認しました。が、そこから吐き出される内容が良く判りませんでした(苦笑

"VM Periodic Task Thread" prio=10 tid=0x8ef918 nid=0x5c8 waiting on monitor
"Suspend Checker Thread" prio=10 tid=0x8f0238 nid=0x890 runnable

というところで終わっています。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2003-11-27 17:45
このスレッドの流れは終えていないんですが、JavaScript の問題なんですよね?
Tomcatなしで、保存した HTML をブラウザで表示しただけでも現象が発生するのであればスレッドダンプの解析は助けにならないと思います。

で、Tomcat 側で起きている問題だとしたら、スレッドダンプの見方は以下のページを見るとよくわかります。
http://www1.jpn.hp.com/products/software/development/java/tips/tune/p23.html

問題となっている JSP が固まっているのであればスタックトレースからどこで止まっているかが判断できますので。

[ メッセージ編集済み 編集者: インギ 編集日時 2003-11-27 17:45 ]
C'zka
ベテラン
会議室デビュー日: 2003/09/04
投稿数: 64
投稿日時: 2003-11-27 18:43
html化しての検証で、勘違いしているところがありました。
今までjspで動かしているところをhtmlに差し替えて動作確認を行っていたので
同じように固まっていましたが、htmlだけを単独で動かしたら、特に問題なく動いていました・・・・。申し訳ありません。

このことから問題は、taglibの問題か、httpリクエストが飛んでいないかの2点になってしまいましたが・・・・

しばらく、再検証してみます。
乳牛
常連さん
会議室デビュー日: 2003/04/15
投稿数: 22
投稿日時: 2003-12-01 12:22
JavaScriptが白だとすると、表示された画面からクリックなしに何らかのHTTPリクエストが投げられて、そのどれかが原因となるものかなと思います。
横取り丸(http://hide.maruo.co.jp/software/ydm.html)のようなツールでHTTPリクエストを拾ってつぶしていくしかないでしょうね。。。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-12-01 12:47
使っているブラウザはなんですか?

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