以上的学习过程如果是比较顺利的话,进行到这一步,难度又陡然提高。因为上面的知识内容都是只涉及一个方面,而像ejb,jms,jta等核心的j2ee规范往往是几种java技术的综合运用的结晶,所以掌握起来难度比较大。
首先一定要学习好jndi,jndi是app server定位服务器资源(ejb组件,datasouce,jms)查找方法,如果对jndi不熟悉的话,ejb,jms这些东西几乎学不下去。jndi其实就是javax.naming.*这个包,运用起来很简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置,就需要看看专门的文档规范了,比如web.xml的写法,ejb-jar.xml的写法等等。针对每种不同的app server,还有自己的服务资源配置文件,也是需要熟悉的。
然后可以学习jta,主要是要理解jta对于事务的控制的方法,以及该在什么场合使用jta。这里可以简单的举个例子,我们知道一般情况可以对于一个数据库连接进行事务控制(conn.setautocommit(false),….,conn.commit()),做为一个原子操作,但是假设我的业务需求是要把对两个不同数据库的操作做为一个原子操作,你能做的到吗?这时候只能用jta了。假设操作过程是先往a数据库插一条记录,然后删除b数据库另一个记录,我们自己写代码是控制不了把整个操作做为一个原子操作的。用jta的话,由app server来完成控制。
在学习ejb之前要学习对象序列化和rmi,rmi是ejb的基础。接着学习jms和ejb,对于ejb来说,最关键是要理解ejb是如何通过rmi来实现对远端对象的调用的,以及在什么情况下要用到ejb。
在学习完ejb,jms这些东西之后,你可能会意识到要急不可待学习两个领域的知识,一个是uml,另一个是design pattern。java企业软件的设计非常重视框架(framework)的设计,一个好的软件框架是软件开发成功的必要条件。在这个时候,应该开始把学习的重点放在设计模式和框架的学习上,通过学习和实际的编程经验来掌握ejb的设计模式和j2ee的核心模式。
j2ee规范里面,除了ejb,jms,jta,servlet/jsp,jdbc之外还有很多很多的企业技术,这里不一一进行介绍了。
另外还有一个最新领域web services。web services也完全没有任何新东西,它像是一种黏合剂,可以把不同的服务统一起来提供一个统一的调用接口,作为使用者来说,我只要获得服务提供者给我的wsdl(对服务的描述),就够了,我完全不知道服务器提供者提供的服务究竟是ejb组件,还是.net组件,还是什么corba组件,还是其他的什么实现,我也不需要知道。web services最伟大的地方就在于通过统一的服务提供方式和调用方式,实现了整个internet服务的共享,是一个非常令人激动的技术领域。web services好像目前还没有什么很好的书籍,但是可以通过在网络上面查资料的方式来学习。
