`
GeoConst
  • 浏览: 3856 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

使用glassfish开发ejb3的session bean

阅读更多
项目结构如下:


HelloWorldClient类是HelloWorld的ejb3客户端调用类
IHelloWorldRemote是接口(两年没做C++,还是喜欢C++的表示法)
HelloWorldBean是IHelloWorldRemote的实现类

所需的jar包如下:
appserv-deployment-client.jar
appserv-ext.jar
appserv-rt.jar
javaee.jar
这些jar包在glassfish_home/lib目录下均可找到

IHelloWorldRemote代码如下:
package my.ejb3.iface;

public interface IHelloWorldRemote
{
    public String sayHello();
}

HelloWorldBean代码如下:
package my.ejb3.impl;

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

import my.ejb3.iface.IHelloWorldRemote;

@Stateless(mappedName="HelloWorldBean")
@Remote(IHelloWorldRemote.class)
public class HelloWorldBean implements IHelloWorldRemote
{

    public String sayHello()
    {
        return "Hey, Hello World!";
    }

}

@Stateless标签表明这个类是一个无状态会话Bean,mappedName最好设置,理由后面解释
@Remote(IHelloWorldRemote.class)表明IHelloWorldRemote接口是一个远程接口,只能以远程方式来访问

至此,一个简单的EJB3会话Bean已完成,打包helloworld.jar
打开glassfish web控制台,部署helloworld.jar至“EJB模块”

HelloWorldBean的客户端调用代码:
import ... //此处省略

public class HelloWorldClient
{
    public static void main(String[] args)
    {
        Properties props = new Properties();
        props.setProperty("java.naming.factory.initial",  "com.sun.enterprise.naming.SerialInitContextFactory");
        props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
        props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
        props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
        props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
        
        try
        {
            InitialContext ctx = new InitialContext(props);
            IHelloWorldRemote helloWorld = (IHelloWorldRemote)ctx.lookup("HelloWorldBean");
            String result = helloWorld.sayHello();
            System.out.println(result);
        }
        catch (NamingException e)
        {
            e.printStackTrace();
        }
    }
}

当然这里由于glassfish是在本机所以Host设置为localhost,如果非本地,请改为对应IP
glassfish的EJB端口默认为3700,如果安装过程有改动,请改为对应端口

如果顺利的话,控制台将打印出:
Hey, Hello World!

如果客户端和服务器是在同一台机器上,客户端的调用代码可以简化为:
public class HelloWorldClient
{
    public static void main(String[] args)
    {
        try
        {
            InitialContext ctx = new InitialContext();
            IHelloWorldRemote helloWorld = (IHelloWorldRemote)ctx.lookup("HelloWorldBean");
            String result = helloWorld.sayHello();
            System.out.println(result);
        }
        catch (NamingException e)
        {
            e.printStackTrace();
        }
    }
}

这是因为InitialContext默认会读取jndi.properties文件,而appserv-rt.jar包中提供了一个这样的jndi.properties文件。另外,Host默认是localhost,端口默认是3700。

至此,一个HelloWorld的EJB3无状态会话Bean已完成。


注意:
mappedName就是在InitialContext lookup时使用的名称。
如果我们不设置这个mappedName,那么部署后的EJB名称是什么呢?在jboss中将会是HelloWorldBean/remote,而在glassfish中将使用IHelloWorldRemote接口的全名,即my.ejb3.iface.IHelloWorldRemote(注意是接口的全名)。为了去掉这些不必要的麻烦,建议设置mappedName。


glassfish上开发ejb的一些参考资料:
http://groups.google.com/group/glassfish_china/web/ejb
https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#SessionBeanGlobalJNDINameAssignment
  • 大小: 8.1 KB
1
0
分享到:
评论
1 楼 FengQiXiaoRan 2013-12-17  
你好,请问你的这个jar包可以提供一下吗?我按照你的方式做了一下总是报错

相关推荐

    EJB3.0开发Session Bean.rar

    **企业级JavaBeans (EJB) 3.0:核心概念与Session Bean详解** 企业级JavaBeans(Enterprise JavaBeans,...在深入学习EJB 3.0之前,建议阅读"**EJB3.0开发Session Bean.pdf**"这个文档,它将提供更详细的指导和实例。

    EJB3.0无状态SessionBean例子

    总结,EJB3.0无状态SessionBean的例子展示了如何利用注解简化开发流程,以及如何通过本地和远程接口进行组件间的通信。理解并掌握这些概念对于构建可扩展、健壮的企业级Java应用至关重要。通过学习这个示例,开发者...

    基于glassfish的EJBDemo,包含打包脚本,包含客户端

    EJB分为三种类型:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-Driven Beans)。在这个Demo中,我们可能看到会话Bean的示例,它们作为业务逻辑的代理,负责处理客户端请求。 2. ...

    EJB消息驱动bean Demo

    EJB(Enterprise JavaBeans)..."EJB消息驱动bean Demo"为你提供了一个实际操作的例子,通过它你可以学习如何设置和使用MDB,以及如何利用JMS进行通信。理解并熟练掌握这些概念对于开发企业级的Java应用程序至关重要。

    session bean

    3. Glassfish, WildFly, TomEE等:Java EE应用服务器,提供运行Session Bean的环境。 4. JNDI浏览器:用于查看和管理服务器上的JNDI资源。 5. IDE插件:例如Eclipse的EJB插件,简化Bean的创建和配置。 在实际应用中...

    基于java的EJB中有、无状态SessionBean的两个例子.zip

    在EJB中,Session Bean是一种重要的组件类型,主要处理客户端的交互逻辑。本教程将深入探讨基于Java的EJB中的有状态和无状态Session Bean。 1. 有状态Session Bean(Stateful Session Bean) 有状态Session Bean...

    itfuture_sessionbean

    在实际开发中,"sessionbean1.exe"可能是一个用于演示或教学目的的示例程序,它可能包含了Session Bean的实例,帮助开发者更好地理解Session Bean的工作原理和配置过程。通过运行这个程序,开发者可以直观地看到...

    Tomcat6远程调用GlassFishV2的sessionbean

     GlassFish V2 是一个比较完整的ejb3服务器,性能也有了很大的提高,因此最近试用了一下,并通过Tomcat进行了分布式调用。  Session Bean: com.test.session.TestSessionBean, TestSessionRemote  web项目: test...

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

    **EJB3(Enterprise JavaBeans 3)**是Java EE平台的一个重要组成部分,它提供了一种规范来创建可部署在服务器上的组件,主要用于企业级应用的开发。EJB3引入了许多改进,使得开发者能够更方便地使用Java进行企业级...

    ejb3整合Struts1.x实例

    3. **EJB3 Session Bean**:创建EJB3 Session Bean来封装业务逻辑。Session Bean可以调用JPA API来操作数据库,如`EntityManager`和`EntityManagerFactory`。使用`@Stateless`或`@Stateful`注解标记Bean的类型。 4....

    EJB3.0开发入门 Step by Step (图文讲解)

    **EJB3.0开发入门 Step by Step** Enterprise JavaBeans(EJB)是...通过阅读"EJB3.0开发Entity.pdf"、"EJB3.0开发Session Bean.pdf"和"EJB3.0开发Message Driven Bean.pdf",你将能深入学习并掌握EJB3.0的相关知识。

    开发 EJB 应用电子版

    SessionBean是EJB中最常用的一种类型,用于实现业务逻辑。SessionBeans分为无状态和有状态两种。 - **16.5.2 开发无状态 SessionBean** 无状态SessionBean是最常用的SessionBean类型,它不维护与特定客户端相关...

    ejb01例子开发框架是ejb3

    3. **定义EJB组件**:通过New -> Session Bean或Entity Bean,可以快速创建EJB3组件,并通过注解设置其属性和行为。 4. **部署与测试**:Eclipse 3.5允许在内置服务器(如Tomcat或Glassfish)上部署和测试EJB3应用...

    EJB2.0 实例开发

    本实例开发将深入探讨EJB2.0的核心概念,特别是会话bean的实例化与使用。 1. **会话Bean(Session Beans)**:会话bean是EJB的一种类型,主要负责业务逻辑处理。它们可以代表客户端对象在服务器端执行操作,通常...

    DORADO整合EJB3开发

    EJB3的核心包括Entity Beans(实体bean)、Session Beans(会话bean)和Message-driven Beans(消息驱动bean),其中Entity Beans主要用于数据持久化,Session Beans用于处理业务逻辑,而Message-driven Beans则用于...

    EJB3最新学习教程,适合初学者

    3. **部署服务器:**常见的EJB容器有GlassFish、WildFly等。 #### 四、EJB3 核心API - **javax.ejb:**包含所有EJB核心接口和注解。 - **@Stateless、@Stateful、@Singleton:**分别用于声明不同的会话Bean类型。 ...

    EJB3基础教程

    EJB3应用通常部署在Java EE应用服务器上,如Glassfish、WildFly或WebLogic等。开发者需要创建一个包含所有必需bean和元数据的ejb-jar文件,并将其打包进war或ear文件中。 ### 10. 持续集成与测试 EJB3支持单元测试...

    ejb3.0入门图文教程

    通过这些图文教程,你可以逐步掌握EJB 3.0的基本要素,包括实体bean、消息驱动bean和session bean的开发和使用。在实践中,结合IDE(如Eclipse或NetBeans)和应用服务器(如GlassFish或JBoss),你将能更好地理解和...

    ejb3 第6讲--开发具有本地接口的无状态bean

    在本教程中,我们将深入探讨EJB(Enterprise JavaBeans)3中的本地接口和无状态bean的开发。EJB是Java企业级应用的核心组件,用于构建可扩展、安全且可靠的分布式系统。EJB 3是其重要的一个版本,引入了诸多简化开发...

    MyEclipse进行Ejb快速开发配置

    你可以选择创建EJB类型,如Entity Bean、Session Bean或Message Driven Bean。对于快速开发,通常选择无状态Session Bean(Stateless Session Bean),因为它们更易于理解和管理。 四、配置EJB元数据 在新建的EJB类...

Global site tag (gtag.js) - Google Analytics