2010-12-06 27 views
3

私はGlassfish 3.0.1で動作するアプリケーションを持っています。私はすでにいくつかのインスタンスでそれを正常にインストールしましたが、今は新しいサーバーを設定しようとしています。ログを見ると、配備が最初で罰金になるが、その後、私はこれを取得:テーブル/ビュー 'EJB__TIMER__TBL'は存在しません

[#|2010-12-06T17:53:38.020+0000|WARNING|glassfish3.0.1|org.eclipse.persistence.session.file:/opt/sun/glassfish/glassfish/domains/domain1/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App|_ThreadID=31;_ThreadName=Thread-1;| 
Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.SQLSyntaxErrorException: Table/View 'EJB__TIMER__TBL' does not exist. 
Error Code: 30000 
Call: SELECT TIMERID, BLOB, INITIALEXPIRATIONRAW, SCHEDULE, INTERVALDURATION, OWNERID, STATE, LASTEXPIRATIONRAW, PKHASHCODE, CREATIONTIMERAW, CONTAINERID FROM EJB__TIMER__TBL WHERE (((CONTAINERID = ?) AND (OWNERID = ?)) AND (STATE = ?)) 
bind => [84650008375328779, server, 0] 
Query: ReadAllQuery(name="findTimersByContainerAndOwnerAndState" referenceClass=TimerState sql="SELECT TIMERID, BLOB, INITIALEXPIRATIONRAW, SCHEDULE, INTERVALDURATION, OWNERID, STATE, LASTEXPIRATIONRAW, PKHASHCODE, CREATIONTIMERAW, CONTAINERID FROM EJB__TIMER__TBL WHERE (((CONTAINERID = ?) AND (OWNERID = ?)) AND (STATE = ?))") 
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:687) 
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:530) 
    at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:529) 
    at org.eclipse.persistence.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:133) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:205) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:191) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java: 
[snip] 

__TimerPool接続プールのすべてのプロパティはデフォルト値を(それが組み込みDerbyドライバーを使用しています)があります。私が知る限り、設定は他のサーバーと同じです - なぜこのサーバーでは失敗しますか?


EDITは、私はそれが($GLASSFISH_HOME/glassfish/domains/domain1/lib/databases/ejbtimerに位置)はGlassfishの作業インスタンスからのタイマDBをコピーして動作させることができました。私はまだこの問題の原因を知りたいと思う。

私のアプリケーションはタイマーを使用していますが、永続的ではありません(少なくとも、そうでなければなりません)。だからGlassfishがこのDBを見ている理由はありませんよね?

答えて

0

GFがまだ稼働している間にファイルを上書きしてしまったとき、たとえばアップグレードの一部がうまくいっていないことが起こったのです。私が見つけた解決策はあなたと同じでした:作業中のGFをシャットダウンし、ファイルを<gfhome>/domains/domain1/lib/databaseにコピーします。

関連する問題