软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件开发专栏>>java>>正文
J2EE从零开始之EJB开发过程
文章出处:中流砥柱 作者:javafan 发布时间:2005-10-19

2.3 命令脚本文件

  上面在EJB的开发过程中使用命令行的方式,我们可以把有所有这些命令行集中起来做成一个命令脚本文件build.cmd,使用它可以一次性执行这些命令,而不必一个命令一个命令的执行。该文件存放在C:\work\hello目录下,其内容为:

md build
javac -d build Hello.java HelloHome.java HelloBean.java
md build\Meta-inf
copy *.xml build\Meta-inf
md build\images
copy *.gif build\images
cd build
jar cv0f std_myfirstejb_hello.jar META-INF *.class images
cd ..
java weblogic.ejbc -compiler javac build\std_myfirstejb_hello.jar build\myfirstejb_hello.jar

  这样,在程序代码编辑好的情况下,只运行这个命令脚本程序,就可以完成EJB开发。

2.4 EJB部署

  EJB的部署有很多种方法,最简单的一种就是把C:\work\hello\build目录下的myfirstejb_hello.jar文件拷贝到服务器的applications目录下,即C:\bea\wlserver6.0\config\mydomain\applications目录下。如果服务器已经启动,则在拷贝的时候不需要重新启动服务器。服务器会自动检测到新拷贝的EJB。

2.5 EJB运行测试

  编写一个简单的客户端程序HelloClient来测试已部署的ejb。

2.5.1 客户端测试程序代码编写

  在文本编辑器中编辑HelloClient.java文件,并保存在C:\work\hello目录下,其代码如下:

//本类需要引入的类或接口
import java.rmi.RemoteException;
import java.util.Properties;
import javax.ejb.CreateException;
import javax.ejb.RemoveException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;

/**
* 这是EJB的客户端测试程序
*/

public class HelloClient {

private static final String JNDI_NAME = "HelloHome";

private String url;
private HelloHome home;

public HelloClient(String url)
throws NamingException
{

this.url = url;

home = lookupHome();
}

void test()
throws RemoteException,CreateException
{
Hello hello = (Hello) PortableRemoteObject.narrow(home.create(), Hello.class);
System.out.println("I am in client. "+hello.sayHello());
}


/**
* 运行这个实例:
* java HelloClient t3://localhost:7001
*/
public static void main(String[] args) throws Exception {

System.out.println("\n客户端程序测试开始...\n");

String url = "t3://localhost:7001";

// 解析命令行
if (args.length != 1) {
System.out.println("用法: java HelloClient t3://hostname:port");
return;
} else {
url = args[0];
}
HelloClient client = null;
try {
client = new HelloClient(url);
} catch (NamingException ne) {
System.exit(1);
}
try {
client.test();
} catch (Exception e) {
System.exit(1);
}
System.out.println("\n客户端程序测试结束...\n");
}


/**
* 查找 EJB 的主接口
*/
private HelloHome lookupHome()
throws NamingException
{
Context ctx = getInitialContext();
Object home = ctx.lookup(JNDI_NAME);
return (HelloHome) PortableRemoteObject.narrow(home, HelloHome.class);
}

/**
* 使用属性对象获取上下文
*/
private Context getInitialContext() throws NamingException {
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, url);
return new InitialContext(h);
}
}

2.5.2 客户端测试程序代码编译

  请执行以下操作:
   (1)在hello目录下创建client子上当放置客户端测试程序,创建client目录,拷贝文件。执行:
    c:\work\hello>md client
    c:\work\hello>copy HelloClient.java client
   注意:因为HelloClient类需引入Hello和HelloHome接口,因此要从build目录下拷贝Hello.class和HelloHome.class文件到client目录。

   c:\work\hello>copy build\Hello.class client
    c:\work\hello>copy build\HelloHome.class client
   (2)进入client目录
    c:\work\hello>cd client
   (3)编译:
    c:\work\hello\client>java HelloClient.java
   至此客户端测试程序代码编译完毕。
   也可以把这些命令做成一个命令脚本文件build_client.cmd,保存在C:\work\hello目录,其代码如下:

md client
copy HelloClient.java client
copy build\Hello.class client
copy build\HelloHome.class client
cd client
javac HelloClient.java

2.5.3 运行测试

  运行测试程序,执行如下操作:
   (1)启动Weblogic Server 6.0的缺省服务器,Weblogic Server的启动是个简单的过程,可以通过开始菜单和直接运行启动命令脚本两种方式,详细情况请参见第1章。
   (2)运行测试程序。在命窗口中进入C:\work\hello\client目录,执行:
    c:\work\hello\client>java HelloClient t3://127.0.0.1:7001
   (3)观察运行结果:应该如下:
   客户端程序测试开始...
   I am in client. Hello World
   客户端程序测试结束...
