2011-11-14 25 views
4

我正面臨從32位系統遷移到64位系統的非常非常奇怪的問題。 我有2個envirnoments:Glassfish - 從32位到64位操作系統的Java EE應用程序,不完整的數據庫查詢?

  • 發展 - 的Windows XP 32位
  • 生產 - 的Windows 2008服務器R2 64位

在這兩個系統我用jdk7u1 32位,Glassfish的3.1.1 Web Profile的默認JPA(eclipselink)。 在生產中,我有Oracle數據庫11g版本11.2.0.1.0 32位。在Glassfish中,我使用Oracle的適當驅動程序(ojdbc6.jar)。 我也有Java EE應用程序,從數據庫視圖加載產品列表並將其顯示給用戶,沒有什麼特別的。

當我將應用程序部署到開發計算機並連接到生產數據庫時,一切正常,我可以看到所有記錄。 但是當我部署到生產環境時,命名查詢只返回少量記錄。沒有錯誤,警告等。 應用程序的行爲就像沒有更多記錄,但事實並非如此。 在兩臺機器上,連接屬性完全相同。 當我從兩臺計算機連接到SQL Developer時,我可以看到所有記錄。

我完全不知道發生了什麼事。唯一的區別是操作系統,但這不應該造成問題,因爲JDK是相同的。我對嗎?

+0

缺失記錄中是否存在模式?例如。在「上一次」交易中添加/更新的那些缺失?或者它是完全隨機的? – BalusC

+0

Totaly隨機記錄是在幾周前添加的,最近我們從Oracle 10g xe數據庫遷移到了11g。 – mm1

+0

我注意到當我從SQL查詢生成視圖中刪除內部選擇時,一切正常。 – mm1

回答

0

也許你有緩存問題。我記得默認情況下,Toplink(EclipseLink的基礎)的緩存機制ON。所以,如果是這樣的情景:

  1. 如果您已創建/修改從Machine A這些修改都不會反映在Machine B因爲他們沒有更新了緩存記錄。
  2. 如果您在Glassfish(EclipseLink)之外創建/修改了記錄,則此記錄不會在EclipeLink中更新,既不是Machine AMachine B

您可以驗證它直接在數據庫中更改記錄和驗證,這體現在兩個機器,如果更改不會反映你有一個緩存出現了問題,你可以按照下面的文檔進行配置:

http://wiki.eclipse.org/Introduction_to_Cache_%28ELUG%29

+0

緩存關閉。當我使用SQL開發者等其他數據庫查看器時,我可以看到所有記錄。 – mm1

+0

爲了放棄EclipseLink問題,您是否嘗試過使用相同的數據源直接使用JBDC獲取數據? –

+0

我試着用JDBC - 相同的情況。 – mm1

相關問題