仓酷云

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

[学习教程] JAVA教程之经由过程JSP的预编译打消功能瓶颈

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:40:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
用winrar打包j2ee的程序和用IDE打包应用程序是一样的。按照你的想法,你是不是也希望服务器都整合由一家公司提供呢?js|编译|功能<p>
接待离开“办理角”这个版,新一期的月刊专栏专注于WebLogic服务器的办理、设置、处置和开辟方面。
启示这个专栏的目标是为了向人人先容在利用WebLogicSever时,能广泛用到的非J2EE开辟方面的成绩。开辟者和办理者一样会发明这个专栏十分有代价,由于这些文章既合用于开辟又合用于终极产物的使用。别的,它很年夜水平上使用了来自于该范畴和工程实行室的履历,它供应了对实践成绩的具体解答。

JSP预编译的需要性

本月的文章着眼于移除潜伏的体系功能瓶颈,它经由过程办理一个最一般的成绩DD在服务器运转工夫中的JSP(JavaServerPage)编译的体系开支成绩,这个成绩困扰着几近一切的J2EE开展企图。固然JSP是在J2EE使用局限内出现静态HTML视图的幻想选择,但在某种水平上它们会影响功能,这比毛病的更使人厌恶,给人的第一感到是该程序很慢。

依据J2EE标准,JSP次要是HTML文件,在它内里包括着Java代码用来和其他的体系组件举行交互和静态的显现信息。标准划定一切的J2EE编译使用服务器应该撑持JSP,客户哀求一个特定的JSP,将:
●转换JSP从HTML格局成为servlet范例的Java类(Java源格局),用简写的JSP标记取代完整切合划定的Java语法
●将新发生的Java源文件编译成.class字节码情势
●在新编译的类上实行得当的接口办法而且对客户端哀求前往呼应。
固然从开展的概念来看关于在暗示层内办理静态HTML的发生这是最好的路子,但它影响到服务器的运转工夫情况,请求JSP被剖析、变化成Java代码,而且在它去向理一个特定的客户端哀求之前被编译。对终极用户分明的影响是,一个呼应将会被提早晓得给定的JSP文件被编译经由过程。思索到一个特定的用户哀求大概用到两个或多个JSP文件,因而编译形态必须的工夫增添了良多倍。
对第一个哀求一个特定的JSP页面而且迫使被哀求的文件举行初始编译的终端用户,会感到使用程序很慢而且没有呼应。固然如许的感到大概存在,可是关于特定的JSP文件的编译历程一般在给定的使用服务器假造机实例的性命周期中完成一次。因而,它对功能整体上的影响被思索成一种停滞,而不是对使用程序总呼应工夫的一个严峻的停滞。但是,在临盆情况中为了传送基于JSP的J2EE使用程序的临盆体系,必需克制JSP的缺点而且对终极用户举行通明的编译。

如许,临盆情况怎样能受害于JSP文件,还要制止运转时编译的功能冲击?谜底是复杂的:实行一个一样平常作为JSP预编译的历程。借用JSP预编译,已被预编译的在脱机情况中的JSP文件和他们的编译了局被部署在临盆情况中。假如了局类文件的预编译和部署准确的完成,使用程序服务器将会为JSP文件运转先前的编译类,而且在运转中将不强迫对特定的哀求举行再编译。如许发生了一种情形,使用程序的操纵制止了过剩的编译开支,同意体系办理员移除对体系总功能会形成影响的一个已知的瓶颈。

分歧的办法论和路子

没有人嫌疑JSP预编译的答应听起来使人镇静。但是,为了要完成如许的答应,你必需起首懂得可以实行这个手艺的分歧路子,和它们各自长处和弱点。

