开发客户端
本案例使用了两种类型的客户端,一种客户端基于浏览器,它通过HTTP访问JSP组件,JSP组件通过RMI调用EJB组件,EJB组件再通过资源适配器调用EIS;另一种客户端是普通的Java程序,这个Java程序通过RMI调用EJB,EJB组件再通过资源适配器调用EIS。
在实现中,JSP代码和普通java程序的代码基本一样,不同的是它们获得初始上下文环境(InitialContext)的方法不同。
我们看一下简单的JSP客户端,如例程3所示。
例程3 JSP客户端
1 例程3 JSP客户端
2 <%@ page contentType="text/html;charset=gb2312" import="com.hellking.jca.ejb.*,javax.naming.*"%>
3 <html><body><form><table><tr><td>请输入名字:
4 </td><td><input name=name type=text></td></tr>
5 <tr><td><input value=submit type=submit></td></tr></table></form>
6 <%
7 String name=(String)request.getParameter("name");
8 try
9 {
10 InitialContext context=new InitialContext();
11 DemoHome home=(DemoHome)javax.rmi.PortableRemoteObject.narrow(
12 context.lookup("ejb/demo"),DemoHome.class);
13 Demo demo=home.create();
14 if(demo!=null)out.println("demo is ok");
15 out.println("调用ejb-->jca-->eis");
16 out.println("发送了:hellking,返回以下的值:<hr><font color=red>");
17 out.println(demo.sayHello(name));
18 out.println("</font>");
19 out.flush();
20 }
21 catch(Exception e)
22 {
23 }
24 %></body></html>
25
2 <%@ page contentType="text/html;charset=gb2312" import="com.hellking.jca.ejb.*,javax.naming.*"%>
3 <html><body><form><table><tr><td>请输入名字:
4 </td><td><input name=name type=text></td></tr>
5 <tr><td><input value=submit type=submit></td></tr></table></form>
6 <%
7 String name=(String)request.getParameter("name");
8 try
9 {
10 InitialContext context=new InitialContext();
11 DemoHome home=(DemoHome)javax.rmi.PortableRemoteObject.narrow(
12 context.lookup("ejb/demo"),DemoHome.class);
13 Demo demo=home.create();
14 if(demo!=null)out.println("demo is ok");
15 out.println("调用ejb-->jca-->eis");
16 out.println("发送了:hellking,返回以下的值:<hr><font color=red>");
17 out.println(demo.sayHello(name));
18 out.println("</font>");
19 out.flush();
20 }
21 catch(Exception e)
22 {
23 }
24 %></body></html>
25
普通的java客户端和JSP基本一样,只是需要指定相关的属性才能获得InitialContext实例。可以通过以下的方法获得InitialContext实例。
例程4 在普通的Java客户端获得InitialContext实例
1 例程4 在普通的Java客户端获得InitialContext实例
2 //创建初始的上下文环境
3 public Client()
4 {
5 context=this.getInitialContext();
6 }
7 public InitialContext getInitialContext()
8 {
9 try
10 {
11 Properties p=new Properties();
12 p.load(new FileInputStream("config.properties"));
13 return new InitialContext(p);
14 }
15 catch(Exception e)
16 {
17 System.out.println("got ee");
18 e.printStackTrace();
19 return null;
20 }
21 }
22
2 //创建初始的上下文环境
3 public Client()
4 {
5 context=this.getInitialContext();
6 }
7 public InitialContext getInitialContext()
8 {
9 try
10 {
11 Properties p=new Properties();
12 p.load(new FileInputStream("config.properties"));
13 return new InitialContext(p);
14 }
15 catch(Exception e)
16 {
17 System.out.println("got ee");
18 e.printStackTrace();
19 return null;
20 }
21 }
22
Java客户端的详细代码见src/client/Client.java文件。
下面介绍装配和部署的相关问题。