|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
进而能拉拢大多数程序员用windows产品。并且从ASP.NETAJAX可以跨平台这一点上,间接证明了我们的推断,至少证明了微软做过这方面的研究。所以如果哪一天突然听说了.net可以跨平台了,那么请不要吃惊,如果这一天真的到来,java就到了真正和.net决战的时刻。因为不到万不得以的时候微软是不会推出跨平台的.net的,如果跨平台的.net还不足以对抗java的话,那么微软还剩的手段就是开源了,呵呵。
在本文中,我将概述撑持1.4版J2EE标准引进的动静所需的改动。我将出格剖析JMS1.1的需求和利用时的新限定、与动静方针有关的新观点、和EJB标准2.1版本为动静驱动bean所带来的明显变更。这些内容关于这些开辟职员和办理职员出格有效:他们熟习J2EE1.3中的动静、而且但愿编写新的使用程序大概将现有动静使用程序移植到兼容J2EE1.4的使用服务器上。
JMS1.1
兼容J2EE的使用服务器如今必要撑持1.1版的Java动静服务(JavaMessageServer,JMS)标准,这大概是新版本J2EE标准中最分明的改动。JMS1.1完整向后兼容J2EE1.3标准所请求的JMS1.1,以是应该不必要改动现有的使用程序。JMS1.1引进了一致动静域,在BobbyWoolf的这篇文章中对它做了具体的会商。值得夸大的是,除非必要向后兼容性,不然没有来由用老的行列和主题接口编写新的JMS使用程序。新的使用程序应该只利用新的一致接口,如清单1中的例子所示。
清单1.展现一致JMS接口的例子
InitialContextcontext=newInitialContext();
ConnectionFactoryfactory=
(ConnectionFactory)context.lookup("java:comp/env/jms/cf");
Destinationsource=
(Destination)context.lookup("java:comp/env/jms/source");
Connectionconnection=factory.createConnection();
connection.start();
Sessionsession=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
MessageConsumerconsumer=session.createConsumer(source);
Messagemessage=consumer.receive();
connection.close();
正如Bobby在他的文章中所说的,一致接口不但简化了动静编程模子,它们还使使用程序能够用一个事件Session吸收来自行列的动静,并向主题发送动静(大概相反)。这意味着能够在统一个事件事情单位中举行发送和吸收,而无需借助于bean大概容器办理的事件。
J2EE对JMS利用的限定
像之前版本的J2EE标准一样,1.4版对JMS的利用有一些限定。我将在本节剖析这些限定。
限定的接口
只管很多开辟职员大概不晓得,可是J2EE标准关于J2EE使用程序怎样利用JMSAPI老是有一些限定。比方,以下接口用于JMS供应者与使用服务器之间的集成(它们是在JMS标准中形貌的ApplicationServerFacilities的一部分),因此不克不及被使用程序利用:
javax.jms.ServerSession
javax.jms.ServerSessionPool
javax.jms.ConnectionConsumer
Alljavax.jms.XAinterfaces
限定的办法
关于那些“使用程序组件在制止创立线程的容器中不克不及实行”的办法,J2EE1.3标准给出了让人狐疑的声明。EJB容器不同意使用程序创立线程,可是一个Web容器能够同意使用程序如许做。了局,在J2EE1.3中,依据所利用的Web容器,能够挪用大概不成以挪用这些办法。侥幸的是,J2EE1.4标准删除这些使人狐疑的说法,只是申明以下办法只能被运转在客户容器中的使用程序所利用——换句话说,它们不会在Web大概EJB容器中挪用:
javax.jms.ServerSessionmethodsetMessageListener()
javax.jms.ServerSessionmethodgetMessageListener()
javax.jms.Sessionmethodrun()
javax.jms.QueueConnectionmethodcreateConnectionConsumer()
javax.jms.TopicConnectionmethodcreateConnectionConsumer()
javax.jms.TopicConnectionmethodcreateDurableConnectionConsumer()
javax.jms.MessageConsumermethodgetMessageListener()
javax.jms.MessageConsumermethodsetMessageListener()
javax.jms.ConnectionmethodsetExceptionListener()
javax.jms.Connectionmethodstop()
javax.jms.ConnectionmethodsetClientID()
<p>
比如模式、敏捷方法什么的,这些思想好,但是实施的人没有理解而且没有正确运用这些知识导致了开发周期的延长。比如说对象,通过getName()方法不能获取对象的名字。 |
|