【问题标题】:EJB can't find Optional Package and thus Persistence Unit in itEJB 找不到可选包,因此在其中找不到持久性单元
【发布时间】:2012-04-30 19:04:41
【问题描述】:

环境

  • WebLogic 11g(随后是 Java EE 5 和 EJB 3.0)
  • 包含 JAR 的 EJB 还包含所有持久性实体。它工作得很好(有一个使用 EJB 的 Web 应用程序,它按预期工作)。我决定将实体分离到另一层,为此我创建了另一个模块并将其部署为可选包。所以现在我有两个 JAR 文件,顺便说一下,我分别部署而不是作为一个应用程序的一部分;持久性 JAR 和 EJB JAR。

问题

在部署 EJB 期间,我收到以下错误(告诉我未找到可选包):

无法部署 EJB:来自 BLayer-1.0.0-SNAPSHOT.jar 的 StocksBean:范围内没有名为“internalAppsPU”的持久性单元
BLayer-1.0.0-SNAPSHOT.jar。可用的持久性单位:[]

更多信息

持久化模块的 JAR 清单

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: bm03043
Build-Jdk: 1.6.0_18
Extension-Name: com.amir.persistence
Implementation-Version: 1.0.0
Specification-Version: 1.6

persistence.XML 在持久化模块 JAR 的 META-INF 文件夹中

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="internalAppsPU" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>InternalAppsDS</jta-data-source>
        <class>com.xx.persistence.Stock</class>
        <properties>
            <property name="eclipselink.logging.level" value="FINE" />
        </properties>
    </persistence-unit>
</persistence>

EJB 的代码

package com.xx.bll;

// bunch of imports //

@Stateless(name="StocksBean", mappedName="Internal-BLayer-StocksBean")
public class StocksBean implements Stocks {

   @PersistenceContext(unitName = "internalAppsPU")
   private EntityManager em;

   // SNIP //
}

EJB 的 JAR 清单

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: bm03043
Build-Jdk: 1.6.0_18
Extension-List: PLayer
PLayer-Extension-Name: PersistenceLayer
PLayer-Implementation-Version: 1.0.0-SNAPSHOT
PLayer-Specification-Version: 1.6

请注意以下几点:

  • 之前在 WebLogic 中配置了 InternalAppsDS 数据源。
  • 在某些时候,我的印象是 Extension-List 中的名称必须与部署为可选包的 JAR 文件的名称相匹配。但是当我阅读更多时,我意识到这是不正确的。

【问题讨论】:

  • 您是否尝试过使用 com.amir.persistence 作为扩展名?
  • 是的。就是这样。我前一阵子解决了这个问题,然后我今天看到了你的评论。从未收到有人实际回复的通知。谢谢。那会为我节省一些时间。

标签: jpa weblogic ejb-3.0 weblogic11g persistence.xml


【解决方案1】:

所以答案是使用与库中相同的扩展名。

【讨论】:

    猜你喜欢
    • 2016-03-18
    • 1970-01-01
    • 2017-11-01
    • 2011-04-21
    • 1970-01-01
    • 2011-06-04
    • 2014-01-16
    • 2021-05-18
    相关资源
    最近更新 更多