快速业务通道

JavaBeans:创建客户端应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

JavaBeans:创建客户端应用

时间:2011-07-28

Cabin实体和 TravelAgent EJB已经部署完毕,我们打算从远程客户端对其进行访问。本节中,我们会创建一个远程客户端,连向EJB服务器,为TravelAgent EJB定位EJB远程接口,并与TravelAgent EJB进行交互,以创建Cabin实体并将其从数据库中取出。下列代码展示了一个Java应用程序,该程序新建了一个Cabin实体,设置其name、 deckLevel、shipId和bedCount成员属性,然后再用主键对其进行定位。

  package com.titan.clients;    import com.titan.travelagent.TravelAgentRemote;    import com.titan.domain.Cabin;    import javax.naming.InitialContext;    import javax.naming.Context;    import javax.naming.NamingException;    import java.util.Properties;    import javax.rmi.PortableRemoteObject;    public class Client {      public static void main(String [] args) {        try {          Context jndiContext = getInitialContext( );          Object ref = jndiContext.lookup("TravelAgentBean/remote");          TravelAgentRemote dao = (TravelAgentRemote)          PortableRemoteObject.narrow(ref,TravelAgentRemote.class);          Cabin cabin_1 = new Cabin( );          cabin_1.setId(1);          cabin_1.setName("Master Suite");          cabin_1.setDeckLevel(1);          cabin_1.setShipId(1);          cabin_1.setBedCount(3);          dao.createCabin(cabin_1);          Cabin cabin_2 = dao.findCabin(1);          System.out.println(cabin_2.getName( ));          System.out.println(cabin_2.getDeckLevel( ));          System.out.println(cabin_2.getShipId( ));          System.out.println(cabin_2.getBedCount( ));        } catch (javax.naming.NamingException ne){ne.printStackTrace( );}      }      public static Context getInitialContext( )      throws javax.naming.NamingException {        Properties p = new Properties( );        // ... 指定厂商专有的JNDI属性        return new javax.naming.InitialContext(p);      }    }

为了访问enterprise bean,客户端首先使用JNDI获得一个连向bean所在容器的目录。JNDI是一组独立于实现的API,用于目录和命名系统。每家EJB厂商都必须提供一个与JNDI兼容的目录服务。这意味着他们必须给出一个JNDI service provider(JNDI服务提供程序),即一段类似JDBC驱动的软件代码。不同的service provider与不同的目录服务相连接,就如同JDBC一样,不同的驱动程序与不同的关系数据库相连接。getInitialContext()方法使用JNDI来获得一个指向EJB服务器的网络连接。

用于获取JNDI上下文的代码和你使用哪一家EJB厂商的产品有关。如何获取与你所用的产品相配的JNDI上下文,请参考厂商文档。例如,在WebSphere中用于获取JNDI上下文的代码可能类似如下。

  public static Context getInitialContext( )    throws javax.naming.NamingException {      java.util.Properties properties = new java.util.Properties( );      properties.put(javax.naming.Context.PROVIDER_URL, "iiop:///");      properties.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,      "com.i

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号