2009/11/22更新

当サイトは海外のビジネス関連ブログを翻訳して紹介しています。

【HelloWorld】…

今回は URL:http://blogs.sun.com/jian…を自動翻訳して紹介しています。

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

一,创建EJB

1.启动NetBeans6.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的方法是其基本的设计思想之一。在EJB2.0中,EJB的客户端要访问到远程的EJB并获取可供本地访问的“EJB实例”是相当麻烦的。

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

二,在Servlet中调用EJB

1.选中“Hello -ウェブ

”项目,在右键菜单中选择“新建”-“Servlet…”

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

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

@EJB 

   個人的な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> " + 「GlassFishだ」というhelloSessionBean.hi()
 + "</h1>");             out.println("</body>");             out.println("</html>");         } finally {              out.close();         }     } 

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

 ハーイ、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ログイン
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>モニター-dサーバーをタイプして下さい
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.  CLI137 Command monitor failed.

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

asadmin>モニター-statelesssessionサーバーをタイプして下さい
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>モニター-statelesssessionをタイプして下さい-フィルターHello:Hello - ejb.jar:HelloSessionBeanserver
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“。

小结

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

comments

Comments are closed.