フォーラム:00_インストール・設定
複数Group Sessionの設置について
|
[ 1701 ] 複数Group Sessionの設置について
質問失礼します。
実運用、デバッグ用と複数のGroup SessionをTomcatのwebappディレクトリ内に設置したのですが、 どうも不特定のタイミングでデータベースが壊れてしまうようです。(バックアップから復旧可能) どちらも同じデータベースを参照しているのですが、 このように同一のデータベースを使用した運用は問題があるでしょうか? (当方、JAVA及びH2 databaseにはあまり明るくありません。) どうぞよろしくお願いいたします。
※なお、現在環境およびログが取得できない状況につき、質問のみにて失礼します。
投稿者task 最新書き込み2009/01/25 12:39:15
|
[ 1702 ] Re: 複数Group Sessionの設置について
> どちらも同じデータベースを参照しているのですが、 > このように同一のデータベースを使用した運用は問題があるでしょうか? > (当方、JAVA及びH2 databaseにはあまり明るくありません。)
どうやって同じデータベースを参照させているのですか?
投稿者CLS 最新書き込み2009/01/26 08:41:05
|
[ 1703 ] Re: 複数Group Sessionの設置について
返信ありがとうございます。
データベースに関しては http://www.gs.sjts.co.jp/v2/support/datasetting.html を参考に、gsdata.confを編集してパスを設定しています。 このgsdata.confは設置したGroup Session全て同じ設定を使用しております。
投稿者task 最新書き込み2009/01/26 09:16:19
|
[ 1704 ] Re: 複数Group Sessionの設置について
以下、ログです。 環境: Windows2000/Apache Tomcat 5.5.27/Group Session Version 2.1.3
org.h2.jdbc.JdbcSQLException: 一般エラー: java.lang.RuntimeException: File ID mismatch got=0 expected=272 pos=29577 false org.h2.store.DiskFile:C:\Program Files\Apache Software Foundation\Tomcat 5.5\db\gs2db\gs2db.index.db blockCount:0 General error: java.lang.RuntimeException: File ID mismatch got=0 expected=272 pos=29577 false org.h2.store.DiskFile:C:\Program Files\Apache Software Foundation\Tomcat 5.5\db\gs2db\gs2db.index.db blockCount:0; SQL statement: select CMN_USRM.USR_JKBN as USR_JKBN, CMN_USRM_INF.USI_SEI as USI_SEI, CMN_USRM_INF.USI_MEI as USI_MEI, BBS_FOR_INF.BFI_SID as BFI_SID, BBS_FOR_INF.BFI_NAME as BFI_NAME, THRE_INF.BTI_SID as BTI_SID, THRE_INF.BTI_TITLE as BTI_TITLE, BBS_THRE_SUM.BTS_WRT_CNT as BTS_WRT_CNT, BBS_THRE_SUM.BTS_WRT_DATE as BTS_WRT_DATE from CMN_USRM, CMN_USRM_INF, BBS_FOR_INF, BBS_FOR_MEM, BBS_THRE_SUM, ( select * from BBS_THRE_INF where BTI_SID not in ( select BTI_SID from BBS_THRE_VIEW where BIV_VIEW_KBN = 1 and USR_SID = ? ) ) THRE_INF where BBS_FOR_INF.BFI_SID = THRE_INF.BFI_SID and BBS_FOR_INF.BFI_SID = BBS_FOR_MEM.BFI_SID and BBS_FOR_MEM.USR_SID = ? and THRE_INF.BTI_SID = BBS_THRE_SUM.BTI_SID and BBS_THRE_SUM.BTS_EUID = CMN_USRM.USR_SID and BBS_THRE_SUM.BTS_EUID = CMN_USRM_INF.USR_SID order by BBS_THRE_SUM.BTS_WRT_DATE desc
投稿者task 最新書き込み2009/01/26 10:05:25
|
[ 1705 ] Re: 複数Group Sessionの設置について
[50000-106] at org.h2.message.Message.getSQLException(Message.java:103) at org.h2.message.Message.convert(Message.java:274) at org.h2.message.Message.convert(Message.java:243) at org.h2.command.Command.executeQueryLocal(Command.java:143) at org.h2.command.Command.executeQuery(Command.java:122) at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:96) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92) at jp.groupsession.v2.bbs.dao.BulletinDao.getNotReadThreadList(BulletinDao.java:1000) at jp.groupsession.v2.bbs.dao.BulletinDao.getNotReadThreadList(BulletinDao.java:911) at jp.groupsession.v2.bbs.main.BbsMainBiz.setInitData(BbsMainBiz.java:41) at jp.groupsession.v2.bbs.main.BbsMainAction.__doInit(BbsMainAction.java:81) at jp.groupsession.v2.bbs.main.BbsMainAction.executeAction(BbsMainAction.java:52) at jp.groupsession.v2.struts.AbstractGsAction.execute(AbstractGsAction.java:123) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at
投稿者task 最新書き込み2009/01/26 10:06:51
|
[ 1706 ] Re: 複数Group Sessionの設置について
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at jp.co.sjts.util.http.filter.FilterEncoding.doFilter(FilterEncoding.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source)
投稿者task 最新書き込み2009/01/26 10:07:07
|
[ 1707 ] Re: Re: 複数Group Sessionの設置について
GroupSessionのデータベースは組込みモードで起動しています。 私の予想ですが複数のアプリ(複数のGroupSession)から更新されることを想定していないと おもうので、危険かもしれません。
複数のGroupSessionで同じDBを参照したい理由を教えていただけますか? 何か別の方法で解決できるかもしれません。
投稿者CLS 最新書き込み2009/01/26 10:18:56
|
[ 1708 ] Re: 複数Group Sessionの設置について
やはりそうですか・・・ 複数設置の理由はグループごとにプラグインON/OFFの設定をできないため、 公開用とは別に管理用にもうひとつ用意し、(ソースレベルで)DBAをONにしておくことを考えました。 他にも、あるグループには使用させたくないプラグインがあるといったケースが多いので、 グループごとにプラグインの表示/非表示を制限できる設定があると良いのですが・・・
投稿者task 最新書き込み2009/01/26 10:38:56
|
[ 1715 ] Re: 複数Group Sessionの設置について
BLOGの方でH2をServerModeで動かす方法が載っています。 こちらを参考に、ServerModeで動かしてみてはどうでしょうか?
http://gsession.blog69.fc2.com/blog-entry-53.html
#私も結果を知りたいので、試してみたらSummaryを書いてもらえると助かります
投稿者hj 最新書き込み2009/01/27 12:46:54
|
[ 2804 ] サーバーモードの立ち上げ(1)
業務で必要になったのでサーバモードの立ち上げにトライしてみました。
変更するファイル:GSH2ServerUtil.java
参照クラスの追加(GSH2Util.javaを参照): import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.sql.SQLException; import java.text.DecimalFormat; import java.util.Enumeration; import java.util.ResourceBundle; import java.util.Vector; import jp.co.sjts.util.Encoding; import jp.co.sjts.util.jdbc.DataSourceModel; import org.h2.tools.RunScript;import org.xml.sax.SAXException;
投稿者kon 最新書き込み2010/03/19 11:23:37
|
[ 2805 ] サーバーモードの立ち上げ(2)
************************************************** サーバーインスタンスのstatic化
public class GSH2ServerUtil implements IDbUtil { /** ロギングクラス */ private static Log log__ = LogFactory.getLog(GSH2ServerUtil.class); /** DB PORT */ private static final int DB_PORT__ = 9092; /** DB名 */ private static final String DB_NAME__ = "gs2db"; ->変更後 public class GSH2ServerUtil implements IDbUtil { /** ロギングクラス */ private static Log log__ = LogFactory.getLog(GSH2ServerUtil.class); /** DB PORT */ private static final int DB_PORT__ = 9092; /** DB名 */ private static final String DB_NAME__ = "gs2db"; /** Server */ private static Server server = null;
************************************************** サーバー起動方法の変更
// H2サーバを起動(別スレッド) Server server = Server.createTcpServer( new String[] { "-baseDir", dbDir, "-tcpPort", port, "-tcpAllowOthers" }); ->変更後 server = Server.createTcpServer( new String[] { "-baseDir", dbDir, "-tcpPort", port, "-tcpAllowOthers" });
投稿者kon 最新書き込み2010/03/19 11:24:49
|
[ 2806 ] サーバーモードの立ち上げ(3)
************************************************** サーバー停止方法の変更 public void shutdownDbServer(String rootPath, Connection con) throws Exception { PreparedStatement pstmt = null; try { SqlBuffer sql = new SqlBuffer(); sql.addSql("SHUTDOWN"); pstmt = con.prepareStatement(sql.toSqlString()); log__.info(sql.toLogString()); pstmt.executeUpdate(); con = null; System.gc();
log__.info("H2 DataBaseを終了");
} catch (Exception e) { log__.debug("H2 DataBaseの終了に失敗", e); throw new ServletException("H2 DataBaseの終了に失敗", e); // } finally { // JDBCUtil.closeConnection(con); } }
->変更後 public void shutdownDbServer(String rootPath, Connection con) throws Exception { try{ server.stop(); } catch (Exception e) { log__.debug("H2 DataBaseの終了に失敗", e); throw new ServletException("H2 DataBaseの終了に失敗", e); } }
************************************************** DB初期化方法の変更
public void init(String rootPath)の変更 public boolean isH2v11(String path)の追加 public void convertH2v11tov12(String rootPath)の追加 private DataSourceModel getDataSourceModel(String appRoot)の追加 (上記はGSH2Util.javaと同等のため割愛)
投稿者kon 最新書き込み2010/03/19 11:26:19
|
[ 2807 ] サーバーモードの立ち上げ
上記はGS2のバージョンは2.5.3を元に変更しました。
サーバ動作させるためにはGs2Resources.propertiesをServerモードに する必要があります。
------ とりあえずは動作していますが、エラー処理や[Server]のstatic処理が これでよかったのかは自信がありません。 今回の投稿を人柱に確かなソースが築きあげられればいいのですが。
投稿者kon 最新書き込み2010/03/19 11:31:17
|