仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 614|回复: 12
打印 上一主题 下一主题

[学习教程] 来看使用反射完成ejb静态委派

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。
每一个bean大概会有良多办法,一样平常我们经由过程一个delegate来挪用sessionbean中的办法,而非间接挪用sessionbean,delegate中只是复杂的对每一个绝对应的sessionbean的public办法的复杂封装,在挪用的时分省往了每次对home的查找和ejb对象的create,可是大概我们的bean会有良多办法,假如每一个bean都写如许一个delegate,如许事情量就会很年夜,并且也方便于今后体系的移植,好比说,本来利用ejb完成,如今要改用jdo间接操纵数据库,而经由过程使用java的reflect手艺,就可以较好地完成这些请求。起首,界说了一个FacadeDelegate的笼统类,用来完成对sessionbean的home的查找,代码以下:
importjavax.ejb.*;
  importtestejb.util.common.*;
  importtestejb.util.resource.*;
  publicabstractclassFacadeDelegate{
   privatestaticStringtype=Resource.RemoteType;
   publicFacadeDelegate(){
   }
   publicEJBHomegetHome(StringjindiName,ClassclassName)
   {
    EJBHomehome=null;
    ServerLocatorAdapteradapter=ServerLocatorAdapter.getInstance();
    try
    {
     home=(EJBHome)adapter.getHome(type,jindiName,className);
    }
    catch(Exceptione)
    {
     System.err.println(e.getMessage()+jindiName+className.toString());
    }
    returnhome;
   }
  }
个中ServerLocatorAdapter是一个用来依据是local仍是remote挪用ejb对象而经由过程分歧的办法查找home的类,假如type为local则挪用LocalServerLocate中的办法,假如type为remote则挪用RemoteServerLocate中的办法,取得home。代码以下:
importjava.util.*;
  importjava.lang.reflect.*;
  importtestejb.util.resource.*;
  publicclassServerLocatorAdapter{
   privateMapcache;//用来缓存home
   privatestaticServerLocatorAdapterme;
   publicstaticServerLocatorAdaptergetInstance()
   {
    if(me==null)
     me=newServerLocatorAdapter();
    returnme;
   }
   //获得home
  publicObjectgetHome(Stringtype,StringjndiHomeName,ClassclassName)throwsException
   {
    Objecthome=null;
    if(cache.containsKey(jndiHomeName))
     returncache.get(jndiHomeName);
    if(Resource.LocalType.equals(type))
    {
     home=getLocalHome(jndiHomeName,className);
     cache.put(jndiHomeName,home);
     returnhome;
    }
    if(Resource.RemoteType.equals(type))
    {
     home=getRemoteHome(jndiHomeName,className);
     cache.put(jndiHomeName,home);
     returnhome;
    }
    returnhome;
   }
   //获得localhome
   privateObjectgetLocalHome(StringjndiHomeName,ClassclassName)throwsException
   {
  ClassmyClass=Class.forName(Resource.LocalClass);
  //Resource.LocalClass=”testejb.util.common.LocalServerLocator
  Methodmethod=myClass.getMethod(Resource.LocalConstractMethod,null);
  //Resource.LocalConstractMethod=”getInstance”
    LocalServerLocatorlocal=null;
    local=(LocalServerLocator)method.invoke(myClass,null);
    returnlocal.getLocalHome(jndiHomeName,className);
  }
  //获得remotehome
   privateObjectgetRemoteHome(StringjndiHomeName,ClassclassName)throwsException
   {
  ClassmyClass=Class.forName(Resource.RemoteClass);
  //Resource.RemoteClass=”testejb.util.common.RemoteServerLocator”
  Methodmethod=myClass.getMethod(Resource.RemoteConstractMethod,null);
  //Resource.RemoteConstractMethod=”getInstance”
    RemoteServerLocatorremote=null;
    remote=(RemoteServerLocator)method.invoke(myClass,null);
    returnremote.getHome(jndiHomeName,className);
   }
   privateServerLocatorAdapter(){
    //为cache供应线程平安的包管
    cache=Collections.synchronizedMap(newHashMap());
   }
  }
<p>
还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net网页编程的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。
再见西城 该用户已被删除
沙发
发表于 2015-1-20 22:00:22 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
若天明 该用户已被删除
板凳
发表于 2015-1-26 07:47:25 | 只看该作者
是一种为 Internet发展的计算机语言
小女巫 该用户已被删除
地板
发表于 2015-1-29 14:50:27 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
莫相离 该用户已被删除
5#
发表于 2015-2-6 02:08:16 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-7 19:49:02 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
透明 该用户已被删除
7#
发表于 2015-2-23 09:11:09 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
8#
发表于 2015-3-5 23:07:16 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-7 17:53:24 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
分手快乐 该用户已被删除
10#
发表于 2015-3-10 10:02:31 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
小魔女 该用户已被删除
11#
发表于 2015-3-11 01:52:15 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
简单生活 该用户已被删除
12#
发表于 2015-3-17 18:10:31 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
精灵巫婆 该用户已被删除
13#
发表于 2015-3-24 18:12:42 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 09:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表