运转使用程序举行强迫预编译
用于完成JSP预编译最不言而喻的办法是在产物公布前,经由过程哀求在使用程序中的一切大概的JSP页面,因而编译在终端用户会见站点前完成。它既能够经由过程第一次野生扫瞄全部站点时完成也能够经由过程从测试系列使用程序或其他剧本言语的客户端(比方LoadRunner或SilkPerformer)动员主动哀求来完成。当利用这类办法(多是一切的JSP预编译办法中的最复杂的而又较下策的一个办法)时,他的弱点很快就展现出来了。大概最年夜的弱点是很难完成跨集群情况,在集群情况中,用该办法关于单一节点的实例发送的哀求依集群中的节点数目成倍的增添。并且,当这个集群是由一个或更多的Web服务器或硬件负载衡量者来代办署理时,更难包管在一个集群的情况中每一个服务器实例都举行JSP预编译,由于一样平常没无方法来弄清朝理最后把哀求转到哪一个使用服务器。别的,在使用服务器每次重启时,这个办法必需实行,当站点很小时,不克不及一次完成一切的编译就会很疾苦。因而,我们不保举这类JSP预编译的办法。
利用编译工具来完成预编译
由于野生实行一个站点使用程序来强迫JSP预编译在实在的产物情况中是一个较年夜的弱点,在预编译运转时代选择编译JSP,使其酿成为servlets变得更使人心动。侥幸地,WLS供应了二个办法。第一种办法在服务器启动部署一个特定的Web使用程序的时分实行预编译(declarative预编译),第二种办法是命令行Java工具(weblogic.jspc)同意历程在完整脱机的情形下处置(程序体例的预编译)。两种办法都有它们的长处,程序体例的预编译在二者中有更天真的选项,而且供应更让人没法顺从的来由来利用它。
DECLARATIVE预编译
关于在WLS下发布的预编译,一个特定的Web使用程序(自力的大概作为EAR的一部分)可以被设置,因而一切的JSP在使用程序部署(服务器启动时)和从头部署(运转时)时代里被预编译。对WEB-INF/weblogic.xml部署形貌符要做需要的设置变更,利用预编译<jsp-param/>指令,以下:

<weblogic-web-app>

<jsp-descriptor>
<jsp-param>
<param-name>precompile</param-name>
<param-value>true</param-value>
</jsp-param>
</jsp-descriptor>

</weblogic-web-app>

在一个特定的Web使用程序长进行部署(或从头部署),假如上述的参数被设定成真,WLS将会在WAR内实验预编译一切的JSP文件,在程序中从Web使用程序的根目次下轮回的运转它的办法(略过Web-INF)。以.jsp或.JSP为扩大名的文件都酿成了编译的对象。被编译后的文件被以得当的包目次布局情势被安排在Web使用程序的一时事情目次上面(默许在Web-INF子目次中,除非在weblogic.xml里有出格申明)。
这个办法是到今朝为止举行JSP预编译最便利的路子(“flick-a-switch”路子),他有很多指出来毫偶然义的弱点。假如一个毛病在JSP的编译时代或在部署(或从头部署)的时分产生,Web使用程序的预编译将会在破例处停息。别的,假如在一个特定的Web使用程序内里有很多JSP文件的情形,declarative预编译明显的影响着部署工夫,阻断部署直到一切的文件都被编译。关于年夜型的使用程序,当呈现数以百计的JSP文件以declarative预编译被实行的时分,这类部署工夫趋势以分钟来盘算(在某些情形10到15分钟,其他情形大概更长工夫)。假想入手下手一个服务器实例,在一个特定的Web使用程序周期内进进部署形态用declarative预编译激活。假如在使用内有良多的JSP文件和部署,靠近完成时就已消费了大批的工夫,在编译时代因为抛出一个破例而俄然失利,固然会引发波折感。固然起先看起来对照便利,但declarative编译对临盆体系办理形成严重的风险,因而应当在经由稳重的思索后再利用它。
程序体例的预编译
在WLS下最牢靠的预编译JSP的办法是利用Java命令行,weblogic.jspc,它位于WLS安装的lib目次之下的weblogic.jar文件中。这个工具同意开辟者在开展阶段和在部署前办理编译工夫成绩的时分编译必要的JSP文件。它也为临盆体系供应一个有才能完成JSP预编译的办理员。这类用法的次要优点是:

●文件能够被预编译一次然后能够被屡次部署。(这不被服务器实例的反复使用所影响)
●编译时的破例能够被事后办理而不影响部署。
●类能够经由过程集群部署。
利用weblogic.jspc的弱点是必要野生干与,而且它在开辟时并当在JSP文件变得过期的时分必需被从头运转。但是,思索到后面的两个办法的会商,我们几近不克不及将这类不便利当做该办法的一个弱点,因而保举它作为最牢靠和最天真的机制来完成JSP预编译。

