• EJB学习笔记一


    EJB
    1.把一切业务或一切对象或操作 都以bean的形式展示和运用(个人理解)
    2.根据bean的分类可以分为 SessionBean、EntityBean、MessageDriverBean.
    3.SessionBean 又可以分为有状态(stateful)和无状态(stateless)

    3.1 什么是有状态的? 就如我们购物车一般  信息跟着用户走,保存用户的购物信息,
    直到用户退出为止,有状态它是描述对象的信息状态并呈现对象的描述(个人感觉)。
    有状态的,每次使用此类SessionBean都要就行实例化一次,故性能上或服务器压力会有
    所影响。

    3.2 无状态,不保存夸信息。又例如 购物车   你在A页面买了个商品SS,点到B页面想买
    CC商品,当点到B页面时候,刚才买的SS商品不会保存,它(EJB容器)又会给你一个新
    的购物车。无状态是每次都进行一次实例化。
    sessionBean  一个sessionBean都有其作用域,本地(Local)或远程(Remote)
    local接口 只能在本机进行调用   remote接口只能进行远程调用
    建议最好都实现两接口。
    而在客户端其实只是暴露一个接口,使用接口的方法就行业务操作

    EntityBean 是POJO类 主要描述实体之间的关系以及与数据库里的表进行映射。
    使用其方式有点类似hbernate 而却没有映射文件(自EJB3.0没有).

    4.文件的配置
                    以下文件名和后缀名都不可以修改
      4.1
          jndi.properties文件(重要)
          java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
          java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
          java.naming.provider.url=localhost:1099
    可放在classpath下(放到src下MyEcliprise工具自动放到classpath下)
      还可放在META-INF 目录下
    因为远程调用或是本地调用都是通过名称来查找调用的,而JNDI就是幚你查找的工具
      4.2
          persistence.xml文件
    <persistence>
    <persistence-unit name="stu"><!--随便改-->
      <jta-data-source>java:/mysql</jta-data-source><!--要与deploy
    目录中的配置数据源的配置文件一样-->
      <properties>
    <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
    <property  name="hiberbante.show_sql" value="true"/>
    <property name="hibernamte.format_sql" value="true"/>
    </properties>
    </persistence-unit>
    </persistence>
    所放置位置如上!

    5 具体代码显示
    <!=========class Hello=======================>
              package com;
    import javax.ejb.Stateless;
    @Stateless
    public class Hello implements HelloRemote {
    public void say(String name) {

      System.out.println(name+",你好啊!");
      
    }
    }
    <!=========Interface HelloRemote======================>
          
    package com;
    import javax.ejb.Remote;
    @Remote
    public interface HelloRemote {
      public void say(String name);
      
    }

      <!=====================测试类==============>

    package com;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    public class Main {
    /**
      * @param args
      */
    public static void main(String[] args) {
        try {
      Context ct=new InitialContext();//获得JNDI上下文
          
            //如果部署成功  其实客户端的Hello实现类可以删除  只暴露接口
    HelloRemote hello=(HelloRemote)ct.lookup("Hello/remote");
    hello.say("zhanvg");
    } catch (NamingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    }
    }
  • 相关阅读:
    浅谈数论
    浅谈数论
    bzoj2190 [SDOI2008]仪仗队
    bzoj2190 [SDOI2008]仪仗队
    35.QQ大数据模型
    34.函数指针数组和多线程
    33.函数指针相关问题
    32.分配数组的方式
    31.内存分配四大函数以及栈上分配内存
    30.锯齿数组
  • 原文地址:https://www.cnblogs.com/zhangqifeng/p/1418898.html
Copyright © 2020-2023  润新知