`
zhufeng1981
  • 浏览: 73599 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于WASCE开发EJB2.1简单Demo

阅读更多

WASCE 全称 WebSphere Application Server Community Edition 是IBM公司开发的WebShpere社区版,供用户免费使用,最近移植利用EJB2.1开发的项目用到 WASCE ,因为这方面的文章很少,很多人不了解如何配置和运用,遂把自己的开发过程整理出个简单Demo,供大家开发时借鉴。

开发环境:Eclipse+WASCE+JDK1.6.0_18

系统环境:XP

下面我一步步完成一个EJB2.1(Stateless SessionBean)的HelloWorld。

首先,我们创建一个企业级工程HelloEAR,New Project -> Java EE -> Enterprise Application Project,项目名:HelloEAR,运行时,IBM WASCE v2.1,EAR version 选择5.0 ,其他默认即可。一路Next完成创建,效果如图1所示,其中application.xml出现错误,是没有配置好项目模块所致,不用理会。  

 

(图1)

然后,我们创建一个EJB工程HelloEJB,New Project -> EJB -> EJB Project ,项目名: HelloEJB, 运行时,IBM WASCE v2.1,EJB module version 选择2.1 ,Configuration选择EJB Project with XDoclet(具体安装见下面附录),在Add project to an EAR中选择HelloEAR即可,其他默认, 一路Next完成创建,效果如图2所示,这时,HelloEJB项目出现错误,因为缺少配置所致,不用理会,还自动生成一个HelloEJBClient工程,作为EJB发布客户端。  

(图2)

接着,我们创建一个WEB工程HelloWAR, New Project -> Web -> Dynamic Web Project, 项目名: HelloWAR, 运行时,IBM WASCE v2.1,Dynamic web module version 选择2.1 ,Configuration选择EJB Project with XDoclet(具体安装见下面附录),在Add project to an EAR中选择HelloEAR即可,其他默认, 一路Next完成创建,效果如图3所示。

(图3)

自此,基本工程创建完备,下面我们来完成各中的简单编码实现功能。首先,我们在HelloEJB中创建一个Hello Bean, New > Other -> EJB -> Xdoclet Enterprise JavaBean, Next ,选择Session Bean,Next,Class Name 为HelloBean Next,修改EJB Name为Hello,其他随之改变,不用再改,Finish。Xdoclet会帮助你生成客户端生代码,如图4所示。


(图4)


接下来我们在HelloBean里添加sayHello方法如下:

public String sayHello(String name){
		return "Hello," + name;
	}

在远程接口Hello里添加sayHello方法如下,每个方法接口必须抛java.rmi.RemoteException异常。

public String sayHello(String name) throws java.rmi.RemoteException;

在本地接口HelloLocal里添加sayHello方法如下:

public String sayHello(String name);

 其中HelloHome代码如下:

public interface HelloHome
   extends javax.ejb.EJBHome
{
   public static final String COMP_NAME="java:comp/env/ejb/Hello";
   public static final String JNDI_NAME="Hello";

   public com.ibm.demo.Hello create()
      throws javax.ejb.CreateException,java.rmi.RemoteException;

}

 

定义了通过容器环境访问EJB的JNDI字符串COMP_NAME。

同样,HelloLocalHome代码如下:

public interface HelloLocalHome
   extends javax.ejb.EJBLocalHome
{
   public static final String COMP_NAME="java:comp/env/ejb/HelloLocal";
   public static final String JNDI_NAME="HelloLocal";

   public com.ibm.demo.HelloLocal create()
      throws javax.ejb.CreateException;

}

也定义了通过容器环境访问EJB的JNDI字符串COMP_NAME。

接下来,在HelloUtil里修改一下访问变量。把根据JNDI_NAME的改成COMP_NAME,否则在后面web容器访问不了。到此,EJB组件开发完毕,下面,在Web容器添加两个JSP页面进行访问,hello.jsp和show.jsp页面代码分别如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>EJB2.1 提交页面</title>
</head>
<body>
<form action="show.jsp">
	<input type="text" name="name">
	<input type="submit" value="submit">
</form>
</body>
</html>
 

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="com.ibm.demo.Hello" %>
<%@ page import="com.ibm.demo.HelloLocal" %>
<%@ page import="com.ibm.demo.HelloUtil" %>
<%@ page import="javax.naming.NamingException" %>
<%@ page import="javax.ejb.CreateException" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>EJB2.1 显示页面</title>
</head>
<body>
<%		
		String name = request.getParameter("name");
	try {
		long begin1 = System.currentTimeMillis();
		Hello hello = HelloUtil.getHome().create();
		%>
		<%=hello.sayHello(name)%>
		<% 
		long end1 = System.currentTimeMillis();
		%>
		<%="远程调用花费时间:"+(end1 - begin1)+ "ms"%>
		<% 
		long begin2 = System.currentTimeMillis();
		HelloLocal helloLocal = HelloUtil.getLocalHome().create();
		%>
		<%=helloLocal.sayHello(name)%>
		<% 
		System.out.println(helloLocal.sayHello(name));
		long end2 = System.currentTimeMillis();
		%>
		<%="本地调用花费时间:"+(end2 - begin2)+ "ms"%>
		<% 
		
	} catch (CreateException e) {
		e.printStackTrace();
	} catch (NamingException e) {
		e.printStackTrace();
	}
%>
</body>
</html>

 为了能在容器中调要EJB组件,最后还得配置web.xml和geronimo-web.xml文件,在web.xml中添加代码如下:

 <ejb-local-ref>
		<ejb-ref-name>ejb/HelloLocal</ejb-ref-name>
		<ejb-ref-type>Session</ejb-ref-type>
		<local>com.ibm.demo.HelloLocal</local>
		<ejb-link>Hello</ejb-link>
	</ejb-local-ref>
	<ejb-ref>
		<ejb-ref-name>ejb/Hello</ejb-ref-name>
		<ejb-ref-type>Session</ejb-ref-type>
		<remote>com.ibm.demo.Hello</remote>
		<ejb-link>Hello</ejb-link>
	</ejb-ref>
 

  geronimo-web.xml 中添加代码如下:

    <name:ejb-ref>
        <name:ref-name>ejb/Hello</name:ref-name>
        <name:ejb-link>Hello</name:ejb-link>
    </name:ejb-ref>
    <name:ejb-local-ref>
        <name:ref-name>ejb/HelloLocal</name:ref-name>
        <name:ejb-link>HelloLocal</name:ejb-link>
    </name:ejb-local-ref>

 到现在为止,我们可以发布项目,观看效果了 。启动服务器,然后在服务器图标上右键,Add and Remove添加HelloEAR。最后,通过地址http://localhost:8080/HelloWAR/hello.jsp访问即可。在输入框中输入zf,可以得到Hello,zf字样,如图5所示

(图5)

 


 ,同时,通过观察,可以看到,本地访问方式比远程访问方式较快。

 




 

 

 

 

  • 大小: 4.7 KB
  • 大小: 2.3 KB
  • 大小: 2.4 KB
  • 大小: 11.8 KB
  • 大小: 21 KB
0
0
分享到:
评论
2 楼 zhufeng1981 2010-06-28  
Everything has the relation.
1 楼 hareamao 2010-06-28  
EJB 2.1 is dead.

相关推荐

    EJB 2.1入门操作实践视频

    **企业级JavaBeans(EJB)2.1详解** 企业级JavaBeans(EJB)是Java平台上用于构建可部署在企业级服务器上的组件模型。EJB 2.1是其第二个主要版本,发布于2003年,是Java EE(Java Platform, Enterprise Edition)的...

    ejb2.1 / J2EE1.4

    EJB2.1/EJ2EE 规范教程,个人觉得很不错的

    ejb 2.1 specification

    本文将深入解析EJB 2.1规格标准的核心概念与技术细节,旨在为读者提供全面的理解框架,以及如何利用此规格开发高效、稳定的分布式应用。 ### EJB 2.1规格概述 EJB 2.1规格由Sun Microsystems于2003年11月发布,由...

    Eclipse xDoclet 开发EJB2.1

    【Eclipse xDoclet 开发EJB2.1】是一个关于使用Eclipse集成开发环境(IDE)配合xDoclet工具来开发Enterprise JavaBeans (EJB) 2.1版本的教程。EJB是一种Java技术,用于构建可部署在Java应用服务器上的组件,主要用于...

    EJB 2.1中实现Web Service.doc

    在EJB 2.1中实现Web Service是一个关键的技术进步,这一版本的更新主要针对了对Web Service的支持,这是由于企业级JavaBean(EJB)需要适应Web Service的需求,同时也应对了微软.NET框架的挑战。EJB 2.1通过引入一...

    FromEJB2toEJB3

    以一个简单的例子来看,假设我们有一个 EJB 2.1 的会话bean `BookCatalogBean`,它实现了 `SessionBean` 接口并包含ejbCreate方法。在 EJB 3.0 中,我们可以将其转换为一个无接口的会话bean,如下所示: ```java //...

    解析J2EE1.4新特性(4)-EJB2.1的新特性

    EJB2.1的这些新特性不仅增强了EJB作为企业级应用开发平台的地位,还促进了与其他Web服务的互操作性。通过对Web服务的支持加强,以及对MDB编程模型和EJB-QL的改进,EJB2.1为开发者提供了更多强大的工具,帮助他们构建...

    Idea搭建EJB架构Demo项目源代码

    【标题】"Idea搭建EJB架构Demo项目源代码"涉及的是使用IntelliJ IDEA(简称Idea)这个强大的Java集成开发环境来构建一个基于EJB(Enterprise JavaBeans)架构的示例项目。EJB是Java EE(企业版)平台的核心部分,...

    EJB2的3本好书第3本 EJB Cookbook

    通过这本书,读者可以深入了解EJB2.1的各个方面,并通过实践提升其在J2EE开发中的技能。EJB虽然现在已经逐渐被EJB3.0及后续版本所替代,但了解EJB2.1的基础仍对理解现代Java EE架构和技术发展具有重要意义。

    基于java的开发源码-EJB编程实例代码.zip

    基于java的开发源码-EJB编程实例代码.zip 基于java的开发源码-EJB编程实例代码.zip 基于java的开发源码-EJB编程实例代码.zip 基于java的开发源码-EJB编程实例代码.zip 基于java的开发源码-EJB编程实例代码.zip 基于...

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

    **基于Glassfish的EJB...总结,基于Glassfish的EJBDemo是一个完整的EJB开发实践案例,涵盖了从设计、实现到部署的全过程。通过学习和实践这个Demo,开发者可以提升在Java EE领域的专业技能,更好地理解和应用EJB技术。

    基于java的开发源码-EJB中JNDI的使用源码例子.zip

    基于java的开发源码-EJB中JNDI的使用源码例子.zip 基于java的开发源码-EJB中JNDI的使用源码例子.zip 基于java的开发源码-EJB中JNDI的使用源码例子.zip 基于java的开发源码-EJB中JNDI的使用源码例子.zip 基于java的...

    WebLogic v9.2 EJB和JNDI Demo

    WebLogic v9.2 EJB和JNDI Demo

    ejb sessionbean demo

    在"ejb sessionbean demo"中,我们主要探讨的是如何使用EJB的Session Bean进行开发和演示。Session Bean通常用于实现业务逻辑,它们可以是无状态的,意味着每个请求都会创建一个新的Bean实例,不保留任何先前会话的...

    ejb2.rar_bmp ejb2_ejb2_ejb2 cmp b

    7. **开发与部署**:在EJB 2.1中,开发EJB需要编写ejb-jar.xml文件来配置Bean,同时还需要应用服务器(如JBoss、WebLogic等)支持EJB 2.1规范,以便正确部署和运行。 8. **性能和可扩展性**:CMP通常提供更好的性能...

    基于java的开发源码-EJB的真实世界模型(源代码).zip

    基于java的开发源码-EJB的真实世界模型(源代码).zip 基于java的开发源码-EJB的真实世界模型(源代码).zip 基于java的开发源码-EJB的真实世界模型(源代码).zip 基于java的开发源码-EJB的真实世界模型(源代码)....

    基于java的开发源码-EJB 模拟银行ATM流程及操作源代码.zip

    基于java的开发源码-EJB 模拟银行ATM流程及操作源代码.zipjava的开发源码-EJB 模拟银行ATM流程及操作源代码.zip 基于java的开发源码-EJB 模拟银行ATM流程及操作源代码.zip 基于java的开发源码-EJB 模拟银行ATM流程及...

    使用Eclipse+Jboss+MySql开发EJB

    在开发EJB时,我们可能需要与数据库交互,MySql的简单性、高效性和广泛支持使其成为EJB应用的理想选择。 **开发EJB**:EJB的开发过程主要包括以下步骤: 1. **创建EJB项目**:在Eclipse中,使用JBoss Tools插件...

    ejb3.x 简单小 demo

    标题中的“ejb3.x 简单小 demo”指的是一个关于企业级JavaBeans(EJB)3.x版本的示例项目。EJB是Java平台上的一个组件模型,主要用于构建可部署在Java应用服务器上的分布式、面向服务的企业级应用程序。EJB 3.x是一...

Global site tag (gtag.js) - Google Analytics