实行weblogic.jspc
为了更无效的利用weblogic.jspc,你必需起首懂得它的用法和语法。这篇文章我们将使用WLS6.1SP2的工具的功效。注重:上面给出的语法和最好的常规应当使用于WLS6.1的一切版本和新的WLS7.0。
为了挪用命令行JSP编译器(weblogic.jspc),你必需断定上面的内容:
●PATH情况变量必需包括你呆板上安装的J2SE1.3包的二进制目次(比方,/opt/j2se/1.3.1/sdk/bin大概c:sunsoftj2se1.3.1sdkin),以取得JVM运转时的撑持。假如你盘算利用javac作为你的JSP编译的Java编译器,要断定PATH包括全体Java1.3的软件开辟工具包(SDK)的二进制目次,而且不单单是JRE(JavaRuntimeEngine,Java运转工夫引擎),由于没有编译器和JRE联系关系。假如你盘算利用一个编译器而不是javac(比方Jikes),也要为谁人编译器断定在PATH中包括准确的目次。
●设置Java体系类路径用来包括来自WLS6.1SP2安装目次的weblogic.jar文件,经由过程在产物库目次下默许创建(比方,/opt/bea/wlserver6.1/lib/weblogic.jar大概c:eawlserv-er6.1libweblogic.jar)。别的,请断定在JSP编译阶段中你大概必要的参考类(JAR或类文件)也在你的类路径中。
在第一次实行weblogic.jspc之前,你必要测试你的命令行设置是不是是按上述设置。它能够经由过程复杂运转一个WLS版本反省来完成,利用命令“javaweblogic.version”,这个命令应当前往上面的内容:

whichshouldreturnthefollowing:
WebLogicServer6.1SP212/18/200111:13:46
#154529
WebLogicXMLModule6.1SP212/18/2001
11:28:02#154529

假如你的输入和下面的不类似(和你运转的版原形对应),在举行JSP预编译前,要从头会见PATH和类路径变量将其设置成你确当前命令行情况。

一样平常的weblogic.jspc的语法以下面给出的:

javaweblogic.jspc[options]<jspfiles>...

在一个编译器的单一挪用中默许情形下JSP编译器能够编译一个JSP文件或一组JSP文件,而且能够经由过程设置命令行选项,编译器能够以分歧的办法事情。上面给出一个例子:

java
weblogic.jspc
-webappmywebapp
-compilerjavac
-compileFlags"-g"
-classpath/u/apps/dist/src/lib.jar
-d.
-packagecom.slackwerks.mywebapp.jsp
-commentary
-keepgenerated
-k
mywebappindex.jsp

这篇文章只枚举了一个例子,假如你要想加倍懂得weblogic.jspc怎样能在你的情况中利用和办理的话,请参阅www.slackwerks.com/wldj,我们供应了对整套的事情选项,利用的寄义和相干联成绩的会商。
结论
固然关于JSP预编译的成绩较多,但很多的路子能够办理。但是,思索到上文所说的那些长处和弱点,应当较简单的看出经过weblogic.jspc预编译的程序体例是为克制JSP固有的弱点的一个天真的选项。在开辟阶段的初期,熟习该工具将改良临盆时代使用程序的办理和功能情况。



手机用到的是用j2me所编出来的小程序。
分手快乐 该用户已被删除
沙发
发表于 2015-1-20 17:49:25 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
透明 该用户已被删除
板凳
发表于 2015-1-23 09:37:08 | 只看该作者
是一种突破用户端机器环境和CPU
第二个灵魂 该用户已被删除
地板
发表于 2015-1-31 15:33:31 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
不帅 该用户已被删除
5#
发表于 2015-2-4 09:20:08 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
小魔女 该用户已被删除
6#
发表于 2015-2-9 16:45:02 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
深爱那片海 该用户已被删除
7#
发表于 2015-2-27 11:50:23 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-9 01:52:57 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
莫相离 该用户已被删除
9#
发表于 2015-3-16 19:58:14 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
变相怪杰 该用户已被删除
10#
发表于 2015-3-19 12:54:55 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
飘灵儿 该用户已被删除
11#
发表于 2015-3-19 22:56:19 | 只看该作者
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
若天明 该用户已被删除
12#
发表于 2015-3-30 10:02:15 | 只看该作者
是一种使用者不需花费很多时间学习的语言
简单生活 该用户已被删除
13#
发表于 2015-4-1 03:50:23 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
灵魂腐蚀 该用户已被删除
14#
发表于 2015-4-6 06:42:59 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
admin 该用户已被删除
15#
发表于 2015-4-15 04:43:54 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
山那边是海 该用户已被删除
16#
发表于 2015-5-5 11:15:04 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
柔情似水 该用户已被删除
17#
发表于 2015-5-6 00:11:54 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
谁可相欹 该用户已被删除
18#
发表于 2015-6-23 08:59:29 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
爱飞 该用户已被删除
19#
发表于 2015-7-9 12:37:28 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
因胸联盟 该用户已被删除
20#
发表于 2015-7-13 06:31:59 | 只看该作者
是一种使用者不需花费很多时间学习的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 02:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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