zoukankan      html  css  js  c++  java
  • 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();
    }

    }
    }
  • 相关阅读:
    Virtual Studio 2010在Release模式下进行调试的设置方法
    OpenGL Shader
    OGRE的安装编译
    开源GIS平台空间数据管理与发布技术研究
    风靡世界的小游戏2048源代码
    成为优秀程序员的几个阶段
    颜色空间模型(HSVLABRGBCMYK)
    希望自己的博客被知名搜索引擎收录的网址
    我的第一篇博客
    当你的善良受到委屈时
  • 原文地址:https://www.cnblogs.com/zhangqifeng/p/1418898.html
Copyright © 2011-2022 走看看