ejb j2ee 中的持久性上下文范围和其他问题
Persistence context scope in a ejb j2ee and other questions
对于冗长的问题,我深表歉意。
我正在开发 EJB 应用程序。我有两个 EJB eclipse 项目(Ejb1
和 Ejb2
)和其他动态 Web 应用程序(Web1
),它们将被编译并添加到父 EjbEar
项目并打包为 EjbEar.ear
文件。
问题 1: 我首先在 EJb1
项目的 META-INF
文件夹中创建了一个 persistence.xml
,这有助于我将 entitymanager 注入到会话 bean 并开始工作。 (下面的代码)
@PersistenceContext(unitName = "ejbPersistanceunit")
private EntityManager em;
在 Ejb2
中,我创建了另一个会话 bean 并像上面一样注入了实体管理器(这里我 did not
配置了 persistence.xml)但是当我从客户端调用时,我从 Ejb1 和 Ejb2 项目获得响应。
为什么 EntityManger 在两个 ejb 项目之间共享?如果我的 Ejb2 项目需要另一个 persistence.xml 用于不同的数据源,我是创建另一个还是将其包含在现有的 persistence.xml 中?也会共享吗?我的 Web1
项目是否也以同样的方式获取 Entitymanager?
问题 2: 我在 Ejb1
项目中有 sessionbeans,它们的远程接口是在 Web1
项目中创建的,但是新公开这些的最佳方法是什么在 ejb 项目中创建 Entities/Interfaces? (对于企业应用程序中的多个 Ejb 项目)
问题3:Ejb 3.0不再有正确的home和remote接口?
Why does the EntityManger get shared between two ejbprojects?
如果您不想,可以通过隔离 Ejb jar 来禁用此共享。如果 jboss 打开 jboss-deployment-structure.xml
并将 属性 ear-subdeployments-isolated
设置为 true
If my Ejb2 project needs another persistence.xml for a different data
source, do I create another one or have it included in the existing
persistence.xml? will it also be shared ?
这完全取决于您的用例,
如果您的系统中有多个数据源,那么我会定义我的 persistence.xml 基于
我打包访问持久性单元的 bean 的方式。
以防万一,如果属于两个数据源的所有实体都打包在一起,那么我会在同一个 persistence.xml
中定义 2 个持久性单元
如果它们在 2 个罐子中以不同的方式包装,则可能出现以下任何一种情况
- 如果 beans 访问由相同服务的实体
persistenceUnit/Datasource 打包在一起然后我会创建
2 persistence.xml 与关联的
PersistenceUnit
在 2 个罐子 中
- 如果隔离设置为 false,那么我可以定义我的
persistence.xml
上面或者我会在单个中定义 2 persistenceUnit
persistence.xml
并确保罐子与
Persistence.xml
先部署
Does my Web1 project also get hold of the Entitymanager in the same
way?
是的,您可以访问 persistenceContext
注意:我假设你的应用程序服务器是 JBoss
I have sessionbeans in Ejb1 project and their remote interfaces are
created in Web1 project but what is the best approach in exposing
these newly created Entities/Interfaces in an ejb project? (For more
than one Ejb project in an Enterprise application)
据我所知,这取决于您的系统架构/设计。如果我是你,我会把我的远程接口和 Bean 打包在同一个 EJB-Jar 中,我会使用查找 EJB bean 的业务委托,或者当远程接口在网络中可见时,我会在web层并使用它。
Ejb 3.0 no longer have the home and remote interfaces correct?
没有称为 home 和 remote 的接口,但概念仍然以注释的形式存在 @Remote & @Local
,这意味着您定义接口并且可以在接口中声明 @Remote or @Local
级别或 Bean 级别。
对于冗长的问题,我深表歉意。
我正在开发 EJB 应用程序。我有两个 EJB eclipse 项目(Ejb1
和 Ejb2
)和其他动态 Web 应用程序(Web1
),它们将被编译并添加到父 EjbEar
项目并打包为 EjbEar.ear
文件。
问题 1: 我首先在 EJb1
项目的 META-INF
文件夹中创建了一个 persistence.xml
,这有助于我将 entitymanager 注入到会话 bean 并开始工作。 (下面的代码)
@PersistenceContext(unitName = "ejbPersistanceunit")
private EntityManager em;
在 Ejb2
中,我创建了另一个会话 bean 并像上面一样注入了实体管理器(这里我 did not
配置了 persistence.xml)但是当我从客户端调用时,我从 Ejb1 和 Ejb2 项目获得响应。
为什么 EntityManger 在两个 ejb 项目之间共享?如果我的 Ejb2 项目需要另一个 persistence.xml 用于不同的数据源,我是创建另一个还是将其包含在现有的 persistence.xml 中?也会共享吗?我的 Web1
项目是否也以同样的方式获取 Entitymanager?
问题 2: 我在 Ejb1
项目中有 sessionbeans,它们的远程接口是在 Web1
项目中创建的,但是新公开这些的最佳方法是什么在 ejb 项目中创建 Entities/Interfaces? (对于企业应用程序中的多个 Ejb 项目)
问题3:Ejb 3.0不再有正确的home和remote接口?
Why does the EntityManger get shared between two ejbprojects?
如果您不想,可以通过隔离 Ejb jar 来禁用此共享。如果 jboss 打开 jboss-deployment-structure.xml
并将 属性 ear-subdeployments-isolated
设置为 true
If my Ejb2 project needs another persistence.xml for a different data source, do I create another one or have it included in the existing persistence.xml? will it also be shared ?
这完全取决于您的用例, 如果您的系统中有多个数据源,那么我会定义我的 persistence.xml 基于 我打包访问持久性单元的 bean 的方式。
以防万一,如果属于两个数据源的所有实体都打包在一起,那么我会在同一个 persistence.xml
中定义 2 个持久性单元
如果它们在 2 个罐子中以不同的方式包装,则可能出现以下任何一种情况
- 如果 beans 访问由相同服务的实体
persistenceUnit/Datasource 打包在一起然后我会创建
2 persistence.xml 与关联的
PersistenceUnit
在 2 个罐子 中
- 如果隔离设置为 false,那么我可以定义我的
persistence.xml
上面或者我会在单个中定义 2persistenceUnit
persistence.xml
并确保罐子与Persistence.xml
先部署
Does my Web1 project also get hold of the Entitymanager in the same way?
是的,您可以访问 persistenceContext
注意:我假设你的应用程序服务器是 JBoss
I have sessionbeans in Ejb1 project and their remote interfaces are created in Web1 project but what is the best approach in exposing these newly created Entities/Interfaces in an ejb project? (For more than one Ejb project in an Enterprise application)
据我所知,这取决于您的系统架构/设计。如果我是你,我会把我的远程接口和 Bean 打包在同一个 EJB-Jar 中,我会使用查找 EJB bean 的业务委托,或者当远程接口在网络中可见时,我会在web层并使用它。
Ejb 3.0 no longer have the home and remote interfaces correct?
没有称为 home 和 remote 的接口,但概念仍然以注释的形式存在 @Remote & @Local
,这意味着您定义接口并且可以在接口中声明 @Remote or @Local
级别或 Bean 级别。