Weblogic中的
生产模式: -DproductionModeEnabled=true
可以利用weblogic builder来配置ejb的xml文件
访问环境入口
InitialContext ctx = new InitialContext ();
Integer max = (Integer)ctx.lookup("java:comp/env/maxMessage");
另一种方式
InitialContext ctx = new InitialContext ();
Context envctx = (Context)ctx.lookup("java:comp/env");
Integer max = (Integer)envctx.lookup("maxMessage");
资源引用
资源:
Database javax.sql.DataSource java.sql.Connection
JMS Topic java.jms.TopicConnection javax.jms.TopicConnection
JMS Queue javax.jms.QueueConnectionFactory javax.jms.QueueConnection
Internet location java.net.URL java.net.URL.Connection
ejb-jar.xml
<resource-ref>
<res-ref-name>jdbc/DSRef</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
weblogic-ejb-jar.xml
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/DSRef</res-ref-name>
<jndi-name>ExampleDS</jndi-name>
InitialContext ctx = new InitialContext ();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/DSRef");
认证:
<res-auth>Application</res-auth>
InitialContext ctx = new InitialContext ();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/DSRef");
Connection conn = ds.getConnection(username,password);
Statement stmt = conn.createStatement();
EJB 引用 EJB
ejb-jar.xml
<ejb-ref>
<ejb-ref-name>ejb/HelloWorldRef</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>...
<remote>...
<ejb-link>./example01-HelloEJB.jar#HelloEJB</ejb-link>
</ejb-ref>
welogic-ejb-jar.xml
<reference-descriptor>
<ejb-reference-description>
<ejb-ref-name>ejb/HelloWorldRef</ejb-ref-name>
<jndi-name>HelloWorld</jndi-name>
ejb的安全
角色
(1)在部署描述文件中读出角色定义
(2)在管理控制台中管理的角色
在安全域中选择"Ignore Security Data in Deployment Descriptors", 则角色和其他安全信息将不从部署描述文件中读出
在XM部署描述文件中声明
访问的资源取决于用户的角色
<method>
<ejb-name>ServerControllerEJB</ejb-name>
<method-intf>Remote/Home(Remote和Home对象)</method-intf>
<method-name>execute(*表示所有方法)</method-name>
</method>
可以映射到部署描述文件中的角色
可以使用EJBContext的方法获得安全信息
//返回当前调用者的安全身份
java.security.pricipal getCallerPrincipal();
//如果当前调用者是定义在部署描述文件中安全角色组的一部分,则返回真
boolean isCallerInRole(String roleName);
<transaction-type> Bean或Container
只与<session>或<message-driven>一起使用(实体EJB通常使用容器管理事务)
容器管理事务(CMT)
<trans-attribute>Required</trans-attribute>
有六个值:
Never:不能有事务
Mandatory:必须启动全局事务
NotSupported:将客户事务挂起
Supports:可包含在任意客户启动的事务中
Required:强制EJB在客户或容器启动的事务中执行
RequiresNew:只能在容器启动的新事务中执行
过多的细粒度事务可对事务和资源管理器带来过多的数据流量
过多的粗粒度事务可阻塞其它客户访问相同的资源
写操作使用Required,读操作使用Supports或NotSupported
事务隔离级别(Isolation):平衡以下指标
(1)数据的完整性
(2)并发的访问速度
Dirty Read:读未提交
Non-repeatable Read:在同一事务内
Phantom Row:读取被其他人删除(但尚未提交)的行数据
在weblogic-ejb-jar.xml中设置
<transaction-isolation> 文件中的最后一个元素
<isolation-level>xxx_xxx_xxx</isolation-level>
<method>
<ejb-name>xxx</ejb-name>
<method-name>*</method-name>
</method>
... ... ...
</weblogic-ejb-jar>
TRANSACTION_READ_UNCOMMITTED: 最快许可的事务隔离级别,可以脏读,幻行和不可重复读
TRANSACTION_READ_COMMITTED: 不可以脏读,可以幻行和不可重复读
TRANSACTION_REPEATABLE_READ: 不可以脏读和不可重复读,可以幻行
TRANSACTION_SERIALIZABLE: 不可以脏读,不可重复和幻行
强制事务回滚
EJBContext的setRollbackOnly():强制当前事务在结束时回滚
有效的事务管理:
if (ctx.getRollbackOnly()) {
return;
}
Bean管理的事务(BMT)
javax.transaction.UserTransaction接口(只有会话和消息驱动bean能使用)
begin()
commit()
rollback()
setRollbackOnly()
getStatus()
setTransactionTimeout()
在有状态的会话EJB中
rollback不能恢复实例中任何修改过的属性,SessionSynchronization接口可以用来手工恢复修改过的属性
EJB本地(Local)接口
Local接口和Remote接口的区别
. Local接口是EJBLocalObject
. Local本地接口是EJBLocalHome
. 不能抛出RemoteException
. 允许使用Non-Serializable的方法参数和返回类型
. 当访问local对象时不必调用PortableRemoteObject.narrow()
HelloWorldLocal, HelloWorldLocalHome
HelloWorldRemote, HelloWorldRemoteHome
可以同时使用local和远程接口
部署描述文件
<home>
<remote>
<local-home>
<local>
<ejb-class>
<jndi-name>
<local-jndi-name>
使用local接口不能实现负载均衡和故障恢复。
使用远程接口,必须通过传值的方式传递参数
使用local接口,可以使用传引用的方式传递参数
- 大小: 26.3 KB
- 大小: 27.4 KB
- 大小: 28 KB
- 大小: 26.6 KB
- 大小: 25.9 KB
分享到:
相关推荐
如果你的MyEclipse没有内置EJB工具,你可能需要通过在线更新或者下载扩展包来添加EJB支持。进入MyEclipse的“Help”菜单,选择“Check for Updates”,检查并安装所有可用的更新,确保EJB相关的插件已安装。 二、...
`jboss-ejb3.xml`是JBoss AS 7特有的配置文件,用于扩展或覆盖`ejb-jar.xml`中的配置。这个文件允许开发者针对特定的JBoss实现进行更细致的定制,比如JNDI绑定、资源引用、缓存策略、线程池配置等。例如,如果你想...
企业级JavaBean(Enterprise JavaBeans,简称EJB)是Java平台上的一个核心组件,用于构建可扩展、安全且事务处理能力强大的分布式应用程序。EJB标准经历了多个版本的发展,从早期的EJB 2.0到后来的EJB 3.0,每个版本...
**EJB高级——资源管理与EJB环境** 在Java企业级开发中,Enterprise JavaBeans (EJB) 是一种核心组件,用于构建可扩展且可靠的分布式应用程序。本教程将深入探讨EJB中的资源管理和EJB环境,这对于理解如何高效地...
企业JavaBeans (EJB) 是Java平台上的服务器端组件模型,专为构建可扩展、可靠且跨平台的企业级应用程序而设计。通过将业务逻辑与基础架构关注点(如事务管理、安全性、持久性和并发控制)分离,EJB允许开发者专注于...
它可以帮助读者快速理解和掌握EJB的各个方面,从基本概念到高级特性,为开发高效、可扩展的企业级应用打下坚实的基础。对于Java EE开发者来说,深入理解并熟练运用EJB是提高生产力和保证软件质量的关键。
压缩包中的【EJB3高级培训PPT2.ppt】文件很可能是详细讲解这些概念和实践案例的教学材料,包括如何创建和部署EJB,如何配置容器管理的持久化,以及如何使用EJB与Web层(如Servlets和JSF)进行集成等。通过深入学习这...
- **javax.ejb.spi包**:提供了SPI(Service Provider Interface)类和接口,用于扩展EJB容器的功能。 通过上述介绍,我们可以看到EJB技术为企业级应用开发提供了丰富的功能和工具。开发者可以根据具体需求选择合适...
EJB(Enterprise JavaBeans)是 Java 程序设计中比较高级的内容,也是 Java 程序员由入门级向高手级前进的门槛。下面是 EJB 的详细知识点: 一、EJB 概述 EJB 是 Java EE(Java Enterprise Edition)中的一种核心...
1. **注解驱动的元数据**:EJB3通过注解极大地减少了XML配置文件的需求,如@Entity、@Table、@Column等,使得实体bean的定义更为直观和简洁。 2. **实体Bean的无接口实现**:EJB3允许开发者使用单个bean类代替接口...
在IT行业中,企业级Java应用程序开发是至关重要的,而EJB(Enterprise JavaBeans)是Java EE(Java Platform, Enterprise Edition)框架中的核心组件之一,用于构建可扩展、可靠且安全的分布式企业应用。EJB3是其第...
【EJB学习】 EJB(Enterprise JavaBeans)是Java平台上的企业级组件模型,它是Java EE(Java 2 Platform, Enterprise Edition)规范的一部分,...同时,了解EJB也是向更高级的技术如微服务、云原生应用迈进的基础。
EJB3是Java EE平台的重要组成部分,它为企业级应用程序提供了一种标准的方式来构建可复用、可扩展且易于维护的组件。 EJB3相较于早期版本,引入了显著的简化,如注解驱动的编程模型,减少了XML配置,使得开发更加...
EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要负责处理业务逻辑,为应用程序提供可重用、可扩展和可管理的服务。EJB3是EJB规范的一个重要版本,它在EJB2的基础上进行了重大改进,极大地简化...
EJB3是Java EE(Java Platform, Enterprise Edition)规范的重要组成部分,主要负责处理企业级应用中的业务逻辑,提供分布式、事务处理、安全性和可扩展性等功能。 在EJB3中,引入了注解(Annotation)这一重大改进...
【企业级EJB3.0高级培训】是针对企业级Java开发的一项专业技能培训,主要讲解的是Enterprise Java Beans(EJB)3.0版本的相关技术。EJB是Java平台上的核心组件,用于构建分布式、可扩展的后端业务系统。EJB3.0是EJB...
4. **部署描述符**:虽然EJB 3.0简化了部署过程,但仍可能需要一个ejb-jar.xml文件来配置一些高级特性,如安全性和资源引用。 5. **打包和部署**:将EJB项目打包成ejb-jar和相应的WAR或EAR文件。然后,将这些文件...
### 实战EJB知识点详解 #### 一、企业JavaBeans (EJB) 技术概述 **企业JavaBeans (EJB)** 是Java平台上的服务器端组件模型...实战EJB系列涵盖了从基础到高级的各种主题,适合不同层次的学习者深入了解和实践EJB技术。
EJB是Java EE(之前称为J2EE)平台的核心组件之一,用于构建可扩展、安全且事务性的分布式企业应用。本教程旨在帮助开发者从基础到高级逐步理解并掌握EJB的使用。 EJB是Java中的服务器端组件模型,它定义了一组接口...
EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于构建企业级分布式应用程序。...同时,不断探索和学习EJB的高级特性,如定时器服务、安全性、事务管理等,将有助于提升你在企业级应用开发中的技能。