`
iamxi
  • 浏览: 190860 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

EJB的SessionBean抛出异常

阅读更多

     前天,偶然发现在远程调用EJB的时候抛出的异常比较怪异。之前知道调用SessionBean时候,如果接口抛出了异常,EJB会对异常有一次封装,都变成了EJBException。所以在捕获的时候都是捕获这个异常。可这次却抛出了一个自己定义的异常,导致了无法捕获。查了下EJB的一些说明,建议是不要在SessionBean抛出继承RuntimeException的异常,因为EJBexception继承RuntimeException的。我这边自定义的异常用于业务流程控制,恰好也继承了RuntimeException(为什么继承这个。。。因为不抛出RuntimeException或其子类,EJB的事务就不会因异常而回滚)。

    这里抛出异常的地方有两处,在SessionBean里面都是同一个自定义的异常,但是到调用该SessionBean后,一处抛出的是EJBException,一处抛出的自定义的异常,EJB没有在这里给这个异常加一层EJBException。百思不得其解啊,网上也找不到个说法。由于赶时间,没有多研究,先记下来,以后补上。

    临时的解决方法是给在代码里面给自定义的异常放到EJBException里面。

分享到:
评论

相关推荐

    EJB专业学习资料

    - 对于 SessionBean 和 EntityBean,无论是 Remote Home 还是 Local Home 都必须定义 `create` 方法,该方法都会抛出 `CreateException` 异常,Remote Home 中的 `create` 方法还会抛出 `RemoteException` 异常。...

    ejb面试资料主要为选择题不定向选

    - 在编写Message-Driven Bean时,为了防止有毒消息,通常采用Container管理事务,不抛出异常,或者只抛出RuntimeException。 9. **资源引用**: - DataSource的引用属于资源注入,通常用于连接数据库,同样适用于...

    ejb skeleton

    此外,Remote接口中的方法需要遵循RMI(Remote Method Invocation,远程方法调用)的规则,确保参数和返回类型都能在分布式环境中传输,并且所有的商业方法都必须抛出RemoteException异常,这是EJB规范强制要求的。...

    EJB面试题汇总

    - **Mandatory**:必须在已有事务中执行,如果没有事务,则抛出异常。 - **Never**:必须不在事务中执行,如果有事务,则抛出异常。 #### 六、Local Interface的引入目的 **6.1 Local Interface的目的** - **性能...

    一个EJB的小测试代码

    通常,EJB方法会抛出系统异常(如`EJBException`)或应用异常(自定义的、继承自`java.lang.Exception`的类),并在部署描述符中声明这些异常。 7. **事务管理**:EJB支持容器管理的事务(Container-Managed ...

    EJB连接Oracle数据库

    8. **错误处理**:在处理数据库连接时,务必处理可能抛出的SQLException和其他异常,确保程序的健壮性。 9. **安全性**:确保数据库连接的用户名和密码被安全地存储和传递,避免硬编码在代码中。还可以使用角色基础...

    What_Is_EJB

    Home接口通常有create()方法,用于创建Session对象,这些方法需要抛出RemoteException和特定的异常,如CreateException。以下是一个简单的Session Bean Home接口示例: ```java public interface CartHome extends ...

    J2EE程序设计复习题.doc

    - Session Bean的Bean类需要实现SessionBean接口,Entity Bean的Bean类需要实现EntityBean接口。 9. 异常处理: - 在创建EJB实例时,create方法可能会抛出CreateException,远程home的create方法还可能抛出...

    java面试问题集一些小公司常用的

    Java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 Servlet 的生命周期 Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法...

    EJB3.0实例教程

    EJB 3.0引入了声明式异常处理,通过`@throws`注解在方法上声明可能抛出的异常,容器会自动处理异常并返回合适的错误信息。 **9. 容器提供的服务** EJB 3.0为Bean提供了多种服务,包括安全性、性能监控、集群、调度...

    jsf+EJB开发实例

    4. **错误处理与异常捕获**:JSF和EJB都提供了错误处理机制,例如JSF的`FacesMessage`和EJB的`抛出异常`,可以有效地处理和报告错误。 5. **安全性**:通过EJB的角色管理和JSF的安全控制,可以实现基于角色的访问...

    ConverterEJB.class.design.code.rar_Converter ejb_class

    4. **异常处理**:良好的EJB设计会包含适当的异常处理机制,通过抛出和捕获特定的EJB异常,来维护服务的稳定性和健壮性。 5. **生命周期方法**:如`@PostConstruct`和`@PreDestroy`注解标记的方法会在Bean实例创建...

    EJB3.0入门教程 PDF

    3. **异常处理** - 学习如何正确地处理和抛出EJB相关的异常。 4. **事务管理** - 了解EJB的自动事务管理机制,以及何时需要手动控制事务。 5. **安全性** - 掌握EJB的角色基安全(Role-Based Security),保护应用...

    国企外企 Java软件工程师笔试题 集锦

    Java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 在 Servlet 方面,Servlet 的生命周期包括 init 方法、service 方法和 destroy 方法。与 CGI 相比,...

    EJB 用户指南

    - 通常是由容器抛出的,表示EJB环境的问题。 - 如:`EJBException`。 2. **应用异常 (Application Exception):** - 由应用程序抛出,表示业务逻辑层面的问题。 - 应该通过自定义异常类来实现。 3. **未检查...

    ejbCreate函数用于初始化一个EJB实例.zip_QRL_YVVX_初始化一个EJB实例

    - `ejbCreate`方法不应该抛出受检查的异常,因为这些异常会被容器捕获并转换为EJB异常,可能会影响客户端调用。 - 如果Bean的实例是由容器管理的持久性(CMP),那么`ejbCreate`方法通常用于设置Bean的初始状态,...

    java面试笔试题大汇总 java相关基础知识.doc

    Java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 四、Servlet 的生命周期 Servlet 的生命周期包括 init、service 和 destroy三个阶段。init 方法是在...

    ejb编码规范实例

    3. **异常处理**:EJB方法应适当地抛出和处理异常。业务逻辑错误通常通过自定义的运行时异常传达,而系统级错误则通过标准的Java异常,如`NullPointerException`或`SQLException`。每个方法都应包含适当的异常注解,...

    ejb_helloworld

    由于这是EJB2.0,所以业务方法需要抛出`RemoteException`,这是EJB2.0的规定。`sayHello()`方法在接口中声明,允许客户端通过该方法与bean通信。 3. **Home接口**: Home接口是客户端获取bean实例的入口。`...

Global site tag (gtag.js) - Google Analytics