初识EJB

EJB就是企业级Bean,他也是一个容器,能够很好的支持企业级的运用,他里面包含了许多。范定义了开发和部署基于事务性、分布式对象应用程序的服务器端软件组件的体系结构。所有的Enterprise Beans都需要配置到EJB服务器(一般的WeblogicWebSphereJ2EE应用服务器都是EJB服务器)中。他EJB中定义了三种Enterprise Beans

Ø       Session Beans Stateful /Stateless

Ø       Entity Beans (数据映射到类实例)

Ø       Message-driven Beans EJB2.0 / 异步方式处理

1.就是会话bean,bean分为会话和实体,而会话bean有分为有状态和无状态,实体 Bean,表示数据库中的数据,以及会话 Bean,表示进程或充当执行任务的代理程序。无状态就是创建后才出现在进程里面,由EJB自动管理他的生命周期,有状态就是一直在内存里面,要使用的时候,通过消息唤醒他,没有消息就驻留在内存里面,通常我们都是建立的无状态会话bean

2.映射到类实例bean,一般不用,因为他是把一个数据库映射成一个对象,一条记录映射成一个类,所以要处理很多数据的时候会出现很多对象,降低运行速度,一般不用。

3.消息bean,内似于windows的消息机制,发送消息。

EJB的部署和开发

先看图:

http://blog.csdn.net/images/blog_csdn_net/ronaldo17/55054/r_s.jpg

EJB的运行方式是,首先客户端有一个接口类(这个类里面只有一个方法,没有运行方法的功能),通过这个接口类连接到home(这个类里面只有一个创建函数),通过home类在服务器端创建一个对象,然后home类访问到remote接口,然后remote接口会在客户端创建一个副本,这个副本映射了服务器上的所有类,他是通过JNDIjava命名和目录接口服务,使用在高级网络应用开发中的。JNDI是一组API,它通过java语言为应用程序提供命名(naming)和目录(directory)功能)创建了一个类似注册表一样的空间,里面依次存放的是所有类的名字,调用所有类都是通过这个空间里面对应的名称来访问和操作。服务器端还有一个完成实际功能的类,里面有和客户端同样名字的方法,并且在该方法下写下具体完成内容。值得注意的是EJB必须打包成jar才能执行,执行的是这个包里面的内容,里面存放的是编译好的class文件,另外EJB也规定必须在类里面写出异常保护才可以被执行,这个包里面还必须得有服务器EJB得配置文件,必须有xml配置文件再META-INF目录下,配置文件必须包括2ejb-jar.xml,(通过该配置文件找到需要的class文件)weblogic-ejb-jar.xml(服务器不同,配置文件也不同).EJB必须在应用服务器上发布,如weblogic,jboss或者tomcat里面发布和具体才可以被使用。同时客户端接口类文件和服务器的Home接口文件都必须考到客户端里面,完成具体功能的会话bean不用放在客户端实例如下:

文件“helloworld.java”(客户端接口类)

package world;

 

 

 

import javax.ejb.*;

import java.rmi.RemoteException;

 

 

 

public interface helloworld extends javax.ejb.EJBObject

{

//继承javax.ejb.EjbObject

      //暴露了一个名为tellMe()的方法,返回值为String,抛出一个远程异常

  public String tellMe() throws java.rmi.RemoteException;

 

 

 

}

文件“helloworldHome.java”(服务器端接口类,运行时要考到客户端)

package world;

import javax.ejb.*;

import java.rmi.*;

import javax.ejb.CreateException;

import javax.ejb.RemoveException;

 

 

 

public interface helloworldHome extends javax.ejb.EJBHome

{

 public helloworld create() throws java.rmi.RemoteException,javax.ejb.CreateException;//创建实例

 

 

 

}

文件“helloworldHome.java”(服务器端会话bean)

package world;

import javax.ejb.CreateException;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

 

 

 

 

 

 

public class helloworldBean implements SessionBean

{

       private  SessionContext  cxt;

       private  String words;

 

 

 

       public void setSessionContext(SessionContext cxt) {

              this.cxt = cxt;

       }

 

 

 

 

 

 

      public void ejbCreate()

       {

        }

 

 

 

       public void ejbRemove()

       {

       }

 

 

 

       public void ejbActivate()

       {

       }

 

 

 

       public void ejbPassivate()

       {

              System.out.println("ejbPassivate()");

       }

 

 

 

    public void setSessionContext(SessionContext ctx)   //上下文部分,一般数据库采用

       {

              System.out.println("setSessionContext(sessionContext()");

       }

 

 

 

       public String tellMe()   //这里才是我们自己的业务方法

       {

              return "wahaha,you are so happy  *^__^*";

       }

 

 

 

 

 

 

}

关于jdbc

首先,你的装上要使用的数据库的驱动,然后run的时候你得必须连接到数据库驱动,例如

java -classpath F:/jdbcdriver/mssqlserver.jar;F:/jdbcdriver/msbase.jar;F:/jdbcdriver/msutil.jar;. JDBC(这里的jdbc是被编译成了class的文件,也就是前面省略过build的过程),而程序中你只是通过forname()函数来指定这个数据库名字,通过名字来找到他。

例如:

文件“JDBC.java”

import java.sql.*;

class JDBC

{

  public static void main(String args[]) throws Throwable

  {

   //动态加载类,只是取得名字,用于对应查找数据库

       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

    Connection conn=null;

    Statement stat=null;

    try

    {

       //建立数据库连接

       conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=Northwind","sa","sa");

          //创建执行语句对象

       stat = conn.createStatement();

 

 

 

       //查询

       ResultSet rs=stat.executeQuery("select * from Customers");

          System.out.println("ID   "+"  ContactName          "  );

       while(rs.next())

       {

          System.out.println(rs.getString(1)+"  "+rs.getString("ContactName"));

       }

       }

         catch(Exception e)

    {

        System.out.println("=====出错,回滚ing====");

        //conn.rollback();

        throw e;

    }

    finally

    {

        System.out.println("=====不管出不出错,释放连接资源ing====");

        stat.close();

        conn.close();

    }

  } 

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值