`

EJB的高级扩展配置

阅读更多

 

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>



 

 

  • bean管理的安全

 可以映射到部署描述文件中的角色

 可以使用EJBContext的方法获得安全信息

 

//返回当前调用者的安全身份

java.security.pricipal getCallerPrincipal();

//如果当前调用者是定义在部署描述文件中安全角色组的一部分,则返回真

boolean isCallerInRole(String roleName);

 



 

 

  • EJB和事务

 <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快速开发配置

    如果你的MyEclipse没有内置EJB工具,你可能需要通过在线更新或者下载扩展包来添加EJB支持。进入MyEclipse的“Help”菜单,选择“Check for Updates”,检查并安装所有可用的更新,确保EJB相关的插件已安装。 二、...

    jboss7ejb配置文件

    `jboss-ejb3.xml`是JBoss AS 7特有的配置文件,用于扩展或覆盖`ejb-jar.xml`中的配置。这个文件允许开发者针对特定的JBoss实现进行更细致的定制,比如JNDI绑定、资源引用、缓存策略、线程池配置等。例如,如果你想...

    在JBoss下配置EJB

    企业级JavaBean(Enterprise JavaBeans,简称EJB)是Java平台上的一个核心组件,用于构建可扩展、安全且事务处理能力强大的分布式应用程序。EJB标准经历了多个版本的发展,从早期的EJB 2.0到后来的EJB 3.0,每个版本...

    EJB高级——资源管理与EJB环境.rar_java ppt

    **EJB高级——资源管理与EJB环境** 在Java企业级开发中,Enterprise JavaBeans (EJB) 是一种核心组件,用于构建可扩展且可靠的分布式应用程序。本教程将深入探讨EJB中的资源管理和EJB环境,这对于理解如何高效地...

    实战EJB 实战EJB 实战EJB

    企业JavaBeans (EJB) 是Java平台上的服务器端组件模型,专为构建可扩展、可靠且跨平台的企业级应用程序而设计。通过将业务逻辑与基础架构关注点(如事务管理、安全性、持久性和并发控制)分离,EJB允许开发者专注于...

    EJB基础(学习EJB者必看)

    它可以帮助读者快速理解和掌握EJB的各个方面,从基本概念到高级特性,为开发高效、可扩展的企业级应用打下坚实的基础。对于Java EE开发者来说,深入理解并熟练运用EJB是提高生产力和保证软件质量的关键。

    企业级EJB3高级培训PPT2

    压缩包中的【EJB3高级培训PPT2.ppt】文件很可能是详细讲解这些概念和实践案例的教学材料,包括如何创建和部署EJB,如何配置容器管理的持久化,以及如何使用EJB与Web层(如Servlets和JSF)进行集成等。通过深入学习这...

    EJB API中文版

    - **javax.ejb.spi包**:提供了SPI(Service Provider Interface)类和接口,用于扩展EJB容器的功能。 通过上述介绍,我们可以看到EJB技术为企业级应用开发提供了丰富的功能和工具。开发者可以根据具体需求选择合适...

    EJB入门[整理].pdf

    EJB(Enterprise JavaBeans)是 Java 程序设计中比较高级的内容,也是 Java 程序员由入门级向高手级前进的门槛。下面是 EJB 的详细知识点: 一、EJB 概述 EJB 是 Java EE(Java Enterprise Edition)中的一种核心...

    企业级EJB3高级培训PPT6

    1. **注解驱动的元数据**:EJB3通过注解极大地减少了XML配置文件的需求,如@Entity、@Table、@Column等,使得实体bean的定义更为直观和简洁。 2. **实体Bean的无接口实现**:EJB3允许开发者使用单个bean类代替接口...

    企业级EJB3高级培训PPT3

    在IT行业中,企业级Java应用程序开发是至关重要的,而EJB(Enterprise JavaBeans)是Java EE(Java Platform, Enterprise Edition)框架中的核心组件之一,用于构建可扩展、可靠且安全的分布式企业应用。EJB3是其第...

    EJB学习

    【EJB学习】 EJB(Enterprise JavaBeans)是Java平台上的企业级组件模型,它是Java EE(Java 2 Platform, Enterprise Edition)规范的一部分,...同时,了解EJB也是向更高级的技术如微服务、云原生应用迈进的基础。

    企业级EJB3高级培训PPT1

    EJB3是Java EE平台的重要组成部分,它为企业级应用程序提供了一种标准的方式来构建可复用、可扩展且易于维护的组件。 EJB3相较于早期版本,引入了显著的简化,如注解驱动的编程模型,减少了XML配置,使得开发更加...

    ejb3 带源码

    EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要负责处理业务逻辑,为应用程序提供可重用、可扩展和可管理的服务。EJB3是EJB规范的一个重要版本,它在EJB2的基础上进行了重大改进,极大地简化...

    企业级EJB3高级培训PPT5

    EJB3是Java EE(Java Platform, Enterprise Edition)规范的重要组成部分,主要负责处理企业级应用中的业务逻辑,提供分布式、事务处理、安全性和可扩展性等功能。 在EJB3中,引入了注解(Annotation)这一重大改进...

    免费的企业级EJB3.0高级培训ppt2

    【企业级EJB3.0高级培训】是针对企业级Java开发的一项专业技能培训,主要讲解的是Enterprise Java Beans(EJB)3.0版本的相关技术。EJB是Java平台上的核心组件,用于构建分布式、可扩展的后端业务系统。EJB3.0是EJB...

    ejb3.0及JBoss配置运行动画全过程

    4. **部署描述符**:虽然EJB 3.0简化了部署过程,但仍可能需要一个ejb-jar.xml文件来配置一些高级特性,如安全性和资源引用。 5. **打包和部署**:将EJB项目打包成ejb-jar和相应的WAR或EAR文件。然后,将这些文件...

    实战EJB.pdf

    ### 实战EJB知识点详解 #### 一、企业JavaBeans (EJB) 技术概述 **企业JavaBeans (EJB)** 是Java平台上的服务器端组件模型...实战EJB系列涵盖了从基础到高级的各种主题,适合不同层次的学习者深入了解和实践EJB技术。

    ejb全示例教程

    EJB是Java EE(之前称为J2EE)平台的核心组件之一,用于构建可扩展、安全且事务性的分布式企业应用。本教程旨在帮助开发者从基础到高级逐步理解并掌握EJB的使用。 EJB是Java中的服务器端组件模型,它定义了一组接口...

    hello-ejb.rar_ejb_ejb java

    EJB(Enterprise JavaBeans)是Java EE平台中的一个核心组件,用于构建企业级分布式应用程序。...同时,不断探索和学习EJB的高级特性,如定时器服务、安全性、事务管理等,将有助于提升你在企业级应用开发中的技能。

Global site tag (gtag.js) - Google Analytics