RSSフィードについて

RSSリーダーで、フォーラムの新着投稿情報がチェックできます。
詳しくは下記ページを参照して下さい。

RSSフィード  RSSフィードについて

ご自由に情報交換の場として御利用ください。
また質問の前には「回答を得るには?」を参照してください。


GroupSessionへの要望があれば参考にさせていただきます。
要望リストも参考にしてください。


 
フォーラム  フォーラム
00_インストール・設定
スレッド  タイトル

不具合?ログイン直後にエラーになる


[ 4181 ] 不具合?ログイン直後にエラーになる
投稿者: takaoka
投稿日時:  2011/09/28 00:52:41
フィードバックの投稿先が不明なのでこちらに書きます。

1) gsession3.war をダウンロードして、既存の apache+tomcat が稼働している環境の webapps に配置しました。
2) その後、apache の ProxyPass の設定を追加して http://server1/gsession3/ でアクセスできるようにし、ブラウザで開くと Loading... の後で、ログイン画面が表示されました。
3) この状態で、ユーザ admin パスワード admin でログインを行うと、以下の例外で終了してしまいます。

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
java.lang.String.substring(String.java:1937)
jp.groupsession.v2.struts.AbstractGsAction.checkReferer(AbstractGsAction.java:900)
jp.groupsession.v2.struts.AbstractGsAction.execute(AbstractGsAction.java:86)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
(略)

問題の処理は、

//サーバ名称が含まれているかをチェックする
String refServerName = referer.toString();
int refererIndex = referer.indexOf("://");
if (refererIndex >= 0) {
refServerName = refServerName.substring(refererIndex + 3);
}
if (referer.indexOf(":") >= 0) {
refServerName = refServerName.substring(0, refServerName.indexOf(":"));
}

という部分の最後の substring なのですが、referer が "http://server1/gsession3/" の場合、refServerName は "server1/gsession3/" です。この状態で refere.indexOf(":") は 4 で refServerName.indexOf(":") は -1 なので、例外が出て当然だと思われます…。
  引用返信
[ 4184 ] Re: 不具合?ログイン直後にエラーになる
投稿者: GS導入準備中の人
投稿日時:  2011/09/28 11:17:06
apache+tomcatで運用しているという事ですので、

> 2) その後、apache の ProxyPass の設定を追加して http://server1/gsession3/ でアクセスできるようにし、ブラウザで開くと Loading... の後で、ログイン画面が表示されました。

apache の ProxyPass の設定は、下記のような設定になってますでしょうか?
(ポート指定の記述をすれば、解決しそうな気がします。)

ProxyPass ajp://internalserver:8009/gsession3/

# なお internalserver は、tomcatの配置されているサーバ名です
# ポート番号 8009 は、インストールガイドのとおりです。
# 参照 http://www.gs.sjts.co.jp/v3/support/install_apache_tomcat.html

  引用返信
[ 4187 ] Re: 不具合?ログイン直後にエラーになる
投稿者: takaoka
投稿日時:  2011/09/29 10:53:00
ProxyPass の設定は同様になっています。

referer はブラウザから送られてくるデータですので、apache の設定は特には関係ないはずです。ログイン画面が正常に表示できるのは、ブラウザの URL 欄に直接 http://server1/gsession3/ と入力しているので、ブラウザから送られてくる referer が空になっているためであると思います。
これに対して、ログインを実行すると referer は http://server1/gsession3/ になりますので、ダウンロードして確認したソースコードだと明らかに失敗します。
ログイン画面に http://server1:80/gsession3/ として接続した場合、ブラウザが標準の 80 というポートを除去してしまうので同様のエラーになりました。Web ブラウザを使わずに強引にポート番号のついたリクエストを投げてみてもよいのですが、エラーが出ても出なくても結果画面の操作に問題がでるのと、実際の運用が不可能ということになってしまうので解決策にはならないかと思っています。

十分な時間がとれたら修正&ビルドしてみてもよいのですが、ちょっと無理そうです。
  引用返信
[ 4188 ] Re: 不具合?ログイン直後にエラーになる
投稿者: GS導入準備中の人
投稿日時:  2011/09/30 10:31:56
GS Ver.3.5.3 で、修正していただけたようですよ。

修正箇所:
  下記の★の行。

[GS Ver.3.5.3 で修正された内容]
//サーバ名称が含まれているかをチェックする
String refServerName = referer.toString();
int refererIndex = referer.indexOf("://");
if (refererIndex >= 0) {
refServerName = refServerName.substring(refererIndex + 3);
}

★ if (refServerName.indexOf(":") >= 0) {
refServerName = refServerName.substring(0, refServerName.indexOf(":"));
★ } else if (refServerName.indexOf("/") >= 0) {
refServerName = refServerName.substring(0, refServerName.indexOf("/"));
}
  引用返信
 
スレッドURL:
 

クラウド版グループウェアbycloud

Twitter
開発スタッフのつぶやき http://twitter.com/gsession_jts
Facebook
メールマガジン
GroupSessionのセキュリティ情報、アップデート情報をお伝えするメールマガジンです。(無料)
メルマガ『速報!GroupSession』
ブログ
スタッフによる開発日誌を公開しています。
「Public JTS スタッフブログ」


Copyright 日本トータルシステム株式会社