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

    最近在学习EJB3.0,也自己实际的操作了一把,中间遇到了很多问题,也学习到很多,现在将自己的一些心得分享一下。

    首先,我们要知道,什么是EJB,EJB是用来干什么的?

    高大上的说法:J2EE将业务逻辑从客户端软件中抽取出来,封装在一个组件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实现业务逻辑,而客户端软件的功能只是单纯的负责发送调用请求和显示处理结果。在J2EE上,这个运行在一个独立的服务器上,并封装了业务逻辑的组件就是EJB(Enterprise JavaBean)组件。

    通俗易懂(low)的说法:把你编写的软件中那些需要执行特定任务的类,不放在客户端软件上,而是给它打个包,单独的放在服务器上。

    EJB3.0有3种类型的Bean:分别的会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

    好了,现在进入正题,那么怎么样部署和实现一个简单的sessionbean呢?我用的是MyEclipse+Weblogic+EJB3.0。

    (1)用MyEclipse创建一个EJBProject,配置BuildPath,将wlserve/serve/lib/weblogic.jar导入classpath

    (2)创建一个接口类,HelloWorldRemote

package com.ejb3;

import javax.ejb.Remote;

@Remote
public interface HelloWorldRemote {
    public String sayHello(String name);
}

    (3)创建一个接口的实现类,HelloWorld

package com.ejb3;

import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless
@Remote({HelloWorldRemote.class})
public class HelloWorld implements HelloWorldRemote {
    public String sayHello(String name){
        return name+"say hello.";
    }
}

    (4)将该EJBProject发布在Weblogic上,有两种方法,需要提前启动weblogic服务器

        一:使用MyEclipse创建的EJB工程,像部署web工程一样的,点击run as->MyEclipse Serve Application,就会自动部署到Weblogic服务器上去了。

        二:将其打包成jar,可以使用MyEclipse进行打包,选择工程,export->选择jar file,单击next->【选择要打包的工程下面的类,修改JAR file,如C:\Users\server\Desktop\HelloWorld.jar,点击finish】。这样jar 包就打好了,名字和路径就是你填的 JAR file了。

        登陆weblogic console,部署->安装->选择刚才的jar包->接下来点下一步,完成就可以了,之后会看到名称为HelloWorld的ejb工程,说明我们发布部署成功,采用第一种发布方式,名称是你的项目名,后面跟一个(自动部署)

    (5)通过客户端访问服务器上的EJB

            创建一个EJBTest的javaproject客户端,在下面创建一个Test.java的测试类, 用来访问服务器上的EJB。

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import weblogic.jndi.WLInitialContextFactory;
import com.ejb3.HelloWorldRemote;

public class Test {
    public static void main(String[] args)throws NamingException {
        Properties prop = new Properties();
        prop.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY, WLInitialContextFactory.class.getName());
        prop.setProperty(javax.naming.Context.PROVIDER_URL, "t3://localhost:7001");
        Context cxt=new InitialContext(prop);
        HelloWorldRemote h = (HelloWorldRemote)cxt.lookup("java:global.HelloWorld.HelloWorld");
        System.out.println(h.sayHello("chenming "));
    }
}

    *注意要导入ejb组件的jar包和weblogic的webfullclient.jar,不然会报出一系列找不到类,找不到命名名称的错误。

    在lookup方法,也就是数据源引用的时候,那个参数我一直配置错误,导致一系列莫名其妙的错误,后来才知道要去查看我们刚刚部署的EJB的JNDI,点击左侧的,服务器->单击你部署的服务器,如AdminServer->选择 配置-一般信息->单击 查看JNDI树,如图,找出该EJB对应的JNDI 名称:

    QQ图片20160518102225.png

    其中的版定名也就是我们lookup方法里需要填写的数据源参数。

    运行客户端的Test测试类,输出如下:

    QQ图片20160518102727.png

    至此,一个简单的session bean的部署和实现就完成了,希望抛砖引玉。


该贴被ming.chen编辑于2016-5-18 10:31:02



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