`
wayne446
  • 浏览: 28671 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

EJB3(1)

    博客分类:
  • j2ee
阅读更多

以下代码建立在glassfish v2基础上:

新建一个EJB模块
先写一个最简单的无状态Session Bean,首先定义一个远程接口:

@Remote
public interface HelloRemote {

    String sayHi(String name);
    
}

用@Remote标注表明这是一个远程接口,在接口里声明一些业务方法。接着定义一个会话Bean实现该接口:

@Stateless
public class HelloBean implements HelloRemote {

    
public String sayHi(String name) {
        
return "Hi " + name;
    }

    
}


@Stateless标注表明这是一个无状态会话Bean,完成了这个简单的Demo后,打包部署到服务器上。接着我们来测试这个会话Bean,新建一个WEB模块,我们利用这个web应用来远程调用会话Bean。我们可以在web模块里新建一个Servlet:

public class HelloServlet extends HttpServlet {
    @EJB
    
private HelloRemote helloBean;
在Servlet里定义了一个成员变量,@EJB标注表明远程接口的代理将依赖注入到成员变量,在doGet或doPost方法里可以直接使用该代理调用会话Bean的业务方法:

 

PrintWriter out = response.getWriter();
        
try {
           out.println(helloBean.sayHi(
"Tom"));
        }
 finally 
            out.close();
        }

JSP却有所不同,这里不能使用@EJB标注,要使用传统的JNDI lookup方式:

<%
            InitialContext ctx 
= new InitialContext();
            HelloRemote helloBean 
= (HelloRemote)ctx.lookup(HelloRemote.class.getName());
            out.println(helloBean.sayHi(
"Tom"));
%>


这个测试用web模块已经完成,将WEB模块打包部署后即可以运行
不过,如果我们自己指定了会话Bean的JNDI名,那么以上的测试代码将发生异常,例如:

@Stateless(mappedName="hello")
public class HelloBean implements HelloRemote {

    
public String sayHi(String name) {
        
return "Hi " + name;
    }

    
}


这里我们指定了会话bean的JNDI名为"hello",更改后的EJB模块需要重新部署,还要更改相应的Servlet和Jsp中的代码:

@EJB(mappedName="hello")
    
private HelloRemote helloBean;


Servlet已经更改了,只有一点点不同。

<%
            InitialContext ctx 
= new InitialContext();
            HelloRemote helloBean 
= (HelloRemote)ctx.lookup("hello");
            out.println(helloBean.sayHi(
"Tom"));
 
%>


Jsp也做了小小的改动,如此更新后重新部署WEB模块,测试代码即可顺利运行

需要注意的是:

1、根据EJB容器的不同,EJB的JNDI生成规则并不一样,最好还是从各服务器的JNDI树查找

2、如果是远程调用,还需要将EJB模块jar包和服务器的客户端jar包(如weblogic10g,需要wlclient.jar、wl-j2ee-client.jar)拷贝到客户端应用的lib目录下

3、如果是远程调用,还需要指定JNDI服务器上下文环境的配置信息Context.INITIAL_CONTEXT_FACTORY和Context.PROVIDER_URL,各服务器具体配置不一样:

 

服务器 Context.INITIAL_CONTEXT_FACTORY Context.PROVIDER_URL Context.URL_PKG_PREFIXES
weblogic weblogic.jndi.WLInitialContextFactory t3://localhost:7001  
jboss org.jnp.interfaces.NamingContextFactory localhost:1099 org.jboss.naming:org.jnp.interfaces
glassfish com.sun.enterprise.naming.SerialInitContextFactory localhost:8080  

 

分享到:
评论

相关推荐

    实战角度比较EJB2和EJB3的架构异同

    【实战角度比较EJB2和EJB3的架构异同】 EJB,即Enterprise JavaBeans,是Java EE(企业版Java)平台的核心组件之一,用于构建可复用、分布式的服务器端应用程序。EJB2和EJB3是EJB技术的两个主要版本,它们在架构上...

    ejb3 带源码

    1. **EJB3核心概念**: - **实体Bean(Entity Bean)**:代表数据库中的持久化对象,EJB3引入了JPA(Java Persistence API),使得实体Bean的定义更简洁,通过注解可以直接映射到数据库表。 - **会话Bean(Session...

    EJB3的三本好书第3本 Mastering EJB3 4ed

    1. Beginning EJB3 Application Development From Novice to Professional联接http://download.csdn.net/source/1865607 2. EJB3 in Action 2007联接http://download.csdn.net/source/1865636 3. Mastering EJB3联接...

    EJB3基础教程

    **EJB3基础教程** Enterprise JavaBeans(EJB)是Java平台上用于构建可扩展、安全且事务处理能力强的服务器端应用程序的重要技术。EJB3是EJB规范的一个重大改进版本,它极大地简化了开发过程,引入了许多现代编程...

    EJB3入门例子

    1. **注解驱动(Annotation-based)**:在EJB3中,开发者可以使用注解来声明组件的角色、生命周期方法和持久化属性,如`@Entity`、`@Stateless`、`@Stateful`、`@SessionBean`等,大大减少了XML配置文件的使用。...

    ejb3进阶案例

    **ejb3进阶案例详解** ejb3(Enterprise JavaBeans 3.0)是Java EE平台中的核心组件之一,它极大地简化了企业级应用程序的开发。ejb3引入了许多新特性和改进,使得开发人员可以更加高效地构建可扩展、可维护的企业...

    EJB3应用实例

    1. **注解驱动**:EJB3摒弃了EJB2.x中的XML配置,大量使用Java注解来声明bean的角色、事务属性、安全角色等,大大减少了部署描述符的编写工作。 2. **无状态会话bean(Stateless Session Beans,SSB)**:这类bean...

    ejb3_structs

    1. **配置Struts的Action**:定义Action类,这些类通常调用EJB3的bean来完成业务操作。 2. **配置Struts的配置文件**:在struts-config.xml或struts2的struts.xml中,定义Action的映射和视图跳转规则。 3. **部署...

    EJB3开发Entity

    本文将深入探讨EJB3中的Entity Bean,它是EJB3中的持久化组件,用于代表数据库中的实体。 1. **实体Bean的概念** 实体Bean是EJB3中的数据存储模型,它与数据库中的记录相对应。在EJB3中,实体Bean不再需要编写...

    EJB3的三本好书第2本, EJB3 in Action 2007

    1. Beginning EJB3 Application Development From Novice to Professional联接http://download.csdn.net/source/1865607 2. EJB3 in Action 2007联接http://download.csdn.net/source/1865636 3. Mastering EJB3联接...

    EJB3(入门经典简版)

    EJB3是EJB规范的一个重大改革版本,引入了许多简化开发的新特性,使得Java开发者能够更高效地构建分布式企业应用。 1. **EJB的概述** EJB是一种组件模型,它定义了如何在服务器端部署和管理业务逻辑。EJB3是基于...

    EJB3 入门经典 源码

    1. **注解驱动(Annotation-Based)**:EJB3引入了注解,使得开发者无需编写大量的XML配置文件,如`@Entity`用于定义实体类,`@Stateless`或`@Stateful`用于声明无状态和有状态会话bean,`@PersistenceContext`和`@...

    EJB3的三本好书第1本 Beginning EJB3 Application Development From Novice to Professional

    1. Beginning EJB3 Application Development From Novice to Professional联接http://download.csdn.net/source/1865607 2. EJB3 in Action 2007联接http://download.csdn.net/source/1865636 3. Mastering EJB3联接...

    ejb3整合Struts1.x实例

    EJB3是Java EE(Java Platform, Enterprise Edition)的一部分,主要用于构建可扩展且易于管理的企业级服务,而Struts1.x则是一个MVC(Model-View-Controller)框架,用于简化Web应用的开发。本实例将讲解如何将EJB3...

    EJB3 实例练习(一)

    1. EJB3概述 EJB3引入了注解驱动的编程模型,消除了XML配置文件的需求,大大减少了开发工作量。它包括三种主要类型的bean:Entity Bean(实体bean)、Session Bean(会话bean)和Message-driven Bean(消息驱动bean...

    struts1+EJB3整合(AOP控制权限)

    Struts1和EJB3是Java企业级开发中的两个重要框架。Struts1是一个MVC(Model-View-Controller)框架,主要用于构建Web应用程序的控制层,而EJB3则是Java EE平台的一部分,用于实现业务逻辑和服务层。在这个"struts1+...

    EJB3最新学习教程,适合初学者

    ### EJB3 最新学习教程知识点详解 #### 一、EJB3 概念与特点 **企业级JavaBean(EJB)**是Java平台的一部分,用于开发和管理基于组件的企业应用程序。EJB3(Enterprise JavaBeans 3)是EJB规范的一个版本,它大大...

    EJB3实战的源代码

    EJB3是EJB规范的一个重要版本,它在EJB2的基础上进行了重大改进,极大地简化了开发流程,降低了学习曲线,提升了开发效率。 在"EJB3实战的源代码"这个资源中,我们可以深入学习和理解EJB3的各种特性。EJB3引入了...

    EJB3入门

    **EJB3入门** Enterprise JavaBeans(EJB)是Java EE平台的核心组件之一,用于构建企业级分布式应用程序。EJB3是EJB规范的一个重要版本,它极大地简化了开发过程,降低了EJB技术的门槛,使得更多的开发者能够利用...

Global site tag (gtag.js) - Google Analytics