`
zisefeiniao
  • 浏览: 168530 次
  • 性别: 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入门经典(PDF)

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

    精通EJB3.0 中文版 3/3

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

    精通EJB3.0 中文版 1/3

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

    ejb3.0实例教程

    期待已久的 EJB3.0 最终规范已经发布了。虽然 EJB3.0 最终规范出来了一段时间,但对 EJB3.0 的应用还停留在介 绍之中,应用实例更是少之又少,所以作者拟写本书,以简单的实例展现 EJB3.0 的开发过程,希望对大家有所...

    ejb3.0入门图文教程

    ejb3.0入门图文教程,包括EJB3.0开发Entity.pdf、EJB3.0开发Message Driven Bean.pdf、EJB3.0开发Session Bean.pdf

    EJB3.0中文文档

    EJB3.0中文文档,实例教程.EJB3.0中文文档,实例教程.EJB3.0中文文档,实例教程.EJB3.0中文文档,实例教程.

    ejb3.0开发规范PDF

    ejb3.0开发规范,开发ejb3.0过程中的参考文档

    EJB3.0入门经典源代码.part1

    本书是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。  本书内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与...

    EJB 3.0从入门到精通

    本书面向EJB 3.0的实际应用开发,通过大量的实例,循序渐进地为读者介绍了有关EJB 3.0开发所涉及的各类知识。全书共分16章,内容依次包含了Java EE概述、EJB基础、搭建EJB环境、会话bean、持久化实体、持久化实体...

    EJB 3.0入门经典 源码

    本书是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。  本书内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与...

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

    ejb3.0开发实例,会话bean开发,完整代码,适合入门学者

    EJB 3.0实例教程.pdf

    EJB 3.0实例教程.pdf EJB 3.0实例教程.pdf

    EJB3.0规范和EJB3.0经典入门(含源码)

    EJB3.0规范和EJB3.0经典入门(含源码) 本材料适合Java程序员、项目经理和系统架构师。学习本材料,您不需要EJB2.x知识,如果具备一些Web和jdbc知识,学习效率会更快些。学习本材料,初级Java程序员应在1个月左右,...

    ejb 3.0 jar 包 很全 part1

    ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全

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

    在Myeclipse,基于JBOSS EJB3.0实现了EJB3.0的初次体验,确实比EJB2.0方便了许多。文中有完整的过程和代码。

    EJB3.0入门图文教程

    EJB3.0入门图文教程电子书,Jbuilder 2007,新版JBuilder2007基于Eclipse平台,与以往的JBuilder版本完全不 同.借助于Eclipse的开放平台以及丰富的插件,使得JBulider对当前的流行的框架支持非 常好,同时支持EJB3.0的...

    ejb2.0与ejb3.0的区别

    ejb2.0 ejb3.0的区别,比较详细讲解两者的区别

    精通EJB3.0 pdf

    精通EJB3.0 pdf

    EJB3.0实例教程(PDF)

    EJB3.0实例教程,电子文档,图例很丰富的进行EJB3.0程序的开发

Global site tag (gtag.js) - Google Analytics