仓酷云

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

[学习教程] ASP编程:为Web使用创建基于JMX的办理体系

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:15:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码web  Web使用体系总算开辟了,接上去该怎样让客户(Web使用体系的办理员)轻松办理我的一堆设置文件,大概怎样完成静态修正体系运转属性,同时又让客户不必要过量的懂得设置文件的内容就可以够完成这些办理呢?这是很多方才停止Web使用体系后期开辟的体系剖析职员必要面对的成绩。又大概说我想对早已完成Web使用体系举行无效的资本办理,但愿再增加办理功效的同时,对原本的代码不必要做过量的修正,换句话说就是办理体系与被办理的使用体系做到很好的断绝。JMX的办理框架()为你很好的办理了这些成绩。






  JMX(JavaManagementExtensions)是来办理收集,设备,使用程序等资本,它形貌了一个可扩大的办理系统布局,而且供应了JMXAPI和一些欲界说的java办理服务。在撰写本文时,JMX标准最新版本为v1.2(http://jcp.org/aboutJava/communityprocess/final/jsr003/index3.html),JMX参考完成的最新版本为v1.2.1(http://java.sun.com/products/JavaManagement/)。JMX推出后,一些年夜型的项目就当即接纳了基于JMX的完成框架,比方Jakartatomcat和JBoss,这从分辩明JMX的可行性和优秀的特征。

  关于Web使用的办理常常是对照贫苦的,比方客户手动的修正设置文件,开启数据库监控程序等等,假如要静态修正数据库会见计划大概监控用户数,静态修正日记级别会加倍贫苦,而且大概把体系的布局弄得混乱,形成布局不良的恶果,更别说可扩大性了。JMX的分层布局和高度的组件化,经由过程将各类资本封装成MBean的体例,让我们能够很低本钱的完成对现有Web使用的扩大性很强的办理计划。

  本文以Tomcat作为Web服务器为例,具体的先容怎样利用JMX创建对Web使用的办理。关于JMX的观点性的器材、系统布局和利用标准已有很多的相干文档,为了可以更好的了解本文,在浏览本文时请先参阅这些文档,本文的文字将侧重在使用和完成上。下图()为JMX的基础框架图(见JMX标准),,目标是给人人了解本文供应便利。




  1、创立Web使用的办理体系

  对Web使用构建一个基于JMX的办理体系,我们必要做的事变有哪些呢?

  针对每个必要办理的资本创立一个MBean的实例,这是JMX框架所请求的,有两品种型的实例可供选择,一种是间接办理资本的MBean,一种经由过程挪用资本实例举行办理的MBean。

  编写一个MBean形貌文件,并形貌每个MBean,选择基于XML的MBean形貌文件是一个不错的决意。

  经由过程读MBean形貌文件,天生MBeanInfo,从而天生一个个MBean。

  将必要举行办理的MBean注册到MBeanServer傍边。

  编写客户端代码,选择Web的体例举行客户真个编码对照Web使用的作风,也对照简单完成。

  那末一个基于JMX的Web使用的办理框架已成形,是它的基础布局图,虚线部分为基于JMX的办理体系。接上去我们依照步骤完成全部办理体系。







  2、取得MBeanServer的实例

  有两种计划取得MBeanServer的实例。

  1、经由过程取得Web服务器的MBeanServer的实例,如许做的优点是经由过程该MBeanServer对自己,乃至能够完成对Web服务器的本身的一些办理。Tomcat的办理框架也是创建JMX的基本上,它利用的JMX的完成是MX4J,这是一个十分优异的JMX开源项目,在tomcat4.1.27中,MBeanServer的实例寄存与属性名为"org.apache.catalina.MBeanServer"的application变量(Web使用中变量的几种局限:page,request,session,application)中,因而servlet中取得MBeanServer实例的举措:
  1.   server=(MBeanServer)getServletContext().getAttribute("org.apache.catalina.MBeanServer");
复制代码
  假如经由过程这类体例,你取得的server为null,这申明你必需还要完成上面的事情,使你可以有权限取得体系的MBeanServer,tomcat才会将MBeanServer的实例寄存在web使用程序上司性名"org.apache.catalina.MBeanServer"的体系变量中。

  找到tomcat下conf目次,修正server.xml文件。修正Web使用的context元素,增加上privileged="true"这一项属性便可,比方:
  1.   <Contextpath="/myapp"docBase="c:/web/"debug="9"privileged="true"reloadable="true"crossContext="true"/>
复制代码
  2、经由过程JMXAPI中MBeanServerFactory类的createMbeanServer()的办法创立MBeanServer的实例,如许做得优点的使JMX的完成与Web服务器有关,使代码的移植性更强。在创立完MBeanServer今后,为了让可以在办理体系中很便利的取得该MBeanServer的援用,可将其置进application变量中(保举),大概利用singleton计划形式的办法创立和取得。

  利用JMXAPI创立MBeanServer的代码以下:
  1. MBeanServerserver=MBeanServerFactory.createMBeanServer();
复制代码
  事实接纳何种计划取得MBeanServer其实不非常主要,能够思索完成的便利举行选择。

  3、创立MBean

  为了可以办理Web使用的资本,起首要使资本可以被办理,依照JMX标准的请求,我们将资本封装成MBean,实践上也就是为Web使用增加可办理性。

  取得MBeanServer的实例今后,就能够编写本人的MBean了,依据JMX的标准,MBean有尺度的和静态的两种次要范例,这里就不赘述了,详细能够参看JMX的标准(http://)。有两种用于特别用处的静态MBeans:模子MBean和开放MBean。模子MBean(ModleMBean)供应了"现成的"MBean完成,您可使用它来疾速天时用任何JMX可办理资本。它是预制的、通用的和静态的MBean类,而且供应了参考完成,已包括了一切需要缺省举动的完成-同意您在运转时增加或掩盖必要定制的那些完成。这使得基于Java的、非工具化的资本可以在运转时供应包管兼容的MBean虚包,使它们可以经由过程JMX系统布局举行办理。

  在Web使用中,资本是多元化,有运转实例,静态文件,乃至是设备大概是硬件形态,那末我们把这些资本能够分为两类,一些资本必要举行静态的办理监控(如上岸用户数,数据库毗连监控,立即日记等),一些则是静态资本,只必要举行静态的办理(体系设置文件,日记级别等),要办理这些分歧范例的资本,这就请求MBean一方面可以间接挪用运转实例供应的接口进,另外一方面又但愿MBean本身可以供应静态资本的办理,模子MBean可以很好的满意如许的请求,而且关于新增必要办理的资本,供应了很好的天真性和可扩大性,因而保举模子MBean作为Web使用首选。固然详细接纳何品种型的MBean,必要分离分歧的使用,大概多品种型的MBean相分离利用。特地提一点,接纳分歧范例的MBean,关于办理客户端是通明的,也就是说客户端利用分歧的会见办法来会见MBean的属性和办法,这也是JMX的一个长处。

  为了更好的察看怎样完成对静态资本和静态资本的办理,本文编写了两个MBean,分离完成对数据库毗连属性完成静态和静态的办理。静态办理的MBean的目标是完成对数据库设置文件修正,如许当Web使用重启后,会利用新的数据库设置,我们接纳MBean的供应对资本的间接操纵举行完成。静态办理的MBean目标是对已实例化的数据库毗连工具的属性举行修正,如许在不从头启动Web使用的情形下,改动数据库毗连。

  1、完成办理设置文件的MBean。

  JDBCConfig是一个ModelMBean,它的感化是对config.properties文件封装成MBean,该MBean包含四个属性及其相干的getter和setter和一个save办法,个中save办法的感化是属性存进设置文件,从而完成了经由过程MBean间接对设置文件举行操纵。这个例子中的MBean承继了BaseModelMBean类,该类完成了javax.management.ModelMBean接口,我们能够在commons-modeler.jar中找到BaseModelMBean类,commons-modeler.jar是tomcat4.x中利用的一个开放源码的包。
  1. importjavax.management.MBeanException;importjavax.management.RuntimeOperationsException;importorg.apache.commons.modeler.BaseModelMBean;importjava.io.*;importjava.util.Properties;publicclassJDBCConfigMBeanextendsBaseModelMBean{privateStringdriver;privateStringusername;privateStringpassword;privateStringdburl;privatestaticfinalStringCONFIG_FILEPATH="c:mywebconfconfig.properties";/////////////////////////////////////////////////////////////////////constructor///////////////////////////////////////////////////////////////////publicJDBCConfig()throwsMBeanException,RuntimeOperationsException{super();init();}privatevoidinit(){InputStreamin=null;try{Propertiesprop=newProperties();in=newBufferedInputStream(newFileInputStream(CONFIG_FILEPATH));prop.load(in);driver=prop.getProperty("driver");dburl=prop.getProperty("dburl");username=prop.getProperty("username");password=prop.getProperty("password");in.close();}catch(Exceptione){try{if(in!=null)in.close();}catch(IOExceptione1){e1.printStackTrace();}e.printStackTrace();}}/////////////////////////////////////////////////////////////////////getterandsetter////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////publicmethod///////////////////////////////////////////////////////////////////publicStringsave(){OutputStreamout=null;try{out=newBufferedOutputStream(newFileOutputStream(CONFIG_FILEPATH));Propertiesprop=newProperties();prop.setProperty("driver",driver);prop.setProperty("dburl",dburl);prop.setProperty("username",username);prop.setProperty("password",password);prop.store(out,"---jdbcconfig---");out.close();return"savesuccess!";}catch(Exceptione){try{if(out!=null)out.close();}catch(IOExceptione1){e1.printStackTrace();}e.printStackTrace();return"saveerror!";}}}
复制代码
  1. [b]  2、完成修正运转实例的属性。
  2. [/b]  下面的例子是对静态资本的修正,假如必要对正在运转的类实例举行静态修正,ModelMBean一样供应了很好的办法,在javax.management.ModelMBean的API中有个setManagedResourced办法,这个办法的感化是将正在运转的类实例置进ModelMBean,实践上所要做的也就这么多。当必要对改动实例属性的时分,只必要挪用MBean的setAttribute的办法便可,MBean将会经由过程反射挪用该实例对应的属性设置办法,就是这么复杂。可是很多人喜好间接从代码懂得历程,因而我将怎样完成静态修正实例的属性代码也写出来。一样以JDBC为例,这里假定体系已有了一个利用JDBC的数据库毗连,如今必要改动JDBC的属性,并创建新的毗连,这统统都在不重启Web使用体系的情形下完成。
  3.   第一段代码是Web使用利用的数据库毗连类,它供应一个取得数据库毗连,和测试毗连属性的两个办法,和相干的属性。当Web使用启动时,该类将会实例化,我们临时把这个实例叫资本实例。
  4. [code]packagecom.myApp.db;importjava.sql.Connection;importjava.sql.SQLException;publicclassDBAccess{privateStringdriver;privateStringusername;privateStringpassword;privateStringdburl;publicConnectiongetConnection(){......}publicstaticbooleantestConnection(Stringdriver,Stringusername,Stringpassword,Stringdburl){}/////////////////////////////////////////////////////////////////////getterandsetter///////////////////////////////////////////////////////////////////}
复制代码
  第二段代码是一个ModelMBean类,和后面提到的第一个ModelMBean一样,承继了BaseModelMBean,分歧的是它将具有Web使用运转时代资本实例的援用,由于一切的属性和办法都在所援用的资本实例中,父类BaseModelMBean完成了经由过程反射挪用该资本实例对应的属性设置办法,以是这个类的编写相称复杂,我们能够在内里完成其他一些相干的办法。
  1. packagecom.myApp.db;importorg.apache.commons.modeler.BaseModelMBean;importjavax.management.MBeanException;importjavax.management.RuntimeOperationsException;publicclassResInstanceMBeanextendsBaseModelMBean{publicResInstanceMBean()throwsMBeanException,RuntimeOperationsException{super();}/**otheroperations**/.....}
复制代码
  第三段代码是怎样完成办理数据库毗连类的运转实例。
  1. /**Web使用运转早期创立的数据库毗连**/DBAccessdbAccess=newDBAccess();dbAccess.setDriver();dbAccess.setPassword();dbAccess.setUsername();dbAccess.setDburl();....../**创立并注册办理数据库的MBean//创立mbeanResInstanceMBeanmbean=newResInstanceMBean();//设置MBeanInfo,这是必需的mbean.setModelMBeanInfo(createMBeanInfo());//设置MBean所办理的资本实例,instance为数据库毗连的实例,//"objectReference"是必需的,不然将没法将资本实例设置到MBean中,记着就好了DBAccessinstance=getDBAccess();mbean.setManagedResource(instance,"objectReference");//注册mbean到MBeanServer中MBeanServerserv=getMBeanServer();ObjectNameoname=createObjectName(mbean);serv.registerMBean(mbean,oname);
复制代码
  4、创立MBean形貌文件

  在下面第三段代码中,我们能够看到,要将MBean注册到MBeanServer中必需先创立MBeanInfo,MBean的setModelMBeanInfo()用来将MBeanInfo设置到MBean中。为了可以天真的取得MBean的信息,从而将MBean注册到MBeanServer,在OReilly出书的"javaenterprise的最好理论"里提到,接纳XML文件对MBean形貌是一种十分不错的选择计划,而且供应了一个XML形貌典范,因而本文也保举在办理Web使用也接纳利用MBean形貌文件的办法。实践上不管tomcat4.X,仍是JBOSS,都接纳利用MBean形貌文件的体例创立MBean,上面供应了一个Tomcat4.x内里的MBean形貌文件计划,并用该计划形貌了上述提到的两个数据库毗连办理的MBean。Tomcat供应了读取该形貌文件的举措,详细能够参看Tomcat供应的匡助文档--怎样利用MBeandescriptor("http://jakarta.apache.org/tomcat/tomcat-4.1-doc/mbeans-descriptor-howto.html")。
  1. <mbean-list><mbeanname="JDBCConfigMBean"className="com.myApp.jmx.JDBCConfigMBean"description="theobjecttoaccessdatabase"domain="myapp"><attributename="driver"description="Jdbcdrivername"type="java.lang.String"writeable="false"/><attributename="dburl"description="databaseurl"type="java.lang.String"/><attributename="username"description="Databaseusername"type="java.lang.String"/><attributename="password"description="vtheusernamespassword"type="java.lang.String"/><operationname="save"description="savetheconfiguration"impact="ACTION"returnType="java.lang.String"></operation></mbean><mbeanname="DBAccess"className="com.myApp.jmx.ResInstanceMBean"description="theobjecttoaccessdatabase"domain="myapp"type="com.myApp.db.DBAccess"><attributename="driver"description="Jdbcdrivername"type="java.lang.String"writeable="false"/><attributename="dburl"description="databaseurl"type="java.lang.String"/><attributename="username"description="Databaseusername"type="java.lang.String"/><attributename="password"description="vtheusernamespassword"type="java.lang.String"/><operationname="testConnection"description="testconfigureattribute"impact="ACTION"returnType="java.lang.String"><parametername="driver"description="Jdbcdrivernamefortest"type="java.lang.String"/><parametername="username"description="Databaseusernamefortest"type="java.lang.String"/><parametername="password"description="theusernamespasswordfortest"type="java.lang.String"/><parametername="dburl"description="databaseurlfortest"type="java.lang.String"/></operation></mbean></mbean-list>
复制代码
  5、注册MBean

  在对MBean注册前,必需失掉MBean的形貌信息,而且保留在MBeanInfo的实例中,不然是没法将MBean注册到MBeanServer傍边的,经由过程MBean形貌文件,取得各类范例MBean的形貌信息是一件十分复杂的事变,而这些恰是创立MBean所必要的,如许做的长处在于不必要经由过程编写代码,只必要修正形貌文件,就能够增加新的MBean,注册的代码实践上我们之前的代码已列出。在MBean注册时必需指定对应的ObjectName,ObjectName相称于MBean在MBeanServer中的独一名字,它的格局为:"domain:key1=value1,key2=value2...",可依据体系的请求界说一套定名的划定规矩。
  1. //注册mbean到MBeanServer中MBeanServerserv=getMBeanServer();ObjectNameoname=createObjectName(mbean);serv.registerMBean(mbean,oname);
复制代码
  6、编写办理框架的客户端

  我们已完成了服务器端MBean的注册事情,接上去是怎样让用户可以利用这些MBean办理资本。固然JMX的参考完成中供应了HTMLAdapter,利用户可以经由过程扫瞄器利用MBean。可是供应的界面并非那末友爱可亲,一直刻薄的客户对这相对不会中意的。因而,编写一些简便的会见MBean页面仍是有需要的。怎样经由过程java会见MBean,能够参阅JMX的材料,这些材料十分多。

  依据下面的先容,假如要增添对Web使用的办理功效或办理体系,基于JMX的办理框架相对是一个十分明智的选择。[/code]asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。
分手快乐 该用户已被删除
沙发
发表于 2015-1-19 06:01:44 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-25 13:56:34 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-8 14:15:45 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
透明 该用户已被删除
5#
发表于 2015-2-25 18:31:58 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
深爱那片海 该用户已被删除
6#
发表于 2015-3-8 01:12:03 | 只看该作者
如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
乐观 该用户已被删除
7#
发表于 2015-3-15 19:22:42 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
柔情似水 该用户已被删除
8#
发表于 2015-3-22 03:10:22 | 只看该作者
掌握asp的特性而且一定要知道为什么。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 10:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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