`
jackle_liu
  • 浏览: 147775 次
文章分类
社区版块
存档分类
最新评论

jboss4.x下的第一个ejb2.0程序(1)---一个简单的无状态sessionBean

阅读更多
了解这个例子的前提是对jboss的熟悉,和对ejb的略微了解。
 
Hello.jar的文件组织是这样的:
1.三个类
 com.rox.Hello(SessionBean)
   com.rox.HelloHome(EJBHome,接口)
   com.rox.HelloWorld(EJBObject,接口)
2.配置文件
 META-INF
   ejb-jar.xml
       jboss.xml
直接把Hello.jar放入jboss的运行目录(deploy)中,配置成功.
以下是各个文件的内容:
Hello.java:
package com.rox;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
 * 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="Hello"
 *           display-name="Name for Hello"
 *           description="Description for Hello"
 *           jndi-name="ejb/Hello"
 *           type="Stateless"
 *           view-type="remote"
 */
public class Hello implements SessionBean {
    /** The session context */
    private SessionContext context;
    public Hello() {
        super();
        // TODO Auto-generated constructor 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;
    }
    public void ejbCreate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
       System.out.println("ejb create");
    }
    public void ejbRemove() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
    }
    public void ejbActivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
    }
    public void ejbPassivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
    }
    /**
     * An example business method
     *
     * @ejb.interface-method view-type = "remote"
     *
     * @throws EJBException Thrown if method fails due to system-level error.
     */
    public String sayIt() throws EJBException {
        System.out.println("hello didi");
        return "hello didi.";
    }
}

HelloHome.java:
package com.rox;
/**
 * Home interface for Hello.
 * @xdoclet-generated at ${TODAY}
 * @copyright The XDoclet Team
 * @author XDoclet
 * @version ${version}
 */
public interface HelloHome
   extends javax.ejb.EJBHome
{
   public static final String INITIAL_NAME="ejb/HelloWorld";
   public static final String COMP_NAME="java:comp/env/ejb/HelloWorld";
   public static final String JNDI_NAME="ejb/HelloWorld";
   public com.rox.HelloWorld create()
      throws javax.ejb.CreateException,java.rmi.RemoteException;
}
 
HelloWorld.java:
 
package com.rox;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface HelloWorld extends EJBObject{
  public String sayIt() throws RemoteException;
}
 
ejb-jar.xml:
<!---->
<!---->http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar></ejb-jar>
   <description></description>
   <display-name></display-name>Generated by XDoclet
   <enterprise-beans></enterprise-beans>
      <!---->
      <session></session>
         <description></description>
         <display-name></display-name>Name for Hello
         <ejb-name></ejb-name>HelloWorld
         <home></home>com.rox.HelloHome
         <remote></remote>com.rox.HelloWorld
         <ejb-class></ejb-class>com.rox.Hello
         <session-type></session-type>Stateless
         <transaction-type> </transaction-type> Container
     
     <!---->
      <!---->
     <!---->
      <!---->
     <!---->
  
   <!---->
   <!---->
     <!---->
   <assembly-descriptor></assembly-descriptor>
     <!---->
   <!---->
     <!---->
   <!---->
     <!---->
   <!---->
   <!---->
     <!---->
   <!---->
     <!---->
  
 
jboss.xml:
<!---->
<!---->http://www.jboss.org/j2ee/dtd/jboss_2_4.dtd">
<jboss></jboss>
   <enterprise-beans></enterprise-beans>
     <!---->
      <session></session>
         <ejb-name></ejb-name>HelloWorld
         <jndi-name></jndi-name>ejb/HelloWorld
     
    <!---->
  
   <resource-managers></resource-managers>
  
  <!---->
 
只是配置完了,服务器没有报错,并不能说明问题.下面我们写一个测试的客户端程序EjbTest.java:
package com.rox;
import java.rmi.RemoteException;
import java.util.Hashtable;
import java.util.Properties;
import javax.ejb.CreateException;
import javax.naming.Context;
import javax.naming.NamingException;
public class EjbTest {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        javax.naming.InitialContext initialContext = null;
        Properties environment = new Properties();
        environment.put(Context.PROVIDER_URL, "localhost:1099");
        environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        try {
            initialContext = new javax.naming.InitialContext(environment);
        } catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return;
        }
        HelloHome helloHome = null;
        try {
            Object obj = initialContext.lookup("ejb/HelloWorld");
            helloHome = (HelloHome)javax.rmi.PortableRemoteObject.narrow(obj, HelloHome.class);
        } catch (ClassCastException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            HelloWorld hello = helloHome.create();
            System.out.println(hello.sayIt());
        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (CreateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
注意:由于上面environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
这句话中用到了org.jnp.interfaces.NamingContextFactory类,所以应当确保{JBOSS_HOME}/client下的jbossall-client.jar位于classpath中.
运行EjbTest,输出结果:hello didi.
稍后我将结合该例子研究log4j,据说很简单的
分享到:
评论

相关推荐

    EJB2.0 实例开发

    3. **EJB2.0的Helloworld实例**:在EJB2.0的Helloworld示例中,我们通常会创建一个简单的会话bean,提供一个方法,如“sayHello”。客户端通过JNDI(Java Naming and Directory Interface)查找bean并调用该方法。这...

    EJB2.0一个完整的Helloworld

    在"一个完整的Helloworld"示例中,通常会创建一个简单的Stateless Session Bean,实现一个返回“Hello, World!”的业务方法。客户端通过查找Bean的Home Interface并调用其`create()`方法获取Bean实例,然后调用...

    jboss7ejb配置文件

    例如,你可以声明一个无状态session bean如下: ```xml &lt;enterprise-beans&gt; &lt;session&gt; &lt;ejb-name&gt;MyBean&lt;/ejb-name&gt; &lt;ejb-class&gt;com.example.MyBeanImpl&lt;/ejb-class&gt; &lt;session-type&gt;Stateless&lt;/session-type&gt; ...

    EJB3.0开发Session Bean.rar

    在这个例子中,`@Stateless`注解声明了这是一个无状态Session Bean,`doSomething`方法展示了如何暴露业务逻辑。 **结论** EJB 3.0的Session Bean为开发企业级应用提供了强大且灵活的工具。通过理解其核心概念和...

    EJB3.0 实例教程 -- 切片1

    第一章 前言......4 1.1 本教程适合人群4 1.2 联系作者..4 第二章运行环境配置4 2.1 下载与安装........4 2.2 运行一个EJB3例子.......9 2.3 在独立的TOMCAT 中调用EJB....9 2.4 发布在JBOSS集成环境中的WEB应用调用...

    jboss-4.2.3.GA-jdk6的EJB服务器

    这个版本,jboss-4.2.3.GA-jdk6,是专为Java 6环境设计的,它在JBoss AS(Application Server)4.x系列中是一个稳定且广泛使用的版本。本文将深入探讨JBoss EJB服务器的核心特性、主要功能以及如何部署和管理EJB组件...

    EJB3.0 实例教程 -- 切片2

    第一章 前言......4 1.1 本教程适合人群4 1.2 联系作者..4 第二章运行环境配置4 2.1 下载与安装........4 2.2 运行一个EJB3例子.......9 2.3 在独立的TOMCAT 中调用EJB....9 2.4 发布在JBOSS集成环境中的WEB应用调用...

    JBoss下配置和部署EJB英文版.pdf

    - **无状态会话Bean**:创建一个简单的无状态会话Bean,实现业务逻辑。 - **实体Bean**:创建一个实体Bean来表示数据库中的表。 - **消息驱动Bean**:实现一个消息驱动Bean来处理来自JMS队列的消息。 #### 五、...

    MyEclipse+JBoss开发EJB.doc

    然后,创建一个无状态Session Bean: 1. 新建SessionBean,比如名为UserServiceBean。 2. 选择包名(如zizz.ejb),并在Name字段输入Bean的名称。 3. 选择Bean类型为Stateless,表示这是一个不保存会话状态的Bean。 ...

    jboss ejb 3.zip

    3. **无状态会话Bean(Stateless Session Beans)**:提供简单的函数式服务,不保存客户端状态。 4. **有状态会话Bean(Stateful Session Beans)**:维护客户端状态,允许在多个方法调用之间保持数据。 5. **消息...

    EJB3图文教程之开发Session Bean

    为了验证Session Bean的功能,我们可以通过创建一个简单的Servlet来调用Session Bean的方法。在JBuilder2007中新建一个动态Web项目,然后创建一个Servlet,通过编写相应的代码来调用Session Bean中的`sayHello()`...

    EJB3 示例有状态和无状态会话bean

    这个简单的示例展示了如何创建一个无状态会话Bean并从`Test.jsp`页面中调用它的方法。在实际项目中,`Test.jsp`可能会包含更复杂的逻辑来测试bean的各种功能。 总之,EJB3的有状态和无状态会话Bean提供了灵活的业务...

    书店简单实现(ejb2.0+hiberante3.0)

    本文将深入探讨如何使用EJB 2.0有状态Session Bean与Hibernate 3.0来构建一个书店系统,实现购物车和书籍详细信息管理等功能。 **EJB 2.0有状态Session Bean** EJB 2.0是Java EE(Java Platform, Enterprise ...

    jboss7.1+ejb3.1建立第一个Ejb项目

    本篇文章将指导你如何使用JBoss7.1和EJB3.1在Eclipse3.7环境中创建你的第一个EJB项目。EJB(Enterprise JavaBeans)是一种Java平台上的组件模型,用于构建可扩展的、可靠的、安全的企业级应用。JBoss是Red Hat公司...

    ejb-jboss-web实例的workspace

    【ejb-jboss-web实例的workspace】是一个专用于开发和部署EJB(Enterprise JavaBeans)与Web应用程序的工作环境,基于JBoss应用服务器。这个工作空间集合了开发所需的各种组件、配置文件以及源代码,便于开发者进行...

    EJB3.0实例教程

    4.1 STATELESS SESSION BEANS(无状态BEAN)开发..................................................................................................13 4.1.1 开发只存在Remote接口的无状态Session Bean ..........

    Jboss下开发ejb应用之一会话bean的应用

    1. 无状态会话Bean:适用于一次性的、与特定客户上下文无关的操作,如计算或查询。 2. 有状态会话Bean:维护与特定客户端的会话状态,可以存储客户数据并在多个方法调用之间保持状态。 三、Jboss EJB开发环境 Jboss...

    Jboss下hibernate整合EJB

    EJB主要用于构建可部署在Java EE服务器上的分布式组件,而Hibernate是一个强大的对象关系映射(ORM)框架,解决了Java与数据库之间交互的问题。本文将详细讲解如何在JBoss应用服务器上整合Hibernate和EJB。 **一、...

Global site tag (gtag.js) - Google Analytics