`
Gavin.Chen
  • 浏览: 325830 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Maven2下第一个EJB2.1简单实例

阅读更多

        一开始还是得列出Maven2下EJB2.1的目录结构,详细介绍请参照我之前写的一篇文章 [ Maven2下第一个EJB3.0简单实例 ],之所以将EJB2.1的实例与EJB3.0的实例写到一起,是因为确实两个版本变化较大,也是因为很多人确实遇到要从EJB2.1跳转到EJB3.0的情况,就是说要把以前EJB2.1的改写成EJB3.0的,这样的话,肯定需要有一个开始,万事开头难,搞技术一点也例外不了,有些就是在一开始的时候做个简单实例都要花上好长一段时间,反而在做出简单实例后,之后的工作进展就快许多,所以我将这两篇文章摆到一起,有需要就看吧,没需要也不影响。

ejb2test

    |--pom.xml                                                 //Maven项目根目录必须有这文件,主配置文件来的

    |--src                                                         //项目资源文件目录,所有代码,项目相关的都在这

        |--main                                                  //主文件目录,与之相对应的是单元测试test目录

            |--java                                               //JAVA文件目录,使之与图片,配置文件等隔离开来

                |--mydomain                                 //这下面就是你自己的东西,不一一介绍了

                    |--ejb2test

                        |--HaiRemoteHome.java       //EJB2需要一个或两个Home文件,用来返回EJBObject

                        |--HaiRemote.java                //Remote接口,相对应的是Local接口,二选一或二全选

                        |--HaiBean.java                    //这个才是主角,SessionBean文件,里面才有实现方法

            |--resources                                      //资源文件,像一些配置文件全放这,图片也放这

                |--META-INF

                    |--ejb-jar.xml                            

                    |--jboss.xml

        |--test                                                    //单元测试目录,与主目录main相隔离,可不要这文件夹

            |--java                                               //下面这些目录与main里面的java目录一模一样,对应的

                |--mydomain

                    |--ejb2test

 

下面是整个pom文件,全贴出来了


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mydomain</groupId>
    <artifactId>ejb2.1</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>ejb2 Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

       <!--就只需这一个包-->
        <dependency>
            <groupId>jboss</groupId>
            <artifactId>jboss-j2ee</artifactId>
            <version>4.0.2</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>ejb2</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 

下面是HaiRemoteHome,HaiRemote与HaiBean的源码


1、HaiRemoteHome.java

package com.mydomain;

 

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;


public interface HaiRemoteHome extends EJBHome
{
    HaiRemote create() throws RemoteException, CreateException;
}

 

2、HaiRemote.java

package com.mydomain;

import java.rmi.RemoteException;
import javax.ejb.EJBObject;


public interface HaiRemote extends EJBObject
{
    String sayHai() throws RemoteException;
}

3、HaiBean.java

package com.mydomain;

import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

public class HaiBean implements SessionBean
{

    public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException
    {
        System.out.println("set session context");
    }
   
    public void ejbCreate() throws EJBException
    {
        System.out.println("ejb create");
    }

    public void ejbRemove() throws EJBException, RemoteException
    {
        System.out.println("ejb remove");
    }

    public void ejbActivate() throws EJBException, RemoteException
    {
        System.out.println("ejb activate");
    }

    public void ejbPassivate() throws EJBException, RemoteException
    {
        System.out.println("ejb passivate");
    }

    public String sayHai() throws RemoteException
    {
        return "Hai, EJB 2!";
    }

}

 

下面是ejb-jar.xml与jboss.xml的内容

1、ejb-jar.xml

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd' >

<ejb-jar>
    <description>Hai EJB instance.</description>
    <display-name>Hai EJB</display-name>
    <enterprise-beans>
        <session>
            <ejb-name>HaiEJB</ejb-name>
            <home>com.mydomain.HaiHome</home>
            <remote>com.mydomain.HaiRemote</remote>
            <ejb-class>com.mydomain.HaiBean</ejb-class>
            <session-type>Stateful</session-type>
            <transaction-type>Bean</transaction-type>
        </session>
    </enterprise-beans>
</ejb-jar>

2、jboss.xml

<?xml version="1.0" encoding="UTF-8"?>

<jboss>
    <enterprise-beans>
        <session>
            <ejb-name>HaiEJB</ejb-name>
            <jndi-name>HaiEJB</jndi-name>
        </session>
    </enterprise-beans>
</jboss>

写完这些文件,就可以用mvn生成jar包了

mvn install

然后在项目根目录的target文件夹下,有一个ejb2.jar,将它复制到jboss文件夹下,server/default/deploy目录中,然后在命令行中运行jboss文件夹下的/bin/run.bat文件,这一过程通常称之为deploy

 

待deploy成功后,就可以写一个java application进行测试了

新建一个java application

导入jboss目录下client文件夹下的jboss-j2ee.jar,

然后新建一个类,写上以下代码

 

import com.mydomain.HaiHome;
import com.mydomain.HaiRemote;
import java.rmi.RemoteException;
import java.util.Properties;
import javax.ejb.CreateException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;


public class Main
{
    public static void main(String[] args)
    {
        System.out.println("===========================================================");
        Properties props = new Properties();
        props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
        props.setProperty("java.naming.provider.url", "localhost:1099");
        props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
        try
        {
            InitialContext ctx = new InitialContext(props);
           
            Object objRef = ctx.lookup("HaiEJB");
           
            HaiHome home = (HaiHome) PortableRemoteObject.narrow(objRef, HaiHome.class);
           
            HaiRemote remote = home.create();
           
            System.out.println(remote.sayHai());
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

 如果顺利的话,你应该可以看到以下信息

Hai, EJB 2!

分享到:
评论
2 楼 Gavin.Chen 2009-08-31  
liuyu220 写道
楼主,你讲了这么多,没有提及怎么将ejb2.1转换成3.0啊。还有我想问一下,可不可以在一个项目下同时开发ejb2.1和ejb3.0的程序?如果楼主知道,请多多的说,不胜感谢


2.1转3.0,怎么转没办法讲,你熟悉了这两个版本的规范,自然就知道怎么去改这些相关的类,不过这两个版本差别太大,将旧的2.1转向3.0代价很大,要从长考虑,况且现在3.0到现在还未完全稳定,如果是企业级应用,要小心用3.0

同时开发ejb2.1和ejb3.0是可以的,不要两个要分别打包成独立的jar包,总项目打包成ear包,把ejb2.1与ejb3.0的jar包都包含进去,再部署到容器里就可以了
1 楼 liuyu220 2009-08-25  
楼主,你讲了这么多,没有提及怎么将ejb2.1转换成3.0啊。还有我想问一下,可不可以在一个项目下同时开发ejb2.1和ejb3.0的程序?如果楼主知道,请多多的说,不胜感谢

相关推荐

    EJB3使用说明中文版

    - 创建一个新的 Maven 项目,并添加必要的依赖(如 `javax.ejb` 和 `org.jboss.ejb-client`)。 - 编写一个简单的 Stateless Session Bean 示例,使用 `@Stateless` 注解。 **2.3 在独立的 TOMCAT 或 SWING 中调用 ...

    JavaEE程序员必读图书大推荐参照.pdf

    4. 《Effective Java》:作者是 Java 的第 2 号人物,James Gosling 强力推荐的一本书,对初级、中级、高级程序员都适用。 5. 《Java 与模式》:是国人写的一本难得的好书,对中级、高级程序员有帮助。 6. 《SCJP ...

    JBPM4工作流应用开始指南.rar

    第一篇 jBPM工作流开发基础 1 第1章 工作流基础 2 1.1 工作流概念 2 1.1.1 工作流管理思想之于企业现代化管理 2 1.1.2 工作流技术在企业中的应用 5 1.1.3 如何从一个开发者的角度看工作流技术 6 1.2 工作流管理系统...

    Java EE 7 Development with WildFly

    - **部署第一个应用到WildFly 8**:详细指导如何将应用程序部署到服务器上。 - **使用Eclipse进行高级部署**:介绍了如何利用Eclipse IDE来进行更复杂的部署任务。 - **通过Web控制台管理部署**:展示了如何使用Web...

    JavaEE程序员必读图书大推荐

    #### 第一部分:Java语言篇 这一部分主要介绍了对于Java程序员而言最为基础且重要的几本书籍,覆盖了从入门到中级的过渡阶段。 - **《Java编程规范》** 星级:★★★★★ 适合对象:初级,中级 该书由Java之...

    java推荐书籍

    - **简介**: 这是一本非常适合初学者的书籍,全面覆盖了Java的基础知识,通过大量的实例帮助读者快速掌握Java编程技巧。 3. **《Java核心思想》** - **简介**: 本书深入剖析了Java的核心概念和技术,特别是与C++...

    J2EE电子商务系统开发从入门到精通--基于Struts和Hibernate技术实现

    - `ActionMapping`类用于定义一个请求到`Action`实例的映射关系,包括路径、名称等信息。 **2.5 Struts模型组件类** - Struts的模型组件主要是指业务逻辑相关的类,通常由开发者自行定义。 **2.6 Struts的配置...

Global site tag (gtag.js) - Google Analytics