|
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
并且每运行一次,这行信息就打印一次。
|