`
家常咖啡
  • 浏览: 6693 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

【HelloWorld】之EJB3.0 + GlassFishV2.1Administration

阅读更多

本文将介绍如何借助NetBeans 6.5.1 开发和调用的EJB(3.0),并将介绍如何通过GlassFish V2的管理控制台和命令行工具asadmin监控此EJB。

一,创建EJB

1. 启动NetBeans 6.5.1,新建项目,在类别中选择“Java EE”,并选择“企业应用程序”。

2. 输入项目名称“Hello”,并选择服务器为“GlassFish V2”,点击“完成”。

这是将自动生成企业应用程序项目“Hello”以及它的两个子项目EJB的“Hello-ejb”和Web的“Hello-web”。

3.选中“Hello-ejb”子项目,在右键菜单中选择“新建会话Bean”,输入EJB的名称“HelloSessionBean”,包名“demo”,创建接口只选“Remote”,点击“完成”。

4.选中生成的HelloSessionBean,在右键菜单中选择“添加”--“Business方法”。在对话框中名称输入”hi“,选择“返回类型”为String, 并添加参数为"java.lang.String"。

在HelloSessionBean中方法中添加具体实现,最后HelloSessionBean的代码如下:

   package demo;
   import javax.ejb.Stateless;
   @Stateless
   public class HelloSessionBean implements HelloSessionRemote {
       public String hi(String parameter) {
           return "hi, "+parameter;
       }
   }

EJB的远程接口HelloSessionRemote已经自动生成了HelloSessionBean的Business方法接口,其代码如下:

    package demo;
    import javax.ejb.Remote;
    @Remote
    public interface HelloSessionRemote {
        String hi(String parameter);
    }

至此我们的EJB已经开发完成,中间没有修改配置任何xml文件,整个过程简单得如同开发一个Java Bean。

EJB作为一种分布式的技术,让客户端像调用本地JavaBean的方法一样调用EJB的方法是其基本的设计思想之一。在EJB 2.0中,EJB的客户端要访问到远程的EJB并获取可供本地访问的“EJB实例”是相当麻烦的。

下面演示在EJB 3.0中,如何通过依赖注入大大简化客户端的访问和调用的过程。具体将以Servlet做为EJB的客户端来介绍。

二,在Servlet中调用EJB

1. 选中“Hello-web ”项目,在右键菜单中选择“新建”-“Servlet...”

2. 弹出的“新建Servlet”对话框中,输入类名“HelloServlet”,包名“demo”。点击“完成”。

3. 在生成的HelloServlet.java的processRequest方法中,选择“插入代码...”-“调用企业Bean...”。在弹出的对话框中,选择“Hello-ejb”下的“HelloSessionBean”。点击“确定”。

@EJB 

   private HelloSessionRemote helloSessionBean;

这表示已经将HelloSessionBean的实例注入到HelloServlet中,变量名为helloSessionBean,下面直接引用此实例就可以了。

在HelloServlet的processRequest方法中,写下以下代码来调用EJB:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet HelloServlet</title>"); 
            out.println("</head>");
            out.println("<body>");
            out.println("<h1> " + helloSessionBean.hi("GlassFish") + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }

4.在Hello项目中配置属性,将相对的URL设为”/HelloServlet“ (注意不要漏了"/")。运行或部署Hello项目,浏览器会在以下地址(http://localhost:8080 /Hello-war/HelloServlet)显示Servlet调用EJB的结果:

 hi, GlassFish

这表明所开发的EJB已经正确部署并运行在GlassFish之上。之后就可以利用GlassFish的管理工具对其进行多种监控和管理了。能够对EJB进行丰富的监控管理,这也是使用EJB的优势之一。

三,通过GlassFish管理控制台监控EJB的运行

1. 访问GlassFish的管理控制台: http://localhost:4848, 输入缺省用户名和口令“admin/adminadmin” 完成登录。

2. 点击树形菜单中“application server”节点,点击“monitoring” -> “Applications” -> “Configure Monitoring”。将“EJB Container”的监控级别由默认的“OFF”改成“HIGH”。如图2所示:

由上可见,GlassFish可以对不同对象设置不同级别的监控粒度。

3. Back退回到前一个界面,进行监控应用程序。在“应用程序”下拉菜单中选择“Hello”,选择Component中选择“bean methods”下所列出的hi方法。得到的关于此EJB中hi方法调用的统计。每次刷新一次或运行一次 HelloServlet(http://localhost:8080/Hello-war/HelloServlet),都可以看到统计数字的变化。

如图3所示:

 

四,通过命令行工具asadmin监控EJB。

1.进入asadmin的交互模式。

D:\glassfish2.1\bin>asadmin login
Please enter the admin user name>admin
Please enter the admin password>
Trying to authenticate for administration of server at host [localhost] and port [4848] ...

D:\glassfish2.1\bin>asadmin
Use "exit" to exit and "help" for online help.
asadmin>

asadmin的login命令可以避免重复输入登录信息,而交互式的asadmin模式是高效地完成asadmin的命令输入。

asadmin中的monitor命令可以用来实时监控容器内的各类对象,包括部署的ejb。要知道monitor所能监控的类型,只要敲入以下命令,其中d是故意输错的类型,asadmin会自动提示所支持所有的监控类型。

asadmin> monitor --type d server
d is an invalid type.
Valid Types are: httplistener, keepalive, filecache, connectionqueue, jdbcpool, jvm, threadpool, ser
vlet, connection, connectorpool, endpoint, entitybean, messagedriven, statefulsession, statelesssess
ion, httpservice, webmodule.

要想具体指明所要监控的ejb实例,却要不确定其所引用的名字,可以输入以下命令,asadmin会自动提示所有statelesssession实例的引用名称。

asadmin> monitor --type statelesssession server
There are more than one monitoring elements.
Please consider using the filter option.
The following are available elements to monitor in ejbmodule <ejbmodule>:<bean>
    Hi-ejb:HiBean
The following are available elements to monitor in appmodules <appmodule>:<ejbmodule>:<bean>
    Hello:Hello-ejb.jar:HelloSessionBean

CLI137 Command monitor failed.

将上面得到的EJB的名称作为filter的参数,就可以具体监控所开发的Hello EJB的运行状态了。


asadmin> monitor --type statelesssession --filter Hello:Hello-ejb.jar:HelloSessionBean server
Stateless Session Bean Monitoring: Hello:Hello-ejb.jar:HelloSessionBean
    MethodReadyCount
   low      high     current  create   remove
    0        1        1            1        0
    0        1        1            1        0

要退出monitor的状态,输入”q“。

小结 :EJB 3借助Annotation完成了EJB各项特性的描述和注入和引用,开发EJB 3.0已经变得异常简单,尤其是配合IDE如NetBeans之后。GlassFish的基于浏览器的管理控制台和基于命令行的asadmin,提供了丰 富的手段来对EJB的运行情况可以进行各类管理监控。

分享到:
评论

相关推荐

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

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

    Jboss 7 + EJB 3.0 + Eclipse环境配置

    Jboss 7 + EJB 3.0 + Eclipse环境配置

    EJB3.0+weblogic操作文档

    【EJB3.0+weblogic操作文档】详解 EJB (Enterprise JavaBeans) 是Java EE平台中的核心组件,用于构建分布式、事务处理和安全的企业级应用。EJB3.0是EJB规范的一个重大改进,它引入了注解驱动的编程模型,大大简化了...

    ejb3.0+Weblogic+Jboss安装配置及入门例子

    Enterprise JavaBeans (EJB) 是Java EE平台的核心组件之一,主要用于构建企业级的分布式应用程序。EJB3.0是EJB规范的一个重要版本,它在2006年发布,引入了许多重大的改进,简化了开发流程,降低了对XML配置的依赖,...

    springMVC4.1+EJB3.0+easyUI整合ear项目

    《SpringMVC 4.1 + EJB 3.0 + EasyUI 整合EAR项目:构建高效分布式系统的关键技术》 在当前的企业级应用开发中,为了实现高性能、高可扩展性和高可维护性的系统,开发者往往需要采用一系列先进的技术和框架进行整合...

    ejb3.0 +jboss4.2 实例开发

    然后,我们创建两个 Java 类:`HelloWorld.java` 和 `HelloWorldBean.java`。前者代表客户端接口,后者是 EJB 会话bean 的实现。这两个类分别放在不同的包下,`com.foshanshop.ejb3` 和 `com.foshanshop.ejb3.impl`...

    EJB3.0+Struts2.0+Jboss+ Enterprise Application Project 示例

    EJB3.0+Struts2.0+Jboss Enterprise Application Project 示例 用jboss数据源可连接mysql ms-sql oracle 本地远程接口用单态模式实现

    EJB3.0+MVC实现购物车

    【EJB3.0+MVC实现购物车】 在软件开发中,EJB(Enterprise JavaBeans)和MVC(Model-View-Controller)是两种重要的设计模式,它们在构建复杂的企业级应用程序中扮演着关键角色。EJB 3.0是Java EE(Java Platform, ...

    EJB3.0+JPA+javaSe环境

    **EJB 3.0(Enterprise JavaBeans 3.0)**是Java EE(现在称为Jakarta EE)平台中的一个核心组件,它极大地简化了企业级应用的开发和部署过程。EJB 3.0引入了许多改进,使得开发人员可以更高效地利用面向服务架构...

    JBoss4.2.3GA + EJB3.0 + JAAS

    【JBoss4.2.3GA + EJB3.0 + JAAS】是企业级Java应用服务器、EJB(Enterprise JavaBeans)版本和安全性框架JAAS(Java Authentication and Authorization Service)的一个经典组合。这个组合在Java开发领域具有重要的...

    EJB3.0+JSF例子

    1. **注解驱动**:EJB 3.0最大的变革之一就是引入了注解,使得开发者无需编写大量的XML配置文件,可以直接在实体类和接口上添加注解来声明Bean的属性和行为。 2. **无状态会话Bean(Stateless Session Beans)**:...

    EJB3.0 + Struts1.3 + Spring2.0 + JPA

    软件架构: EJB3.0 + Struts1.3 + Spring2.0 + JPA 应用服务器: Jboss5.1 数据库用: Oracle9i 部署前将 demo-service.xml和oracle-ds.xml copy到jboss deploy目录下,配置到你的环境下即可 -- Create sequence ...

    EJB 3.0+Beehive开发客户反馈系统源代码

    EJB(Enterprise JavaBeans)是Java EE(Enterprise Java)平台的核心组件之一,它为构建可复用的、安全的、分布式的企业级应用程序提供了标准框架。EJB 3.0是EJB规范的一个重要版本,它引入了许多改进,旨在简化...

    演示EJB3.0 + JPA + MySQL5.0 + C3P0连接池技术实战编程(Top-Down的XP开发方式)

    如果运行一切正常,那么你会看到使用EJB 3.0组件与JPA技术层技术完成的Hello world演示应用。 注意:配置JBoss服务器和调试的动作参见readme.txt文档,有详细说明怎样匹配连接池,以及可能遇到的问题及解决办法。该...

    jboss7.1.1+ejb3.0+MySQL数据源配置

    《JBoss 7.1.1 + EJB 3.0 + MySQL 数据源配置详解》 在企业级Java应用开发中,JBoss Application Server(简称JBoss AS)是广泛使用的开源应用服务器,版本7.1.1是其稳定且功能强大的一个版本。EJB(Enterprise ...

    EJB3.0+JBOSS4.2.2GA集群

    **EJB 3.0 和 JBoss 4.2.2 GA 集群详解** EJB(Enterprise JavaBeans)3.0 是Java EE(Java Platform, Enterprise Edition)中的一个核心组件,它提供了用于构建可扩展、分布式和事务处理的企业级应用程序的框架。...

    JSP+Servlet+EJB3.0+Oracle10g火车售票系统

    本系统主要实现火车查询售票功能,主要的功能如下: 客户端管理功能: (1)动车基本信息管理模块;...4.本设计采用JSP+Servlet+EJB3.0+Oracle10g工具进行开发,最后通过JDBC进行与数据库的相关的链接。

    EJB3.0+Struts2工程

    **EJB 3.0 知识点** EJB(Enterprise JavaBeans)是Java平台上的一个组件模型,用于构建企业级应用。EJB 3.0 是EJB规范的一个重大改进,它简化了API,降低了开发复杂性。EJB 3.0 的核心特性包括: 1. **注解驱动**...

    完整的ejb3.0+JSF1.2+AJAX测试

    本测试项目主要采用了ejb3.0框架+JSF1.2框架+a4j框架结构,采用weblogic服务器,其中包含了EJB远程接口调用和本地接口的双重调用,并采用了AJAX的无刷新技术,而且包含数据库连接操作(Oracle数据库),希望本测试...

Global site tag (gtag.js) - Google Analytics