[原创]EJB 中 Session Bean 的部署与实现_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3187 | 回复: 0   主题: [原创]EJB 中 Session Bean 的部署与实现        下一篇 
panpan.nie
注册用户
等级:大校
经验:4754
发帖:217
精华:2
注册:1970-1-1
状态:离线
发送短消息息给panpan.nie 加好友    发送短消息息给panpan.nie 发消息
发表于: IP:您无权察看 2014-10-20 18:05:33 | [全部帖] [楼主帖] 楼主

我们先思考一个问题:EJB有三种会话,如何实现至少其中一种会话呢?使用的开发环境jdk1.7.0_67 + MyEclipse + Weblogic12c

我们以一个无状态会话bean 为例来看实现过程。

① 创建一个JavaProject (你也可以使用MyEclipse直接创建EJBProject),配置Build Path,将wlserver_12.1\server\lib\weblogic.jar 导入classpath

② 创建一个接口

package com;

public interface Helloworld

{

    public String sayHello(String name);

}

    ③ 创建一个实现类

package com.impl;

import javax.ejb.Remote;

import javax.ejb.Stateless;

import com.Helloworld;

@Stateless//该注解指明这是一个无状态的会话bean

@Remote(Helloworld.class)

public class HelloWorldBean implements Helloworld

{

    public String sayHello(String name)

    { 

    return "Hello,"+name;

    } 

}

将该EJB 发布在 Weblogic上有两种方法(前提:已经启动WebLogic)

一、使用MyEclipse 创建的EJB工程,像部署web工程一样部署,单击工具栏【Deploy MyEclipse J2EE Project to Server..】,选择要部署的项目,部署

二、将其打包成jar,可以使用MyEclipse打包,选择工程,点击右键->【Export】->【选择JAR file,单击next 】-> 【选择要打包的工程下面的类,修改JAR file,如D:\HelloEjb.jar,点击finish】。这样jar 包就打好了,名字和路径就是你填的 JAR file了

    登陆WebLogic Server 管理控制台,【部署】-> 【安装】 -> 【选择刚才的jar包】->…默认,下一步直至完成…

点【部署】,会看到名称为【HelloEjb】 的工程,这说明我们的Ejb 工程发布成功。额,采用第一种方法自动部署的名称可能是随机产生的……

既然这里已经说EJB工程已经发布,那么我们如何访问它呢?这里写一个客户端代码去访问这个EJB。

创建一个测试类:

package test;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.Helloworld;
public class TestEjb
{
      public static void main(String[] args)
      {
            System.out.println("begin ctx");
            Hashtable cs = new Hashtable();
            cs.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
            cs.put(Context.PROVIDER_URL, "t3://localhost:7001");
            try
            {
                  Context ctx = new InitialContext(cs);
                  Helloworld objRef = (Helloworld)ctx.lookup("java:global.HelloEjb.HelloWorldBean");
                  System.out.println(objRef.getClass());
                  System.out.println(objRef.sayHello("sell"));
                  System.out.println("end ctx");
            }
            catch (NamingException e)
            {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
            }
      }
}


注意:① 查看我们刚刚部署的工程的JNDI ,【服务器】->【单击你部署的服务器,如AdminServer】->【选择 配置-一般信息】->【单击 查看JNDI树】,如图,找出该EJB对应的JNDI 名称

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

    ② 在客户端编写的测试类,需要导入类 HelloWorld,即刚才所写的类。

测试类运行结果如下:

begin ctx
class com.sun.proxy.$Proxy0
Hello,sell
end ctx


大致就是这样了,我也不知道这中间是否有出错的地方……如果发现错了,请指出。

该贴被panpan.nie编辑于2014-10-20 18:09:33




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