2

GlassfishWebアプリケーションに問題があります。Glassfishアプリケーションで永続性プロバイダーとEJBファセットを使用しています。Mysql接続はJDBCリソースとして構成されます。問題は、データベースをローカルで(mysql promtまたは他のクライアントを使用して)更新しても、glassfishサーバーが古い値を「認識」していることです。私は、glassfisサーバーとMsyqlDBの間のどこかにおそらく何らかのタイプのキャッシュがあることを認識しています。これを修正するために変更できるパラメータがあると確信していますが、かなりの時間を検索した後、それを見つけることができないようです。誰かが私を問題のある地域に案内することはできますか?mysql JDBCドライブ?web.xml?接続プール?

いくつかの技術的な詳細:データベース:Mysql 5.1サーバー:Glassfish3.1サーバーはrootユーザー名でdbに接続しています私はGlassfishアプリケーション構成(sun-resources.xml)の永続性プロバイダーとしてEclipseLinkを使用しています:

<jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="mysql_drivingschool_rootPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
    <property name="serverName" value="localhost"/>
    <property name="portNumber" value="3306"/>
    <property name="databaseName" value="drivingschool"/>
    <property name="User" value="*****"/>
    <property name="Password" value="****"/>
    <property name="URL" value="jdbc:mysql://localhost:3306/******"/>
    <property name="driverClass" value="com.mysql.jdbc.Driver"/>
</jdbc-connection-pool>
4

1 に答える 1

1

JPAは2層のキャッシュメカニズムを使用します。第1レベルのキャッシュは、現在のPersistenceContextです。レベル2キャッシュは、異なるコンテキスト間で共有されます。

キャッシュの動作を制御できます。使用しているJPAの実装によって異なります。EclipseLinkを使用しているので、この概要を参照してください。ただし、これによりアプリケーションのパフォーマンスが低下します。

データベースを手動で更新する必要がある場合は、(サーバーではなく)アプリケーションを再起動します。本番状態でより頻繁に発生する場合は、関連するデータをデータベースから直接フェッチする必要があります。

于 2012-05-25T07:52:30.283 に答える