2017-02-20 52 views
0

在wildfly 10.0.0.Final,eclipselink似乎沒有得到適當的支持。當然,hibernate是爲wildfly提供的默認JPA,但支持eclipselink模塊,並且使用eclipselink很有可能。然而,在運行時,似乎可以解析hibernate可以處理的一些特殊的wildfly路徑,但eclipselink似乎不知道如何處理。Wildfly 10.0.0.Final - persistence.xml jar-file元素在使用eclipselink時不正確支持

從我已經能夠調試,現在確定我的配置是100%正確的。配置適用於

  • wildfly +冬眠/罐-file元素解析爲VFS:在運行時間期間/路徑
  • 的WebLogic +的EclipseLink /罐-file元素解析到文件:都靈運行/路徑
  • widlfy +的EclipseLink /不起作用 - 卡使用<class>元素

我認爲這個問題的根源是的EclipseLink不準備應對wildfly特殊VFS(虛擬文件系統)的路徑。

儘管eclipselink正在處理與hibernate完全相同的vfs路徑:Hibernate掃描路徑並找出實體類 - 另一個出現空手。

我把以下示例應用程序放在一起。 https://github.com/99sono/eclipselink-wildfly-jar-file-issue

應用程序分支到兩個相同的路徑。

  • 一個對於WebLogic,
  • 其他爲Wildfly。

該weblogic應用程序可以完美部署。 但是,它主要用於演示jar文件元素定義的「非常好」,具體取決於某人是否是: - 從eclipse展開(例如作爲爆炸戰爭) - 或者部署爲真實WAR應用程序。 這很可能歸結爲一個weblogic eclipse插件的bug,但是......它可以工作。 也就是說,爲了使代碼能夠在兩種模式下部署,我不得不使用jar文件,非JEE規範兼容值../lib/entities.jar。這在應用自述文件中有更詳細的解釋。

在任何情況下,Weblogic在使用通常的文件:/ url時都有很大的優勢,eclipselink可以完美地處理。 因此,這裏有一個解決這個混合的相對路徑父文件夾行爲的weblogic,與應用程序的部署方式相關聯。

第二個應用程序是wildfly。 這是事情變得艱難的地方。 在我們部署應用程序並調試Hibernate引導邏輯或eclipselink引導邏輯時,我們發現正在使用虛擬文件系統(vfs)url。 如上所述,對於休眠和eclipselink,vfs對jar文件的URL是相同的。

如果我們從eclipse中部署,我們的項目就會爆炸。它們不作爲真正的.jar文件部署,而是部署到分解目錄中。

另一方面,如果我們使用管理控制檯部署實際的WAR文件,而不是我們的路徑,請參考wildfly bin目錄。 在這種情況下,這些路徑是無法在我們的真實文件系統中打開的100%虛擬化目錄。這與我們使用jboss工具從eclipse進行部署的場景形成了鮮明的對比。我們的文件系統可以打開分解的direcotires的路徑。

wild seems似乎發生了什麼: - 儘管在兩種情況下,hibernate似乎都能夠應付任何vfs路徑jar文件, - Eclipselink不能。

提供的示例應用程序的自述文件提供了一些用於調試部署的良好類的提示。

是否有人知道解決方法,使jar文件工作eclipselink?

我在ecipselink的persistence.xml中做錯了什麼,eclipselink準備好處理jboss的vfs嗎?

在目前的時間點,正常工作的唯一方法是<class>qualified</class的方法,但當然這種方法在大多數情況下是無用的,只是有助於創建維護地獄。

我會真誠地歡迎越來越JAR文件元素上wildfly 10

與ecipselink 2.6.4正常工作的任何幫助,我有在隧道的盡頭的任何光亮?

親切的問候

回答

0

現在解決了這個問題。

實際上jarf文件屬性在wildfly 10中得到了正確支持。 我遇到的問題與我們的eclipselink模塊配置是基於過時的wildfly文檔創建的事實有關,在很短的時間內很可能還沒有發明虛擬文件系統,並且jipijapa-eclipselink-10.0.0.Final.jar不存在。

一旦我看到下面的hibernate cllass實施掃描: jar:file:/ C:/dev/Widlfly10/wildfly-10.0.0.Final/modules/system/layers/base/org/hibernate/jipijapa- hibernate5 /主/ jipijapa-hibernate5-10.0.0.Final.jar!/org/jboss/as/jpa/hibernate5/HibernateArchiveScanner.class

這冬眠類是由一個JBoss擁有保持罐子,接下來的問題爲什麼不是這樣一個用於eclipse鏈接的jar。 它確實存在。

所以對於VFS文件掃描的支持是由下式給出:

<dependency> 
      <groupId>org.wildfly</groupId> 
      <artifactId>jipijapa-eclipselink</artifactId> 
      <version>10.0.0.Final</version> 
      <scope>provided</scope> 
</dependency> 

和所有的人需要一次模塊配置在wildfly模塊是適當做是誘導的EclipseLink使用JBoss的archieve廠家:

<property name="eclipselink.archive.factory" value="org.jipijapa.eclipselink.JBossArchiveFactoryImpl"/> 

這是所有文檔中: https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-UsingEclipseLink

相關問題