`

MyEclipse下EJB应用程序的开发

    博客分类:
  • Ejb
阅读更多

MyEclipse下EJB应用程序的开发 例子

版权所有,欢迎转载,转载请注明转自http://www.suneca.com

EJB(Enterprise JavaBean)是SUN服务器端组件模型,是J2EE的一部分,基于EJB技术,可以开分布式应用程序。
Jbuilder是一个非常理想的EJB开发工具,在现在这么多免费的开发工具前面,Borland还有一定的市场,可见Jbuilder还是有非常明显的优势。
MyEclipse是一个基于Eclipse的开发工具,这个开发工具也很便宜,官方报价也就29.9美元,算是非常便宜的一个工具了,现在国内很多做Java开发的程序都是使用这个工具。
EJB的开发需要有J2EE应用服务器的支持,注意:Tomcat只是一个Servlet容器,不是一个J2EE应用服务器。本次例子使用的是开源的Jboss4.x
Jboss应用服务器的下载地址:http://www.jboss.org
下面介绍如何基于MyEclipse开发无状态的SessionBean。
第一步,配置J2EE应用服务器:
点击WindowsPreferences,在弹出的对话框当中选择MyEclipse-->Jboss-->Jboss 4.x



将Jboss Sever状态改为Enable
Jboss home directory改为Jboss的安装路径
JDK改为系统的JDK路径,注意,Jboss 4使用的是Tomcat5.5内核,Tomcat5.5运行需要有JDK的支持。
最后,点击OK按钮
第二步,创建一个EJB工程:



点击Next>按钮,在Project Name当中输入EJBTraining,或者输入你喜欢的工程名。如下图所示:


在Package Explorer可以看到工程的目录:


第三步,新建一个SessionBean


点击Next>


在Package上填入zizz.ejb(一般企业做开发的时候都有一定的命名规范,一般喜欢以ejb结尾)
在Name上填入UserServiceBean(一个EJB Bean一般情况是以Bean结尾,特别是在Eclipse开发框架下,因为是使用Xdoclet来生成代码的)
在EJB类型上选择Stateless,表示无状态会话Bean
在Select the access of the EJB上面选择Remote
选上ejbCreate() method
系统生成的UserServiceBean如下:
程序代码 程序代码
package zizz.ejb;

import java.rmi.RemoteException;

import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

import javax.ejb.CreateException;

/**
* XDoclet-based session bean.  The class must be declared
* public according to the EJB specification.
*
* To generate the EJB related files to this EJB:
*        - Add Standard EJB module to XDoclet project properties
*        - Customize XDoclet configuration for your appserver
*        - Run XDoclet
*
* Below are the xdoclet-related tags needed for this EJB.
*
* @ejb.bean name="UserService"
*           display-name="Name for UserService"
*           description="Description for UserService"
*           jndi-name="ejb/UserService"
*           type="Stateless"
*           view-type="remote"
*/

public class UserServiceBean implements SessionBean {

    /** The session context */
    private SessionContext context;

    public UserServiceBean() {
        // TODO Auto-generated constructor stub
    }

    public void ejbActivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub

    }

    public void ejbPassivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub

    }

    public void ejbRemove() throws EJBException, RemoteException {
        // TODO Auto-generated method stub

    }

    /**
     * Set the associated session context. The container calls this method
     * after the instance creation.
     *
     * The enterprise bean instance should store the reference to the context
     * object in an instance variable.
     *
     * This method is called with no transaction context.
     *
     * @throws EJBException Thrown if method fails due to system-level error.
     */

    public void setSessionContext(SessionContext newContext)
        throws EJBException {
        context = newContext;
    }

    /**
     * An ejbCreate method as required by the EJB specification.
     *
     * The container calls the instance?s <code>ejbCreate</code> method whose
     * signature matches the signature of the <code>create</code> method invoked
     * by the client. The input parameters sent from the client are passed to
     * the <code>ejbCreate</code> method. Each session bean class must have at
     * least one <code>ejbCreate</code> method. The number and signatures
     * of a session bean?s <code>create</code> methods are specific to each
     * session bean class.
     *
     * @throws CreateException Thrown if method fails due to system-level error.
     *
     * @ejb.create-method
     *
     */

    public void ejbCreate() throws CreateException {
        // TODO Add ejbCreate method implementation
    }

    /**
     * An example business method
     *
     * @ejb.interface-method view-type = "remote"
     *
     * @throws EJBException Thrown if method fails due to system-level error.
     */

    public void replaceWithRealBusinessMethod() throws EJBException {
        // rename and start putting your business logic here
    }

}


将replaceWithRealBusinessMethod方法改为具体的业务方法,修改完的业务方法如下:
程序代码 程序代码
package zizz[color=#0000ff].ejb;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

import zizz.model.User;

/**
* XDoclet-based session bean.  The class must be declared
* public according to the EJB specification.
*
* To generate the EJB related files to this EJB:
*        - Add Standard EJB module to XDoclet project properties
*        - Customize XDoclet configuration for your appserver
*        - Run XDoclet
*
* Below are the xdoclet-related tags needed for this EJB.
*
* @ejb.bean name="UserService"
*           display-name="Name for UserService"
*           description="Description for UserService"
*           jndi-name="ejb/UserService"
*           type="Stateless"
*           view-type="remote"
*/

public class UserServiceBean implements SessionBean {

    /** The session context */
    private SessionContext context;

    public UserServiceBean() {
        // TODO Auto-generated constructor stub
    }

    public void ejbActivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub

    }

    public void ejbPassivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub

    }

    public void ejbRemove() throws EJBException, RemoteException {
        // TODO Auto-generated method stub

    }

    /**
     * Set the associated session context. The container calls this method
     * after the instance creation.
     *
     * The enterprise bean instance should store the reference to the context
     * object in an instance variable.
     *
     * This method is called with no transaction context.
     *
     * @throws EJBException Thrown if method fails due to system-level error.
     */

    public void setSessionContext(SessionContext newContext)
        throws EJBException {
        context = newContext;
    }

    /**
     * An ejbCreate method as required by the EJB specification.
     *
     * The container calls the instance?s <code>ejbCreate</code> method whose
     * signature matches the signature of the <code>create</code> method invoked
     * by the client. The input parameters sent from the client are passed to
     * the <code>ejbCreate</code> method. Each session bean class must have at
     * least one <code>ejbCreate</code> method. The number and signatures
     * of a session bean?s <code>create</code> methods are specific to each
     * session bean class.
     *
     * @throws CreateException Thrown if method fails due to system-level error.
     *
     * @ejb.create-method
     *
     */

    public void ejbCreate() throws CreateException {
        // TODO Add ejbCreate method implementation
    }

    /**
     * An example business method
     *
     * @ejb.interface-method view-type = "remote"
     *
     * @throws EJBException Thrown if method fails due to system-level error.
     */

    public List listAllUsers() throws EJBException {
        List<User> users = new ArrayList<User>();
        User user1 = new User();
        user1.setId(1);
        user1.setName("达闻西");
        user1.setLoginId("dwx");
        users.add(user1);
        
        User user2 = new User();
        user2.setId(2);
        user2.setName("零零漆");
        user2.setLoginId("007");
        users.add(user2);
        return users;
    }

}
[/color]

User实体为:
程序代码 程序代码
package zizz.model;

import java.io.Serializable;

/**
*
* ZIZZ,该对象用以网络传输,必须实现串行化接口.
* @author ZIZZ.
* @version Create Date: 2007-12-5 下午05:29:10.
*/

public class User implements Serializable{
    
    /**
     * serialVersionUID
     */

    private static final long serialVersionUID = -2176183120082246628L;

    private int id;
    
    private String name;
    
    private String loginId;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getLoginId() {
        return loginId;
    }

    public void setLoginId(String loginId) {
        this.loginId = loginId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
}


其中@ejb.interface-method view-type = "remote"这些XDolect注解不应该删除,因为一会还需要靠XDolect生成代码。

第四步,配置XDolect
点击工程右键,选择Properties


将弹出工程属性对话框,在弹出的对话框当中选择Xdolect,如下图所示


点击Add Standard按钮,在弹出的对话框当中选择Stardard EJB,最后点击OK按钮,如下图所示:


点击Standard EJB,在下面将会出来ejbdolect的选择项,将不必要的选择项目删,如下图所示:


删完后的配置项为:  


接着,点击ejbdolect,右键,选择Add


在弹出的对象框当中选择jboss,最后,点击ok按钮


接着需要配置jboss的配置,点击jboss,在加边的配置项当中做如下的修改
Version定义为:4.0
destDir定义为:src/META-INF
最后,点击OK
第五步,生成代码:
在工程上右键,选择MyEclipseRun Xdolect


工程新的目录结构:


此时,我们的EJB程序就开发得差不多了,接着来,进行发布
第五步:发布应用程序(发布跟发布应用程序一样,详细可以参考)
http://www.suneca.com/article.asp?id=18


第六步,启动Jboss应用服务器
在控制台上,可以看到这样提示信息:
程序代码 程序代码
12:44:48,375 INFO  [EjbModule] Deploying UserService
12:44:48,703 INFO  [ProxyFactory] Bound EJB Home 'UserService' to jndi 'ejb/UserService'


到此,我们的EJB组件已经发布成功了,接下来,我们需要开发一个客户端来验证一下我们的EJB组件的有效性。

我们需要对对model对象及接口(即远程接口跟本地接口)打一个包,然后将打的这个包存存放于客户端的classpath当中。
第七步,打包:
点击File-->Export,在弹出的对象框当中选择JAR file,如下图所示:

点击Next>,将弹出如下的对话框

在JAR file输入框当中输入:c:\UserServiceClient.jar,表示在c盘下生成一个UserServiceClient的jar文件。
第八步,创建一个客户端工程
将UserServiceClient.jar及jbossall-client.jar文件加入到客户端工程的classpath当中。

第九步,编程测试客户端
创建一个测试类,比如叫UserServiceClient.java,调用服务器的组件,
UserServiceClient内容如下:
程序代码 程序代码
package zizz.ejb.client;

import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

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

import zizz.interfaces.UserService;
import zizz.interfaces.UserServiceHome;
import zizz.model.User;

/**
*
* 该程序用于调用服务器端的组件.
*
* @author ZIZZ.
* @version Create Date: 2007-12-6 下午02:06:00.
*/

public class UserServiceClient {

    /**
     * @param args
     */

    public static void main(String[] args) {
        //设置Context工厂,不同应用服务器设置不同
        Properties env = new Properties();
        env.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
        env.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming.client");
        // 设置jnp地址
        env.setProperty(Context.PROVIDER_URL, "jnp://localhost:1099");
        try {
            //得到Context
            Context enc = new InitialContext(env);
            //得到本地接口
            UserServiceHome home = (UserServiceHome) enc.lookup("ejb/UserService");
            //得到远程对象
            UserService userService = home.create();
            //调用远程对象的方法
            List users = userService.listAllUsers();
            Iterator iter = users.iterator();
            while (iter.hasNext()) {
                User user = (User) iter.next();
                System.out.println(user.getName());
            }
        } catch (NamingException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (CreateException e) {
            e.printStackTrace();
        }

    }

}
分享到:
评论

相关推荐

    MyEclipse进行Ejb快速开发配置

    EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要用于构建可复用、分布式、事务处理和安全的服务器端应用程序。MyEclipse是一款强大的集成开发环境,特别适合于Java EE项目的开发,包括EJB。...

    Myeclipse开发ejb详解教程.zip

    通过本教程的学习,开发者不仅能掌握EJB的基本概念,还能熟练运用Myeclipse进行EJB项目的开发,从而在Java EE平台上构建高效、可靠的分布式应用程序。同时,提供的`myeclipse_ejb.pdf`文件可能包含了详细的步骤和...

    如何在MyEclipse下开发EJB

    这包括创建EJB项目、配置项目以使用XDoclet属性导向编程能力、利用XDoclet代码生成器来创建EJB和Home接口、查找实用程序以及J2EE和应用程序服务器特定的部署描述符等。这些工具旨在简化EJB开发过程,使开发者能够...

    myeclipse ejb 开发经典教程

    10. **调试与部署**:掌握在MyEclipse中调试EJB的方法,以及如何将EJB应用部署到应用服务器(如Tomcat、Glassfish或WebLogic)上。 这份“myeclipse ejb 开发经典教程”应该会详尽地介绍以上知识点,帮助初学者建立...

    weblogic+Myeclipse+EJB

    通过以上介绍,我们可以看到如何在MyEclipse环境下使用WebLogic Server来开发和部署EJB应用程序。从WebLogic Server的安装配置到EJB项目的创建、部署,再到具体的EJB组件设计,每一个步骤都至关重要。此外,对于初学...

    EJB3.0+JBOSS+MyEclipse初体验(完整代码和过程)

    Enterprise JavaBeans (EJB) 是Java平台企业版(Java EE)中的核心组件,用于构建可扩展、安全且事务处理的服务器端应用程序。EJB 3.0是EJB规范的一个重要版本,它极大地简化了EJB的开发,降低了学习曲线,使得开发...

    MyEclipse+JBoss开发EJB.doc

    EJB(Enterprise JavaBean)是Java平台上的企业级组件模型,它属于J2EE(Java 2 Platform, Enterprise Edition)的一部分,用于构建可扩展的分布式应用程序。EJB提供了一种标准的方式来实现业务逻辑,使得开发者可以...

    MyEclipse_JBoss4.0开发EJB组件环境配置(入门调试级)

    在Java企业级应用开发中,Enterprise JavaBeans (EJB) 是一种核心技术,它为开发者提供了构建可伸缩、安全且可移植的分布式应用程序的能力。MyEclipse作为一款强大的Java集成开发环境,集成了对EJB开发的全面支持。...

    MyEclipse开发中文教程

    最后一章专门讨论图形界面开发,揭示了MyEclipse在创建丰富的桌面或Web应用程序界面方面的强大功能。 通过这些章节的学习,读者将掌握MyEclipse作为高效Java开发工具的全方位技能,能够自如应对各种复杂的企业级...

    开发 EJB 应用电子版

    本章节主要介绍了EJB(Enterprise JavaBeans)及其相关概念,强调了尽管轻量级框架(如Spring)在现代软件开发中的流行度增加,但在特定场景下,尤其是大型企业和需要跨多台服务器部署的应用程序中,EJB仍然具有不...

    MyEclipse+EJB3+JBoss4部署EBJ+web项目HelloWorld详解

    MyEclipse 是一款基于 Eclipse 的功能强大的 Java EE 开发工具,它提供了许多高级特性,如数据库集成、Web 应用程序开发支持等。访问 MyEclipse 官网下载安装包并进行安装。 ##### 3. 安装 JBoss 4 JBoss 是一款...

    JBoss Myeclipse EJB3 First Demo

    6. **编写客户端代码**:创建一个Java SE或Java EE应用程序,使用JNDI查找来获取Bean的引用,然后调用其方法。 7. **部署与测试**:将EJB项目部署到JBoss服务器,使用MyEclipse的调试工具进行测试和调试。 在学习...

    Myeclipse+JBoss开发的EJB3.0 一对多程序

    EJB(Enterprise JavaBeans)是Java EE平台中用于构建企业级应用程序的核心组件,它提供了一种规范化的、面向服务的架构来开发分布式、事务处理和安全的应用。EJB3.0是其第三个主要版本,发布于2006年,相较于之前的...

    Myeclipse+JBoss开发的EJB3.0 多对多程序

    在本项目中,"Myeclipse+JBoss开发的EJB3.0 多对多程序" 是一个基于Java EE平台的课程实验,利用EJB3.0(Enterprise JavaBeans 3.0)规范和Myeclipse集成开发环境,以及JBoss应用服务器,实现了数据模型中的多对多...

    MyEclipse6 Java开发中文教程_全部18章

    第二章 开发第一个Java 应用程序 第三章 Eclipse 的基础概念,配置和使用 第四章 用MyEclipse Database Explorer管理数据库 第五章 开发JDBC 应用 第六章 管理应用服务器 第七章 开发Hibernate 应用 第八章 开发Web ...

    MyEclipse开发中文教程源程序

    【MyEclipse开发中文教程源程序】是一份详尽的教育资源,旨在帮助开发者深入理解并熟练运用MyEclipse这一强大的集成开发环境(IDE)进行Java应用程序的开发。这份教程源程序与配套的电子书紧密关联,每个章节都包含...

    WebLogic 11g 在 MyEclipse 7.5 中开发 Web 应用

    在IT行业中,Web应用开发是一项核心任务,而WebLogic 11g与MyEclipse 7.5的结合为开发者提供了强大的工具集,用于构建、部署和管理企业级的Java EE应用程序。以下将详细介绍这两个工具以及如何在MyEclipse 7.5中使用...

    JBoss Myeclipse EJB3 Second Demo

    在EJB3中,数据源通常通过JNDI(Java Naming and Directory Interface)来查找和使用,这使得应用程序可以在不关心底层数据库实现的情况下访问数据库资源。 3. **存储过程调用**:文件`EJB3.0实例教程如何调用存储...

    MyEclipse下JavaEE开发教程全套

    2. **J2EE**:Java 2 Platform, Enterprise Edition,是一种用于构建分布式企业级应用程序的框架,包括Servlet、JSP、EJB等组件。 3. **Java**:作为基础,Java语言是开发J2EE应用的主要编程语言,教程会讲解其基本...

Global site tag (gtag.js) - Google Analytics