[原创]Session Bean开发示例_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3221 | 回复: 0   主题: [原创]Session Bean开发示例        下一篇 
xiuwen.zhao
高级会员
等级:上尉
经验:668
发帖:38
精华:0
注册:1970-1-1
状态:离线
发送短消息息给xiuwen.zhao 加好友    发送短消息息给xiuwen.zhao 发消息
发表于: IP:您无权察看 2014-9-2 16:59:08 | [全部帖] [楼主帖] 楼主

1.Session Bean概述

Session Bean代表一个可处理应用中业务逻辑的完整组件,主要包含了各种业务逻辑的实现代码。当Session Bean部署在EJB容器中之后,其他客户端就可获取该EJB组件,并调用它的方法。从客户端获取Session Bean,到客户端调用其方法结束,可称为客户端与Session Bean之间的一次会话。

EJB3对Session Bean进行了简化,开发者不需要对Session Bean编写Home接口,不需要为Session Bean提供所谓的部署描述文件。

对于EJB3的Session Bean而言,它可分为两类:有状态的Session Bean,无状态的Session Bean。对于有状态的Session Bean来说,在客户端多次调用某个Session Bean的方法时,只要客户端一直保持着该Session Bean的引用,那么该Session Bean就可以在多次调用之间维护这种会话状态。而无状态的Session Bean无须维护与客户端之间的会话状态,如果无状态的Session Bean包括一个与客户端相关的实例变量,那么这个实例变量应该只是在调用期间内有效,一旦调用结束,这个与客户端相关的状态就不应该保留。

2.Session Bean开发过程

Session Bean总是由两部分组成:一个或多个业务接口和EJB的Bean实现类。

EJB3的业务接口就是一个普通接口,没有任何特殊之处。代码如下:

package ejb;
public interface HelloEJB {
      public String sayHello(String name);
}


该业务接口中定义了该EJB可以提供的业务方法,一个业务方法通常处理一次业务请求。EJB内的业务方法应该遵守如下基本规定:


  • 业务方法名尽量不要以ejb开头,如果开发者定义的业务方法与这些方法名相同,将可能与EJB体系定义的默认方法冲突。
  • 如果是一个允许远程调用的EJB,那么所有业务方法中���形式参数类型、返回值类型都必须是可序列化的。
  • 业务方法不应该使用static final修饰。



下面是该EJB业务接口的一个实现类,如果是一个无状态的Session Bean,则使用@Stateless修饰该Bean类。如果是一个有状态的Session Bean,则使用@Stateful来修饰该Bean类。

package ejb;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Stateless(mappedName = "HelloEJB")
@Remote
public class HelloEJBBean implements HelloEJB {
      @Override
      public String sayHello(String name) {
            return "Hello "+name + ", the time is:" + new java.util.Date();
      }
}


编译上面两个Java文件,将它们生成的.class文件打包成一个jar包,并部署WebLogic下,部署方法如下:

单击WebLogic控制台域结构面板中的部署节点,将会看到如下页面:

北京联动北方科技有限公司

单击安装按钮,系统将进入查找EJB jar包的页面:

北京联动北方科技有限公司

选中要安装的jar包后,如果没有额外的需求,多次点击“下一步”就可完成EJB的部署:

北京联动北方科技有限公司

调用EJB服务非常简单,只需两步即可:

  • 通过JNDI查找EJB的引用,并面向接口编程,将该引用强制类型转换为EJB的业务接口类型。
  • 调用方法。



下面是一个调用WebLogic服务器EJB组件的示例:

import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import ejb.HelloEJB;
public class EjbClient{
      public void test() throws NamingException{
            Context ctx = getInitialContext();
            HelloEJB h2 = (HelloEJB) ctx.lookup("HelloEJB#ejb.HelloEJB");
            System.out.println(h2.sayHello("Zaiven"));
      }
      private Context getInitialContext(){
            final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
            final String SERVER_URL = "t3://localhost:7001";
            Context ctx = null;
            try{
                  Properties props = new Properties();
                  props.put(Context.INITIAL_CONTEXT_FACTORY, INIT_FACTORY);
                  props.put(Context.PROVIDER_URL, SERVER_URL);
                  ctx = new InitialContext(props);
            }catch(NamingException ne){
            System.err.println("can't connect WebLogic" + SERVER_URL);
            ne.printStackTrace();
      }
      return ctx;
}
public static void main(String[] args) throws NamingException{
      EjbClient client = new EjbClient();
      client.test();
}
}


上述程序的运行结果如下:

Hello Zaiven, the time is:Tue Sep 02 15:49:04 CST 2014


该贴被xiuwen.zhao编辑于2014-9-2 17:01:07




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论