来看使用反射完成ejb静态委派
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过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网页编程的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种为 Internet发展的计算机语言 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 是一种将安全性(Security)列为第一优先考虑的语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
页:
[1]