`
zisefeiniao
  • 浏览: 174311 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
阅读更多

EJB是SUN公司提出的开发表示,使用了JTA,使用了Hibernate的一些源代码,主要完成分步式开发与后台的数据库操作。

 

EJB:Enterprise JavaBean,共有以下三大类和六小类的Bean。

SessionBean:相当于DAO接口与实现类。

       实现类:

              stateful:有状态。

              stateless:无状态。

       接口:

              remote:远程接口,可以进行远程交互

              local:本地接口,只能在同一个服务器中执行。

EntityBean:相当于pojo和XML映射文件

       CMP:容器管理持久化,表示对象的创建与销毁由容器来完成。

       BMP:Bean管理持久化,普通的JavaBean方式,当不使用时自动销毁。

MessageDrivenBean:JMS功能(Java Message Server),用来在不同的项目之间传递消息的

       PTP:点对点,一个点到另一个点的单独发送的消息。

       Topic:主题,先订阅,在一定时间或情况下由发送方自动将信息发给所有订阅的项目。

 

 

开发环境:

       MyEclipse5.5以上版本 + JBoss4.2以上版本

 

EJB项目的组成:

       总的项目 + EJB端项目(纯Java项目) + Web端项目(Java Web项目)

 

EJB端用来编写SessionBean与EntityBean,Web端来调用SessionBean操作EntityBean,总的项目用来将EJB端项目与Web端项目整合到一起。

 

 

一、使用MyEclipse开发简单SessionBean项目

1、建立项目

 

 

注意一定要选择到JavaEE5.0版本,否则无法完成后面的开发

 

 

 

此处建立SessionBean项目,不用选择。

 

单击Finish后,自动创建了三个项目。

 

2、在EJB项目中建立SessionBean

在EJBSessionBeanDemoEJB的src中上右键à new à EJB3 Session Bean

 

package org.mldn.lin.session;

import javax.ejb.Remote;

//该Annotation表示该接口为一个EJB3远程接口

@Remote

public interface HelloDAORemote {

    public String sayHello(String name) throws Exception;

}

package org.mldn.lin.session;

import javax.ejb.Stateless;

//该Annotation表示该类为一个无状态SessionBean

@Stateless

public class HelloDAO implements HelloDAORemote {

    public String sayHello(String name) throws Exception {

       // TODO Auto-generated method stub

       return "Hello World! " + name;

    }

}

 

3、EJB项目部署

只能部署到JBoss服务器中,不能部署到Tomcat服务器中

 

发布的接口被发布到公共的JNDI空间中,要查找需要通过JBoss控制台页面找到公共的空间.

 

打开JBoss公共页面

默认为8080,则访问公共页需要通过该地址访问

http://192.168.1.187:8080/

 

修改了端口号为80,IE浏览器默认端口号为80,则可以通过该地址访问

http://192.168.1.187/

 

点击jmx-console打开JBoss控制台,

在JBoss控制台页面查找service=JNDIView

 

打开公共的JNDI空间

 

点Invoke执行列表显示JNDI的功能

在Global JNDI Namespace中查找到发布的远程接口

 

 

 

4、在Web端项目中建立一个测试类

package org.mldn.lin.test;

 

import java.util.Properties;

 

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

 

import org.mldn.lin.session.HelloDAORemote;

 

public class Test {

 

    public static void main(String[] args) {

       // TODO Auto-generated method stub

       // 定义查找参数,通过定义这些参数找到该公共空间

       Properties pro = new Properties();

       pro.setProperty("java.naming.factory.initial",

              "org.jnp.interfaces.NamingContextFactory");

       pro.setProperty("java.naming.provider.url", "192.168.1.187:1099");

       pro.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");

       // 通过JNDI查找发布的接口

       try {

           Context ctx = new InitialContext(pro);

 

           // 开始查找接口

           HelloDAORemote hellodao = (HelloDAORemote) ctx.lookup("HelloDAO/remote");

 

           // 打印结果

           System.out.println(hellodao.sayHello("Lin"));

 

       } catch (NamingException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } catch (Exception e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

 

    }

 

}

 

 

5、运行测试

报错:

javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]

    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:657)

 

注意:

如果通过测试类进行测试,需要添加一个支持类jar包

该jar包可以在在JBoss服务器client目录下找到,将 拷贝到lib下即可

 

6、在Web端项目中建立一个页面进行测试

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

 

<%@ page import="javax.naming.Context,javax.naming.InitialContext,javax.naming.NamingException,org.mldn.lin.session.HelloDAORemote" %>

 

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

   

    <title>My JSP 'index.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">   

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

  </head>

 

  <body>

    <%

    // TODO Auto-generated method stub

       // 定义查找参数,通过定义这些参数找到该公共空间

       Properties pro = new Properties();

       pro.setProperty("java.naming.factory.initial",

              "org.jnp.interfaces.NamingContextFactory");

       pro.setProperty("java.naming.provider.url", "192.168.1.187:1099");

       pro.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");

       // 通过JNDI查找发布的接口

       try {

           Context ctx = new InitialContext(pro);

 

           // 开始查找接口

           HelloDAORemote hellodao = (HelloDAORemote) ctx

                  .lookup("HelloDAO/remote");

 

           // 打印结果

           out.println(hellodao.sayHello("Lin"));

 

       } catch (NamingException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       } catch (Exception e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

     %>

  </body>

</html>

 

 

7、项目部署

(1)同时部署EJB和Web项目

注意:如果是要部署Web项目,则在lib中不能单独加入

否则jar包冲突

 

访问http://192.168.1.187/EJBSessionBeanDemoWeb/检验结果

 

(2)整个部署总的项目

如果使用整个部署的形式,则不能再单独部署两个项目,而且需要修改一些代码

并且发现发布的服务有变化:

 

在部署整个项目后,发现发布的SessionBean的名称多了一个项目名,因此需要修改lookup中的参数,加入项目名称

           // 开始查找接口

           HelloDAORemote hellodao = (HelloDAORemote) ctx.lookup("EJBSessionBeanDemo/HelloDAO/remote");

分享到:
评论

相关推荐

    ejb3.0开发实例(java工程)

    在这个"ejb3.0开发实例(java工程)"中,我们将深入探讨EJB 3.0的主要特性和开发实践。 1. **注解驱动**:EJB 3.0最大的变革之一就是大量使用注解(Annotation),减少了XML配置文件的使用。例如,@Stateless、@...

    EJB3.0与EJB2.0的区别

    EJB3.0作为EJB规范的重大改进,旨在简化开发流程并提高开发者效率。本文将详细探讨EJB3.0与EJB2.0之间的主要差异。 首先,EJB3.0对编程模型进行了简化。在EJB2.0中,每个EJB需要定义两个接口和一个Bean实现类,这在...

    ejb3.0开发规范PDF

    EJB(Enterprise JavaBeans)3.0是Java企业级应用开发的一个重要标准,它定义了如何在Java EE(Java Platform, Enterprise Edition)环境中构建可复用的、组件化的服务器端应用程序。EJB 3.0的发布极大地简化了EJB的...

    EJB3.0入门经典(PDF)

    《EJB3.0入门经典》是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发...

    精通EJB3.0 pdf

    《精通EJB3.0》是一本深入探讨企业级JavaBeans(EJB)3.0技术的专业书籍,由Rima Patel、Sriganesh、Gerald Brose和Micah Silverman共同编写,由Wiley Publishing出版。该书为读者提供了全面且深入的EJB3.0知识体系...

    ejb3.0入门图文教程

    首先,我们来看《EJB3.0开发Entity.pdf》。在EJB 3.0中,Entity Bean代表持久化对象,它存储在数据库中并与数据库进行交互。这个部分将介绍如何定义实体bean,包括使用JPA(Java Persistence API)来注解实体类,...

    《EJB 3.0入门经典》 源码

    在"ejb3.0入门经典教程-source"这个压缩包中,包含了书中各个章节的示例代码,覆盖了EJB 3.0的各个方面,例如实体Bean的创建、会话Bean的使用、事务管理、安全性设置以及JPA的持久化操作等。这些源码对于初学者来说...

    EJB 3.0实例教程.pdf

    **企业级JavaBeans(EJB)3.0详解** 企业级JavaBeans(Enterprise JavaBeans,简称EJB)是Java平台上用于构建分布式企业级应用的重要组件模型。EJB 3.0是EJB规范的一个重大革新,它极大地简化了EJB的开发过程,引入...

    Java之精通EJB3.0.pdf

    ### Java之精通EJB3.0 #### 一、EJB3.0简介与改进 企业Java Beans(Enterprise JavaBeans,简称EJB)是Java平台为企业级应用开发提供的一种组件模型。EJB3.0是EJB规范的一个重大版本更新,它在EJB2.0的基础上进行...

    EJB3.0+JBOSS+MyEclipse初体验(完整代码和过程)

    在"**EJB3.0+JBOSS+MyEclipse初体验(完整代码和过程).txt**"文件中,你将找到一个完整的示例,涵盖了上述所有步骤,包括具体的代码片段和执行过程,这对于初学者来说是一个很好的起点,可以快速理解并实践EJB 3.0在...

    李腾飞EJB3.0 源码 源代码

    "李腾飞EJB3.0 源码 源代码"可能包含的是李腾飞教授或团队关于EJB 3.0技术的实践示例或教学资源。通过分析这些源码,开发者可以深入理解EJB 3.0的实现细节,例如如何使用注解定义Bean、如何处理持久化、如何进行依赖...

    精通EJB3.0 中文版 3/3

    罗时飞精通EJB3.0.zip.001 罗时飞精通EJB3.0.zip.002 罗时飞精通EJB3.0.zip.003 《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和...

    EJB 3.0规范官方文档

    EJB(Enterprise JavaBeans)3.0规范是Java EE(Enterprise Edition)平台中核心的组件模型,用于构建可扩展、安全且易于管理的企业级应用程序。EJB 3.0是EJB规范的一个重要里程碑,因为它引入了许多重大的改进,...

    精通EJB3.0 中文版 1/3

    罗时飞精通EJB3.0.zip.001 罗时飞精通EJB3.0.zip.002 罗时飞精通EJB3.0.zip.003 《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和...

    ejb2.0与ejb3.0的区别

    ### EJB2.0与EJB3.0的主要区别 #### 一、简介 企业Java Beans(EJB)是Java平台为企业级应用提供的一种组件模型。随着技术的发展,EJB经历了多个版本的迭代,其中EJB 2.0和EJB 3.0是两个重要的里程碑版本。本文将...

    EJB3.0架包

    EJB3.0是EJB规范的一个重要版本,它在EJB2.x的基础上进行了大量简化,提高了开发效率,并引入了注解驱动的开发方式,使得EJB更易于理解和使用。 在EJB3.0中,主要包含以下关键知识点: 1. **实体Bean(Entity ...

    EJB3.0实例教程(PDF)

    **EJB3.0实例教程**是一份详细指导开发者如何使用Enterprise JavaBeans 3.0(EJB3.0)技术进行企业级应用开发的电子文档。EJB3.0是Java EE(Java Platform, Enterprise Edition)规范的一部分,旨在简化企业级组件的...

    EJB3.0规范中文版

    **企业级JavaBeans (EJB) 3.0 规范** EJB 3.0是Java Enterprise Edition (Java EE)中的一个关键组件,它定义了如何在服务器端创建可复用、模块化的业务组件。这个规范的主要目标是简化EJB的开发过程,使其更加轻量...

    EJB3.0源代码

    总的来说,"EJB3.0源代码"的压缩包很可能包含了使用EJB 3.0规范编写的各类Bean的源码,包括实体Bean、无状态会话Bean、有状态会话Bean和消息驱动Bean,以及相关的配置文件。通过分析这些源代码,我们可以深入理解EJB...

    精通ejb3.0 经典书目

    ### 精通EJB3.0经典书目解析 #### 一、书籍基本信息 - **书名**:《精通企业级Java Beans (EJB) 3.0》 - **作者**:Rima Patel Sriganesh, Gerald Brose, Micah Silverman - **出版社**:Wiley Publishing, Inc. -...

Global site tag (gtag.js) - Google Analytics