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
分享到:
相关推荐
**企业级JavaBeans(EJB)2.1详解** 企业级JavaBeans(EJB)是Java平台上用于构建可部署在企业级服务器上的组件模型。EJB 2.1是其第二个主要版本,发布于2003年,是Java EE(Java Platform, Enterprise Edition)的...
EJB2.1/EJ2EE 规范教程,个人觉得很不错的
本文将深入解析EJB 2.1规格标准的核心概念与技术细节,旨在为读者提供全面的理解框架,以及如何利用此规格开发高效、稳定的分布式应用。 ### EJB 2.1规格概述 EJB 2.1规格由Sun Microsystems于2003年11月发布,由...
【Eclipse xDoclet 开发EJB2.1】是一个关于使用Eclipse集成开发环境(IDE)配合xDoclet工具来开发Enterprise JavaBeans (EJB) 2.1版本的教程。EJB是一种Java技术,用于构建可部署在Java应用服务器上的组件,主要用于...
在EJB 2.1中实现Web Service是一个关键的技术进步,这一版本的更新主要针对了对Web Service的支持,这是由于企业级JavaBean(EJB)需要适应Web Service的需求,同时也应对了微软.NET框架的挑战。EJB 2.1通过引入一...
以一个简单的例子来看,假设我们有一个 EJB 2.1 的会话bean `BookCatalogBean`,它实现了 `SessionBean` 接口并包含ejbCreate方法。在 EJB 3.0 中,我们可以将其转换为一个无接口的会话bean,如下所示: ```java //...
EJB2.1的这些新特性不仅增强了EJB作为企业级应用开发平台的地位,还促进了与其他Web服务的互操作性。通过对Web服务的支持加强,以及对MDB编程模型和EJB-QL的改进,EJB2.1为开发者提供了更多强大的工具,帮助他们构建...
【标题】"Idea搭建EJB架构Demo项目源代码"涉及的是使用IntelliJ IDEA(简称Idea)这个强大的Java集成开发环境来构建一个基于EJB(Enterprise JavaBeans)架构的示例项目。EJB是Java EE(企业版)平台的核心部分,...
通过这本书,读者可以深入了解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 基于...
**基于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的...
WebLogic v9.2 EJB和JNDI Demo
在"ejb sessionbean demo"中,我们主要探讨的是如何使用EJB的Session Bean进行开发和演示。Session Bean通常用于实现业务逻辑,它们可以是无状态的,意味着每个请求都会创建一个新的Bean实例,不保留任何先前会话的...
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的真实世界模型(源代码)....
基于java的开发源码-EJB 模拟银行ATM流程及操作源代码.zipjava的开发源码-EJB 模拟银行ATM流程及操作源代码.zip 基于java的开发源码-EJB 模拟银行ATM流程及操作源代码.zip 基于java的开发源码-EJB 模拟银行ATM流程及...
在开发EJB时,我们可能需要与数据库交互,MySql的简单性、高效性和广泛支持使其成为EJB应用的理想选择。 **开发EJB**:EJB的开发过程主要包括以下步骤: 1. **创建EJB项目**:在Eclipse中,使用JBoss Tools插件...
标题中的“ejb3.x 简单小 demo”指的是一个关于企业级JavaBeans(EJB)3.x版本的示例项目。EJB是Java平台上的一个组件模型,主要用于构建可部署在Java应用服务器上的分布式、面向服务的企业级应用程序。EJB 3.x是一...