• 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();
    }

    }
    }
  • 相关阅读:
    1202诗人基本介绍&诗人画像
    1205人物关系优化&诗人轨迹
    把SQL Server 2000 表中的自动编号Id重新开始排列
    一个一直都不明白的东西今天知道了。关于sqlserver2000自动执行。
    服装打版界的扛把子ET自定义操作
    手把手教你搭建集中式版本控制系统SVN服务器
    分享一次实用的爬虫经验
    盘点CSV文件在Excel中打开后乱码问题的两种处理方法
    盘点服装设计所经常性使用的软件ET(下篇)
    sql 每个企业选择一条产品
  • 原文地址:https://www.cnblogs.com/zhangqifeng/p/1418898.html
Copyright © 2020-2023  润新知