而在Weblogic Server的命令行窗口中打印如下信息:
   I am in an EJB of Server .Hello World
并且每运行一次,这行信息就打印一次。

2.6 常见故障及解决方法

  (1)在命令行窗口中运行javac命令出现:
   "java"不是内部或外部命令,也不是可运行的程序或批处理文件。
   原因:javac.exe命令文件所有的路径没有包含在环境变量Path中。
   (2)执行javac -d build Hello.java HelloHome.java HelloBean.java 命令时出现编译错误,其中有一条错误是:
   cannot resolve symbol
   symbol : class EJBHome
   location : package ejb
   impor javax.ebj.EJBHome;
   原因:javac.exe命令文件甩在的路径没有被包含在环境变量Path中。
   解决方法:运行环境变量脚本命令setEnv.cmd。
   (3)运行客户端测试程序时,即运行:
   java HelloClient t3://127.0.0.1:7001时,出现:
    Exception in thread "main" java.lang.NoClassFoundError: HelloClient
   可能的原因是没有把“.”设置到环境变量classpath中。
   (4)执行java weblogic.ejbc... 命令时,抛出org.xml.sax.SAXParseException异常。
   原因:xml文件有语法错误
   解决办法:进行.xml文件有效性检查。
   (5)执行之后仅显示一行文字程序就结束。
   原因:可能没有部署或者没有正确部署EJB。
   解决办法:仔细查看本书3.4节的内容。

2.7 本章小结

  本章首先讨论如何进行一些准备工作,然后详细介绍了一个简单的EJB的开发过程,包括编写代码、编译、打包、部署和测试运行。通过本章的学习,以期对J2EE的开发有一个感性的认识。
   接下来的第3章到第7章将全面深入的讨论EJB应用及其开发的有关问题。
   ----
   对新手的提示:本章所称脚本文件使用的扩展名是.cmd,实际上该文件在DOS平台上扩展名为.bat,也称为批处理文件。
   本章的内容涉及到DOS环境设置,如果你想了解更多的内容可以查询相关的内容。


站内搜索
相关文章
◎J2EE从零开始之企业Beans(EJB)简介
◎J2EE从零开始之EJB(1)
◎J2EE从零开始之EJB(2)
◎J2EE从零开始之实体EJB
热门文章
◎Java学习从入门到精通
◎Windows下JAVA环境变量的设置祥解
◎Struts标记库
◎Struts 框架
◎Java学习之路:不走弯路,就是捷径
◎JAVA基础测试中异常问题汇总
◎凤凰浴火JBuilder2006新功能赏析
◎hibernate应用配置说明-middlegen和hbm2java的配置
◎J2EE从零开始之J2EE平台简介
◎java经典网址
◎MVC设计模式
◎将数据库操作封装到Javabean
◎J2EE从零开始之EJB(1)
◎Java常见问题集锦
◎ejb入门
◎Hibernate如何配置操作多个数据库
◎Java语言编码规范
◎消除内存泄漏
◎J2EE从零开始之EJB(2)
◎java基础知识问答—java入门与加深二 (1)
◎J2EE从零开始之测试平台安装
◎java经典问题:传值还是传引用
◎以小博大Java性能优化技巧集锦
◎java基础知识问答—java入门与加深二 (2)
◎Oracle9i 数据库控制文件
◎J2EE从零开始之实体EJB
◎Struts行为测试框架StrutsTestCase实战
◎用Java实现磁盘文件以大对象二进制文件形式存储到Oracle数据库
◎Tomcat在Windows 2000下的安装配制
◎Java CORBA入门
◎J2EE从零开始之准备工作
◎J2EE从零开始之企业Beans(EJB)简介
◎J2EE Server下的第一个EJB程序
◎JRockit JVM 中的内存泄漏检测
◎六种异常处理的陋习
◎J2EE架构学习者的6个最佳实践
◎应用Java技术实现数据库应用系统
◎UML技术在基于Web的应用系统中的应用
◎Java平台上的CRM系统
◎POJO应用架构:Spring与EJB 3.0的对比
◎Java-IDE环境
◎有可能挑战Java开发优势的四种技术
◎J2ME程序开发新手入门九大要点
◎Java嵌入式开发之一
◎CORBA 入门
◎KJava在移动设备中的应用
◎基于JDK5.0的一些Thread总结
◎理解Java应用服务器的七种武器
◎构建高性能J2EE应用的10个技巧
◎MVC模式在j2me项目中的应用(一)

Google提供的广告