簡體   English   中英

無法在Websphere自由概要文件中創建EntityManagerFactory

[英]EntityManagerFactory cannot be created in websphere liberty profile

問題描述:

我正在嘗試在本地Eclipse環境下將Web應用程序從Websphere 8.5.5遷移到Websphere Liberty Profile(WLP 16.0.0.3)。 該應用程序在Websphere中運行良好,但是在WLP中啟動時出現以下異常:

創建名稱為'entityManagerFactory'的bean時出錯:FactoryBean對象的后處理失敗; 嵌套的異常是java.lang.NoClassDefFoundError:org.apache.openjpa.persistence.query.QueryBuilder

我希望QueryBuilder類出現在Liberty運行時提供的opnJPA實現中,但是由於某種原因未正確加載。 任何幫助將不勝感激。

關於jpa配置的一些細節:

  • WLP jpa級別:jpa-2.0

  • 春季版本:3.1.4.RELEASE

  • EntityManagerFactory bean:class =“ org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean”

  • jpaVendorAdapter:class =“ org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter”

  • 交易管理器:class =“ org.springframework.orm.jpa.JpaTransactionManager”

默認情況下,jpa-2.0功能僅向應用程序公開規范標准的JPA軟件包。 公開JPA特定implementaiton類外的開箱。

在您的情況下,由於您需要向應用程序(以及應用程序內部的庫,例如Spring / Hibernate)公開Liberty的OpenJPA類,因此可以使用Liberty的“ api type visibilty”機制來選擇加入。

我猜您已經在server.xml中為您的應用程序配置了以下內容:

<application location="myApp.war"/>

要允許您的應用程序查看第三方(例如,OpenJPA)類,可以執行以下操作:

<application location="myApp.war">
  <!-- spec, ibm-api, and stable are enabled by default. -->
  <!-- Add third-party to get access to OpenJPA classes from your application -->
  <classloader apiTypeVisibility="spec, ibm-api, stable, third-party"/>
</application>

官方Liberty文檔: 訪問第三方API

您可能想知道:

為什么Liberty默認不提供third-party類(例如OpenJPA)?

這是因為當所有事物保持不變並且您只是升級到較新的Liberty版本時,Liberty確保零遷移。 零遷移實質上意味着“升級時無需更改任何應用程序或配置”。 第三方類不受Liberty的直接控制,並且可能會破壞API的更改,從而破壞零遷移。 因此,Liberty默認僅公開官方/標准API,例如JavaEE和MicroProfile API。

默認情況下,自由對應用程序隱藏非API類。 被認為是API的東西包括Java EE,MicroProfile和其他一些東西。 您可以通過配置將其開放給第三方開源api。

像這樣的配置:

<webApplication location="myapp.war">
  <classLoader apiTypeVisibility="+third-party" />
</webApplication>

鑒於您沒有提供服務器配置示例或異常的堆棧跟蹤信息,因此我不知道這是否可以解決您的問題,但這是基於有限信息的最佳建議。

此配置可能不適用於16.0.0.3。 +第三方支持可能是最近才添加的(如果不替換spec,ibm-api,api,stable,third-party將可以使用,但更冗長且不易使用)。 我強烈建議您升級到新版本,因為16.0.0.3不再提供功能或安全修復程序。 最新版本是19.0.0.3。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM