如何用xml文件定義客戶機配置
㈠ java程序中xml文件怎麼定義
就是一個配置文件的類型,比如struts.xml裡面就是配置struts,還有用xml傳遞和返回參數的這種需要解析
㈡ 如何用基於xml配置的方式配置spring
對於大多數的應用,從表現層的action,到持久層的DataSource,都被Spring 作為
bean 管理。如果這些bean 被配置在同一個文件中,閱讀及維護該配置文件將是一件非
常有挑戰的事情。
因此, Spring 建議:將一個大的配置文件分解成多個小的配置文件,使每個配置文
件僅僅管理功能近似於bean; 這樣不僅可以分散配置文件,降低修改配置文件的風險,
而且更符合"分而治之"的軟體工程原理。
多個配置文件最終需要匯總, ApplicationContext提供如下方式來匯總多個配置文件:
.使用App1icationContext 載入多個配置文件。
• Web 應用啟動時載入多個配置文件。
• XML 配置文件中導入其他配置。
1 ApplicationContext 載入多個配置文件
ApplicatonContext 的常用實現類有如下兩個:
• ClassPathXm1 ApplicationContext 。
• 。
這兩個類都可以用來載入多個配置文件,它們的構造器都可以接收一個數組,並在
該數組中存放多個配置文件。 可採用如下代碼載入多個
配置文件:
/I創建配置文件數組
/I假設有3 個配置文件: a.xml , b.xml , c.xml
Str工ng[) configLocations = {"a.xml" , "b.xml" , "c.xml"}
以配置文件數組為參數,創建ApplicationContext
ApplicationContext ctx = new (configLocations);
與採用創建ApplicationContext的方式相似,區別
僅在於二者搜索配置文件的路徑不同:通過CLASSPATH
路徑搜索配置文件:而則在當前路徑搜索配置文件。
2 Web 應用啟動時載入多個配置文件
參看5.12.3 節所述,通過ContextLoaderListener 也可載入多個配置文件,可利用
337
輕量級J2EE 企業應用實戰一一-Struts+Spring+Hibernate 整合開發
<context-pararn>元素來指定多個配置文件位置,其配置如下:
<l-- 確定配置文件的位置一〉
<context-param>
<param-name>contextConfigLocation</param-name>
<1-- 此處可以列出多個Spring 的XML 配置文件>
<param-value>/WEB-INF/Context.xml IWEB-INF/applicationContext.xml<1
param-value>
<context-param>
3 XML 配置文件中導人其他配置文件
配置文件本身和其子元素import. 可用於導入其他配置文件。具體的配置示例如下:
<?xml version="1.0" encod工口g="gb2312"?>
<!一指定Spring 配置文件的dtd>
<!DOCTYPE beans PUBLIC "-IISPR工NGIIDTD BEANIIEN"
''htt p:/ /ww w.springframe work.o rg/dtd/spring-beans.dtd''>
<!-- Spring 配置文件的根元素->
<beans>
<!一導入第→份配置文件: serv工ces.xml一〉
<import resource="serv工ces.xml"l>
<!-- 導入第二份配置文件: resources/messageSource.xml 一〉
<import resource="resources/messageSource.xml"l>
<!-- 導入第二份配置文件: resourcesl themeSource.xml -->
<import resource="/resources/themeSource.xml"l>
<!-- 下面定義該文件墾的其他bean…〉
<bean id="beanl" class=". .."1>
<bean id="bea口2" class="..."I>
</beans>
㈢ 使用xml文件作為配置文件,以下情況如何寫比較簡潔明了
這跟配置文件有什麼關系呢?你是想把這些checked值記錄到配置文件里?
㈣ XML作為配置文件時配置項怎麼組織
首先,兩個Spring配置表示的是兩種不同的Spring事務配置方法,第一種,利用spring配置文件配置事務處理。第二種,利用Java Annotation標注配置事務處理。
第一種方式:
<tx:advice>配置AOP中的通知,你配置文件配置的內容為所以以batch開頭的方法都需要AOP攔截進行事務處理。配置完通知後,需要配置連接點,也就是該通知在哪些代碼中進行攔截。這個配置是通過<aop:pointcut>和<aop:advisor>配置的。<aop:pointcut>配置切入點,你的配置切入點的expression表示在執行j3t10.包中,UserDao這個類中的任何一個方法,參數形式沒有限制,返回值沒有限制的方法都是切入點。
execution(* j3t10..UserDao.*(..))
上面第一個*號表示返回值類型任意。第二個星號表示UserDao類中任意方法。(..)表示方法參數任意。
第二種方法:
在spring配置文件中指定使用annotation標注進行AOP事務攔截。那麼關於事務的配置都使用Annotation @Transactional在類的源代碼中直接標注。
關於配置標注方式事務處理的那個配置文件中上面紅框里是關於XML的一些知識。XML文檔有兩種文檔類型定義方式DTD和Schema。Spring配置文件使用Schema方法聲明文檔格式。Schema約束XML文檔格式的時候需要指明名稱空間和xsd schema文件url。
xmlns:aop="....."用來指定aop作為前綴的標簽的名稱空間。
xsi:schemaLocation="......."指明所有名稱空間對應的xsd文件的url。
也就是你的Spring配置文件中有多少個xxx前綴開始的標簽(例如,你用了<aop:xxx>,<tx:xxx>前綴的標簽)就需要在XML頭部聲明名稱空間並在schemaLocation中指定位置。
㈤ tomcat中的xml文件該如何配置
你看看這個:
tomcat6_apache2.2_ajp負載均衡加集群實戰
環境:
--------------------------------------------
一台apache2.2伺服器,三台tomcat伺服器:
apache2.2伺服器
1.ip:192.168.1.20
2.只裝apache軟體:httpd-2.2.6.tar.bz2
安裝路徑:/usr/local/apache2
tomcat伺服器:均配置相同的應用。
1.集群名:balancer://tomcatcluster
2.三台集群伺服器ip:
IP_1:192.168.1.31
IP_2:192.168.1.32
IP_3:192.168.1.33
3.測試應用程序test文件夾放在tomcat6的webapps目錄下
操作系統均為:centos 4.5_x86
jre:1.6:jdk-6u1-linux-i586-rpm.bin
tomcat6.0:編譯好的二進制軟體包apache-tomcat-6.0.13.tar.gz
tomcat6.0 安裝路徑:/usr/local/tomcat6
oralce的jdbc:class12.jar
軟體包存放的路徑:/home/xiutuo/software/
java安裝路徑:/usr/java/jdk1.6.0_01
使用普通用戶:xiutuo來啟動tomcat6
tomcat6開機自動啟動腳本:/etc/init.d/tomcat
下載路徑:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
一:前言:
1.apache對tomcat集群支持有倆種方式:
a.通過apache2.1之後版本後內置的proxy_ajp。
b.對於apache2.1之版本則通過tomcat的jk2.0.4的mod_jk2.so:
(該版本已經停止開發)
將解壓縮後的目錄中的moles目錄中的mod_jk2.so
文件復制到apache的安裝目錄下的moles目錄中。
********************
倆種方式比較:
proxy_ajp配置較簡單,主要表現在proxy_ajp目前只支持配置到目錄,
還不支持對文件名稱的pattern模式匹配
(即還不能定義到只對jsp文件起作用)。
而jk2則可配置性強,但已經停止開發
********************
官方對ajp和jk2說明:
JK2 has been put in maintainer mode and no further development will take place.
The reason for shutting down JK2 development was the lack of developers interest.
Other reason was lack of users interest in adopting JK2,
caused by configuration complexity when compared to JK.
The latest official JK2 release is 2.0.4.
JK2 will have it's successor within core Apache2.1/2.2 distribution.
We have developed new proxy_ajp that is an addition to the mod_proxy
and uses Tomcat's AJP protocol stack. It is developped in httpd-2.1
and integrated in it. We have also developed a new proxy_balancer
mole for load balancing http and ajp protocol stacks.
JK will be fully supported for all other web servers.
The next JK release is planned for the end of November.
Lots of code from JK2 has been ported to JK
2.tomcat集群方式:
a.DeltaManager
--現在採用的該方式:內部機器集群少採用
b.BackupManager
********************
兩種集群方式官方說明:
using the DeltaManager to replicate session deltas.
By all-to-all we mean that the session gets replicated to
all the other nodes in the cluster. This works great for smaller cluster
but we don't recommend it for larger clusters(a lot of tomcat nodes).
Also when using the delta manager it will replicate to all nodes,
even nodes that don't have the application deployed.
To get around this problem, you'll want to use the BackupManager.
This manager only replicates the session data to one backup node,
and only to nodes that have the application deployed.Downside of
the BackupManager: not quite as battle tested as the delta manager.
********************
3.負載均衡(load-balance)定義:
在伺服器端短時間內獲得大量的請求,單一伺服器無法在一個較短的時間內響應這些請求,
此時伺服器需要一個機制,請求按照多個伺服器不同的負載能力,把這些請求合理的分配。
4.集群(cluster):
在多個伺服器之間共享用戶信息,資源等。
tomcat6_apache2.2負載均衡加集群:高可用性至高體現。
現在的帶集群功能相關軟體oracle10g,mysql5,tomcat等。
二:軟體安裝
1.apache伺服器安裝:
這里主要介紹apache2的源碼安裝
# cd /home/xiutuo/software/
# tar -zvxf httpd-2.2.6.tar.gz
# cd httpd-2.2.6
# mkdir -p /usr/local/apache2
# ./configure \
--prefix=/usr/local/apache2 \
--enable-moles=so \
--enable-mods-shared=all \
--enable-proxy \
--enable-proxy-connect \
--enable-proxy-ftp \
--enable-proxy-http \
--enable-proxy-ajp \
--enable-proxy-balancer
注釋:這里測試用,編譯了所有可用模塊,並激活了tomcat集群需要的
enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp
和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必須依賴proxy,
如果是自定義的編譯除了以上幾個必須的模塊外,mod_status也要編譯進去,切記。
enable-proxy-ftp可以不編譯。
# make
# make install
2. 三台tomcat伺服器安裝
主要介紹jdk1.6u1和tomcat6的安裝,三台機器重復此工作就可以了,
當然記得ip一定要設置正確。
jdk1.6安裝
-------------------------------
a.卸載系統自帶jdk
# rpm -e j2sdk-1.4.1-fcs
b.安裝新jdk
# cd /home/xiutuo/software
進入軟體包存放目錄
# chmod a+x jdk-6u1-linux-i586-rpm.bin
使它有執行許可權
# ./jdk-6u1-linux-i586-rpm.bin
多敲幾個空格,然後看到[yes]的時候輸入yes,回車
然後在當前目錄下就生成了jdk-6u1-linux-i586-rpm
# rpm -ivh jdk-6u1-linux-i586-rpm
c.設置環境變數
僅設置某個用戶而不是所有用戶可以修改~/.cshrc,~/.bash_profile文件,
追加下面一段,如果為所有用戶以及以後添加的用戶都加上環境變數的話,
追加/etc/profie文件.
***主意不要在profile和~/.cshrc或~/.bash_profile中重復追加**
這里:
# vi /etc/profile
//java
//如果你安裝的j2sdk的路徑不一樣,請自行修改
JAVA_HOME=/usr/java/jdk1.6.0_01
export JAVA_HOME
CLASSPATH=/usr/java/jdk1.6.0_01/lib:/usr/java/jdk1.6.0_01/jre/lib
export CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH
JRE=/usr/java/jdk1.6.0_01/jre
export JRE
d:立即生效
//如果你修改的是/etc/profile
# source /etc/profile
//如果你修改的是~/.cshrc
# source ~/.cshrc
//如果你修改的是~/.bash_profile
# source ~/.bash_profile
e:測試成功否
# java -version
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
看到這個消息,就ok啦
----------------------------------------------
tomcat6安裝
tomcat6更詳細的安裝請看blog上tomcat文章
----------------------------------------------
a.安裝tomcat,
# cd /home/xiutuo/software //進入軟體包存放目錄
# tar -zvxf apache-tomcat-6.0.13.tar.gz //解壓
# mv apache-tomcat-6.0.13 /usr/local/tomcat6 //安裝
# cd /usr/local/tomcat6/bin/ //進入安裝目錄
# tar -zvxf jsvc.tar.gz //解壓
# cd jsvc-src //進入jsvc-src目錄
# autoconf
# ./configure --with-java=/usr/java/jdk1.6.0_01
# configure時切記加java的jdk路徑,否則無法使用普通用戶開機自動啟動tomcat
# make //編譯生成jsvc文件
# cp jsvc .. //拷貝jsvc到上級目錄
# cd .. //回到上級目錄
# cd /usr/local/tomcat6/
//運行下面的命令可以使tomcat以daemon方式運行
# ./bin/jsvc -cp ./bin/bootstrap.jar \
-outfile ./logs/catalina.out \
-errfile ./logs/catalina.err \
org.apache.catalina.startup.Bootstrap
b.配置oralce的jdbc
//拷貝oracle的jdbc到/usr/local/tomcat6/lib目錄下
# cp /home/software/class12.jar ./lib/
c.配置tomcat用戶
# cd /usr/local/tomcat6/conf
# vi tomcat-users.xml
內容如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
請修改tomcat里所有定義用戶的密碼:即修改password為自己想要的值。
d.把應用程序文件夾test放到webapps下
3.tomcat負載均衡和集群配置
參考官方配置文檔:
a.tomcat6配置文件server.xml和應用程序的web.xml
**開放負載均衡,默認使用ajp協議時使用8009埠(使用http協議時為8080埠)
**修改tomcat 的 conf/server.xml 的<Engine>(使用ajp協議時配置)
把
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
改成
<!-- You should set jvmRoute to support load-balancing via AJP ie :
-->
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
<!--
<Engine name="Catalina" defaultHost="localhost">
-->
說明:
第一台tomcat就把jvmRoute="tomcat1"
第二台tomcat就把jvmRoute="tomcat2"
第三台tomcat就把jvmRoute="tomcat3"
**開放集群
**修改tomcat 的 conf/server.xml (使用ajp協議時配置)
在<Engine> 後面或者 <Host>後面簡單的加上
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
也可以加上更詳細參數的集群配置內容(這是官方默認,請自行修改相關參數):
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session."/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
***配置應用的web.xml
***在每個webapps應用中,修改配置文件web.xml文件 添加元素<distributable/>
在web.xml文件中<web-app>元素下增加以下內容:
<!--此應用將與群集伺服器復制Session-->
<distributable/>
具體修改如下:
修改前:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns=""
xmlns:xsi=""
xsi:schemaLocation=" "
version="2.5">
</web-app>
修改後:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns=""
xmlns:xsi=""
xsi:schemaLocation=" "
version="2.5">
<!--此應用將與群集伺服器復制Session-->
<distributable/>
</web-app>
4.配置apache的ajp負載均衡功能,這里請務必啟用反向代理。
******************************
至於其中的原理請參考官方文檔說明。
正向代理的典型用途是為在防火牆內的區域網客戶端提供訪問Internet的途徑。
正向代理還可以使用緩沖特性(由mod_cache提供)減少網路使用率。
反向代理的典型用途是將防火牆後面的伺服器提供給Internet用戶訪問。
反向代理還可以為後端的多台伺服器提供負載平衡,或為後端較慢的伺服器提供緩沖服務。
另外,還可以啟用高級URL策略和管理技術,從而使處於不同web伺服器系統的web頁面同時
存在於同一個URL空間下。
*****************************
參考文檔:
tomcat6官方文檔
apache中文版本
apache官方英文版本
***配置apache
***修改/usr/local/apache2/conf/httpd.conf文件
確保將以下Mole的注釋去掉
LoadMole proxy_mole moles/mod_proxy.so
LoadMole proxy_connect_mole moles/mod_proxy_connect.so
LoadMole proxy_ftp_mole moles/mod_proxy_ftp.so
LoadMole proxy_http_mole moles/mod_proxy_http.so
LoadMole proxy_ajp_mole moles/mod_proxy_ajp.so
LoadMole proxy_balancer_mole moles/mod_proxy_balancer.so
LoadMole status_mole moles/mod_status.so
並在最後面,增加
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
ProxyRequests Off
ProxyPass /test balancer://tomcatcluster/ stickysession=jsessionid nofailover=On
<Proxy balancer://tomcatcluster>
BalancerMember ajp://192.168.1.30:8009 loadfactor=1
BalancerMember ajp://192.168.1.31:8009 loadfactor=2
BalancerMember ajp://192.168.1.32:8009 loadfactor=3
</Proxy>
注釋:
ProxyRequests Off 表示啟用反向代理。
ProxyPass為代理轉發的Url,即將所有訪問/的請求轉發到
群集balancer://tomcatcluster,這里為/test即將所有訪問/的請求轉發到群集balancer://tomcatcluster的/test目錄
BalancerMember為群集的成員,
即群集伺服器1或2或3,負載均衡伺服器會根據均衡規則來將請求轉發給BalancerMember。
配置好後,啟動Apahce伺服器,訪問localhost就會看到群集伺服器中應用返回的結果。
訪問,顯示負載均衡有關信息
5.調試負載均衡集群系統
調試前務必:
先開啟三台tomcat6伺服器的tomcat服務!
再開啟apache伺服器的apache服務,切記!
a.開啟tomcat服務
# cd /usr/local/tomcat6/bin
# ./shutdown.sh //停止tomcat
# ./start.sh //啟動tomcat
查看tomcat的進程:
# ps -e | grep java
出現了java這個進程的話,說明你的tomcat起來了。
b.開啟apache服務
# cd /usr/local/apache2/bin
# ./apachectl configtest
//命令檢查一下配置是否有誤,顯示Syntax OK,說明配置正確
# ./apachectl stop //停止apache
# ./apachectl start //啟動apache
6.檢驗是否負載均衡集群系統成功
訪問apache伺服器的web服務
如果顯示負載均衡有關信息則說明成功了。
接著可以訪問即訪問到了tomcat的test應用
7.具體的tomcat集群負載均衡優化請參考文檔自行設置相關參數
具體的apache優化請參考文檔自行設置相關參數
㈥ tomcat server.xml可以配置哪些參數
Tomcat Server的結構圖
該文件描述了如何啟動Tomcat Server
<Server>
<Listener />
<GlobaNamingResources>
</GlobaNamingResources
<Service>
<Connector />
<Engine>
<Logger />
<Realm />
<host>
<Logger />
<Context />
</host>
</Engine>
</Service>
</Server>
元素名
屬性
解釋
server
port
指定一個埠,這個埠負責監聽關閉tomcat的請求
shutdown
指定向埠發送的命令字元串
service
name
指定service的名字
Connector(表示客戶端和service之間的連接)
port
指定伺服器端要創建的埠號,並在這個斷口監聽來自客戶端的請求
minProcessors
伺服器啟動時創建的處理請求的線程數
maxProcessors
最大可以創建的處理請求的線程數
enableLookups
如果為true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其ip地址
redirectPort
指定伺服器正在處理http請求時收到了一個SSL傳輸請求後重定向的埠號
acceptCount
指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理
connectionTimeout
指定超時的時間數(以毫秒為單位)
Engine(表示指定service中的請求處理機,接收和處理來自Connector的請求)
defaultHost
指定預設的處理請求的主機名,它至少與其中的一個host元素的name屬性值是一樣的
Context(表示一個web應用程序,通常為WAR文件,關於WAR的具體信息見servlet規范)
docBase
應用程序的路徑或者是WAR文件存放的路徑
path
表示此web應用程序的url的前綴,這樣請求的url為http://localhost:8080/path/****
reloadable
這個屬性非常重要,如果為true,則tomcat會自動檢測應用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動裝載新的應用程序,我們可以在不重起tomcat的情況下改變應用程序
host(表示一個虛擬主機)
name
指定主機名
appBase
應用程序基本目錄,即存放應用程序的目錄
unpackWARs
如果為true,則tomcat會自動將WAR文件解壓,否則不解壓,直接從WAR文件中運行應用程序
Logger(表示日誌,調試和錯誤信息)
className
指定logger使用的類名,此類必須實現org.apache.catalina.Logger 介面
prefix
指定log文件的前綴
suffix
指定log文件的後綴
timestamp
如果為true,則log文件名中要加入時間,如下例:localhost_log.001-10-04.txt
Realm(表示存放用戶名,密碼及role的資料庫)
className
指定Realm使用的類名,此類必須實現org.apache.catalina.Realm介面
Valve(功能與Logger差不多,其prefix和suffix屬性解釋和Logger 中的一樣)
className
指定Valve使用的類名,如用org.apache.catalina.valves.AccessLogValve類可以記錄應用程序的訪問信息
directory
指定log文件存放的位置
pattern
有兩個值,common方式記錄遠程主機名或ip地址,用戶名,日期,第一行請求的字元串,HTTP響應代碼,發送的位元組數。combined方式比common方式記錄的值更多
<Server>元素
它代表整個容器,是Tomcat實例的頂層元素.由org.apache.catalina.Server介面來定義.它包含一個<Service>元素.並且它不能做為任何元素的子元素.
<!-- 一個「Server」是一個提供完整的JVM的獨立組件,它可以包含一個或多個
「Service」實例。伺服器在指定的埠上監聽shutdown命令。
注意:一個「Server」自身不是一個「Container」(容器),因此在這里你
不可以定義諸如「Valves」或者「Loggers」子組件
-->
<!-- 啟動Server
在埠8005處等待關閉命令
如果接受到"SHUTDOWN"字元串則關閉伺服器
-->
測試:
telnet localhost 8005
輸入:SHUTDOWN
結果:關閉tomcat
<Server port="8005" shutdown="SHUTDOWN" debug="0">
1>className指定實現org.apache.catalina.Server介面的類.默認值為org.apache.catalina.core.StandardServer
2>port指定Tomcat監聽shutdown命令埠.終止伺服器運行時,必須在Tomcat伺服器所在的機器上發出shutdown命令.該屬性是必須的.
3>shutdown指定終止Tomcat伺服器運行時,發給Tomcat伺服器的shutdown監聽埠的字元串.該屬性必須設置
<Service>元素
該元素由org.apache.catalina.Service介面定義,它包含一個<Engine>元素,以及一個或多個<Connector>,這些Connector元素共享用同一個Engine元素
<!-- 一個「Service」是一個或多個共用一個單獨「Container」(容器)的「Connectors」
組合(因此,應用程序在容器中可見)。通常,這個容器是一個「Engine」
(引擎),但這不是必須的。
注意:一個「Service」自身不是一個容器,因此,在這個級別上你不可定義
諸如「Valves」或「Loggers」子組件。
-->
<!-- Tomcat的Standalone Service
Service是一組Connector的集合
它們共用一個Engine來處理所有Connector收到的請求
-->
<Service name="Catalina">
<Service name="Apache">
第一個<Service>處理所有直接由Tomcat伺服器接收的web客戶請求.
第二個<Service>處理所有由Apahce伺服器轉發過來的Web客戶請求 .
1>className 指定實現org.apahce.catalina.Service介面的類.默認為org.apahce.catalina.core.StandardService
2>name定義Service的名字
<Connector>元素
由Connector介面定義.<Connector>元素代表與客戶程序實際交互的給件,它負責接收客戶請求,以及向客戶返回響應結果.
<!-- 一個「Connector」(連接器)代表一個請求被接收和應答所需要的端點。每個連
接器通過相關的「Container」(容器)處理請求。
默認情況下,一個非SSL的HTTP/1.1的連接器被綁定在埠8080。你也可以通過
根據後面的使用說明並取消第二個連接器入口的注釋,在埠8443上建立一個
SSL HTTP/1.1的連接器。開放SSL支持需要下面幾步(參見Tomcat 5文檔中怎樣
配置SSL的說明以取得更多的詳細信息):
* 如果你的JDK是1.3或1.3以前的版本,下載安裝JSSE 1.0.2或以後版本,並放
置JAR文件到「JAVAHOME/jre/lib/ext」目錄下。∗帶一個「changeit」的口令值執行:JAVAHOME/jre/lib/ext」目錄下。∗帶一個「changeit」的口令值執行:JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (UNIX)
來生成它自己的證書私鑰。
默認情況下,當一個web應用程序調用請求時,DNS查詢是可行的。這將對性能造
成一些不利的影響,因此,你可以將「enableLookups」設置為「false」來關閉DNS
查詢。當DNS查詢被關閉時,request.getRemoteHost()將返回包含遠程客戶IP地
址的字元串。
-->
<!-- Coyote HTTP/1.1 Connector
className : 該Connector的實現類是org.apache.coyote.tomcat4.CoyoteConnector
port : 在埠號8080處偵聽來自客戶browser的HTTP1.1請求.如果把8080改成80,則只要輸入 http://localhost/即可
protocol:設定Http協議,默認值為HTTP/1.1
minSpareThreads: 該Connector先創建5個線程等待客戶請求,每個請求由一個線程負責
maxSpareThread:設定在監聽埠的線程的最大數目,這個值也決定了伺服器可以同時響應客戶請求的最大數目.默認值為200
acceptCount : 當現有線程已經達到最大數75時,為客戶請求排隊.當隊列中請求數超過100時,後來的請求返回Connection refused錯誤
redirectport : 當客戶請求是https時,把該請求轉發到埠8443去
enableLookups:如果設為true,表示支持域名解析,可以把IP地址解析為主機名.WEB應用中調用request.getRemoteHost方法返回客戶機主機名.默認值為true
connectionTimeout:定義建立客戶連接超時的時間.如果為-1,表示不限制建立客戶連接的時間
其它屬性略
-->
<Connector port="8080" maxThread="50" minSpareThreads="25" maxSpareThread="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" />
<Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
第一個Connector元素定義了一個HTTP Connector,它通過8080埠接收HTTP請求;第二個Connector元素定義了一個JD Connector,它通過8009埠接收由其它伺服器轉發過來的請求.
<Engine>元素
每個Service元素只能有一個Engine元素.處理在同一個<Service>中所有<Connector>元素接收到的客戶請求.由org.apahce.catalina.Engine介面定義.
<!-- 一個「Engine」(引擎)代表處理每個請求的入口點(在Catalina內)。這個Tomcat
的標准獨立引擎實現分析包含在請求中的HTTP頭信息,並將請求傳送到適當的主機
或虛擬主機上。-->
<!-- Engine用來處理Connector收到的Http請求
它將匹配請求和自己的虛擬主機,並把請求轉交給對應的Host來處理
默認虛擬主機是localhost
-->
<Engine name="Catalina" defaultHost="localhost" debug="0">
1>className指定實現Engine介面的類,默認值為StandardEngine
2>defaultHost指定處理客戶的默認主機名,在<Engine>中的<Host>子元素中必須定義這一主機
3>name定義Engine的名字
在<Engine>可以包含如下元素<Logger>, <Realm>, <Value>, <Host>
<Host>元素
它由Host介面定義.一個Engine元素可以包含多個<Host>元素.每個<Host>的元素定義了一個虛擬主機.它包含了一個或多個Web應用.
<!-- 定義默認的虛擬主機
注意:XML模式確認將不能與Xerces 2.2同工作。
-->
<!-- 虛擬主機localhost
appBase : 指定虛擬主機的目錄,可以指定絕對目錄,也可以指定相對於<CATALINA_HOME>的相對目錄.如果沒有此項,默認為<CATALINA_HOME>/webapps. 它將匹配請求和自己的Context的路徑,並把請求轉交給對應的Context來處理
autoDeploy:如果此項設為true,表示Tomcat服務處於運行狀態時,能夠監測appBase下的文件,如果有新有web應用加入進來,會自運發布這個WEB應用
unpackWARs:如果此項設置為true,表示把WEB應用的WAR文件先展開為開放目錄結構後再運行.如果設為false將直接運行為WAR文件
alias:指定主機別名,可以指定多個別名
deployOnStartup:如果此項設為true,表示Tomcat伺服器啟動時會自動發布appBase目錄下所有的Web應用.如果Web應用中的server.xml沒有相應的<Context>元素,將採用Tomcat默認的Context
-->
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
在<Host>元素中可以包含如下子元素
<Logger>, <Realm>, <Value>, <Context>
<Context>元素
它由Context介面定義.是使用最頻繁的元素.每個<Context>元素代表了運行在虛擬主機上的單個Web應用.一個<Host>可以包含多個<Context>元素.每個web應用有唯一
的一個相對應的Context代表web應用自身.servlet容器為第一個web應用創建一個
<!-- Context,對應於一個Web App
path : 該Context的路徑名是"",故該Context是該Host的默認Context
docBase : 該Context的根目錄是webapps/mycontext/
reloadable:如果這個屬性設為true, Tomcat伺服器在運行狀態下會監視在WEB-INF/classes和Web-INF/lib目錄CLASS文件的改運.如果監視到有class文件被更新,伺服器自重新載入Web應用
useNaming:指定是否支持JNDI,默認值為了true
cookies指定是否通過Cookies來支持Session,默認值為true
-->
<Context path="" docBase="mycontext" debug="0"/>
㈦ 看到這樣一句話:在一個xml里配置一個軟體,比如配置進程名、注冊表等信息。這是什麼意思呢
我想一句話也說不清楚,還是介紹一個網站你慢慢看,上面圖文並茂從概念到使用方法,講解的通俗易懂:
什麼是注冊表?
注冊表因為它復雜的結構和沒有任何聯系的CLSID鍵使得它可能看上去很神秘。不幸的是,微軟並沒有完全公開講述關於注冊表正確設置的支持信息,這樣使得注冊表看上去更不可琢磨。處理和編輯注冊表如同「黑色藝術」一樣,它在系統中的設置讓用戶感覺象在黑暗中摸索一樣找不到感覺。這樣,因為用戶對這方面的缺乏了解使得注冊表更多的出現故障。
Windows注冊表是幫助Windows控制硬體、軟體、用戶環境和Windows界面的一套數據文件,注冊表包含在Windows目錄下兩個文件system.dat和user.dat里,還有它們的備份system.da0和user.da0。通過Windows目錄下的regedit.exe程序可以存取注冊表資料庫。在以前,在windows的更早版本(在win95以前),這些功能是靠win.ini,system.ini和其他和應用程序有關聯的.ini文件來實現的.
在windows操作系統家族中,system.ini和win.ini這兩個文件包含了操作系統所有的控制功能和應用程序的信息,system.ini管理計算機硬體而win.ini管理桌面和應用程序。所有驅動、字體、設置和參數會保存在.ini文件中,任何新程序都會被記錄在.ini文件中。這些記錄會在程序代碼中被引用。因為受win.ini和system.ini文件大小的限制,程序員添加輔助的.INI文件以用來控制更多的應用程序。舉例來說,微軟的Excel有一個excel.ini文件,它包含著選項、設置、預設參數和其他關繫到Excel運行正常的信息。在system.ini和win.ini中只需要指出excel.ini的路徑和文件名即可。
最開始,system.ini和win.ini控制著所有windows和應用程序的特徵和存取方法,它在少數的用戶和少數應用程序的環境中工作的很好。隨著應用程序的數量和復雜性越來越大,則需要在.ini文件中添加更多的參數項。這樣下來,在一個變化的環境中,在應用程序安裝到系統中後,每個人都會更改.ini文件。然而,沒有一個人在刪除應用程序後刪除.ini文件中的相關設置,所以system.ini和win.ini這個兩個文件會變的越來越大。每增加的內容會導致系統性能越來越慢。而且每次應用程序的升級都出現這樣的難題:升級會增加更多的參數項但是從來不去掉舊的設置。而且還有一個明顯的問題,一個.ini文件的最大尺寸是64KB。為了解決這個問題,軟體商自己開始支持自己的.ini文件,然後指向特定的ini文件如win.ini和system.ini文件。這樣下來多個.ini文件影響了系統正常的存取級別設置。如果一個應用程序的.ini文件和WIN.INI文件設置起沖突,究竟是誰的優先順序更高呢?
注冊表最初被設計為一個應用程序的數據文件相關參考文件,最後擴展成對於32位操作系統和應用程序包括了所有功能下的東東.注冊表是一套控制操作系統外表和如何響應外來事件工作的文件。這些「事件」的范圍從直接存取一個硬體設備到介面如何響應特定用戶到應用程序如何運行等等。注冊表因為它的目的和性質變的很復雜,它被設計為專門為32位應用程序工作,文件的大小被限制在大約40MB。
注冊表都做些什麼?
注冊表是為Windows NT和Windows95中所有32位硬體/驅動和32位應用程序設計的數據文件。16位驅動在Winnt下無法工作,所以所有設備都通過注冊表來控制,一般這些是通過BIOS來控制的。在Win95下,16位驅動會繼續以實模式方式設備工作,它們使用system.ini來控制。16位應用程序會工作在NT或者Win95 下,它們的程序仍然會參考win.ini和system.ini文件獲得信息和控制。
在沒有注冊表的情況下,操作系統不會獲得必須的信息來運行和控制附屬的設備和應用程序及正確響應用戶的輸入。
在系統中注冊表是一個記錄32位驅動的設置和位置的資料庫。當操作系統需要存取硬體設備,它使用驅動程序,甚至設備是一個BIOS支持的設備。無BIOS支持設備安裝時必須需要驅動,這個驅動是獨立於操作系統的,但是操作系統需要知道從哪裡找到它們,文件名、版本號、其他設置和信息,沒有注冊表對設備的記錄,它們就不能被使用。
當一個用戶准備運行一個應用程序,注冊表提供應用程序信息給操作系統,這樣應用程序可以被找到,正確數據文件的位置被規定,其他設置也都可以被使用。
注冊表保存關於預設數據和輔助文件的位置信息、菜單、按鈕條、窗口狀態和其他可選項。它同樣也保存了安裝信息(比如說日期),安裝軟體的用戶,軟體版本號和日期,序列號等。根據安裝軟體的不同,它包括的信息也不同。
然而,一般來說,注冊表控制所有32位應用程序和驅動,控制的方法是基於用戶和計算機的,而不依賴於應用程序或驅動,每個注冊表的參數項控制了一個用戶的功能或者計算機功能。用戶功能可能包括了桌面外觀和用戶目錄。所以,計算機功能和安裝的硬體和軟體有關,對所以用戶來說項都是公用的。
有些程序功能對用戶有影響,有些時作用於計算機而不是為個人設置的,同樣的,驅動可能是用戶指定的,但在很多時候,它們在計算機中是通用的。
注冊表控制用戶模式的例子有:
控制面板功能;
桌面外觀和圖標;
網路參數;
瀏覽器功能性和特徵;
那些功能中的某些是和用戶無關的,有些是針對用戶的。
計算機相關控制項基於計算機名,和登陸用戶無關。控制類型的例子是安裝一個應用程序,不管是哪個用戶,程序的可用性和存取是不變的,然而,運行程序圖標依賴於網路上登陸的用戶。網路協議可用性和優先權基於計算機,但是當前連接和用戶信息相關。
這里是在注冊表中基與計算機控制條目的一些例子:
存取控制;
登陸確認;
文件和列印機共享;
網卡設置和協議;
系統性能和虛擬內存設置;
沒有了注冊表,Win95和Winnt 就不太可能存在。它們實在太復雜了,以致於用過去的.ini文件無法控制,它們的擴展能力需要幾乎無限制的安裝和使用應用程序,注冊表實現了它。然而,注冊表比.ini文件更復雜,理解它如何工作,它做什麼和如何用它來做是有效管理系統的關鍵。
在系統中注冊表控制所有32位應用程序和它們的功能及多個應用程序的交互,比如復制和粘貼,它也控制所有的硬體和驅動程序。雖然多數可以通過控制面板來安裝和設置,理解注冊表仍是做Winnt和Win95系統管理基本常識。
二、注冊表的結構
注冊表的結構
注冊表是Windows程序員建造的一個復雜的信息資料庫,它是多層次式的。在不同系統上注冊表的基本結構相同。其中的復雜數據會在不同方式上結合,從而產生出一個絕對唯一的注冊表。
計算機配置和預設用戶設置的注冊表數據在Winnt中被保存在下面這五個文件中:
DEFAULT,SAM,SECURITY,SOFTWARE,SYSTEM,NTUSER.DAT。
Win95中所有系統注冊信息保存在windows目錄下的SYSTEM.DAT文件里。所有硬體設置和軟體信息也保存在這個文件。它要比NT注冊表文件簡單的多,因為這里並不需要更多的控制。Win95被設計為一個網路的客戶或者單獨工作的系統,所以用戶控制或者安全級別和NT不一樣。這使得Win95注冊表工作比NT更容易,所以這個文件也比較小。
Win95用戶的注冊數據一般被保存在windows目錄下的user.dat里。如果你在控制面板|密碼|用戶配置文件中創建並使用多於一個用戶的配置文件,每個用戶就會有在\WINDOWS\Profiles\username\USER.DAT下它自己的user.dat文件。在啟動時,系統將記錄你的登陸,從你目錄中的配置文件(USER.DAT信息)將被裝入,以用來保持你自己的桌面和圖標。
控制鍵
在注冊表編輯器中注冊表項是用控制鍵來顯示或者編輯的。控制鍵使得找到和編輯信息項組更容易。因此,注冊表使用這些條目。下面是六個控制鍵
HKEY_LOCAL_MACHINE
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA
HKEY_USERS
HKEY_CURRENT_USER
Winnt和Win95的注冊表並不兼容。從Win95向Winnt升級需要你重新安裝32位應用程序,重新在桌面上創建圖標,並重新建立用戶環境。
通過控制鍵可以比較容易編輯注冊表。雖然它們顯示和編輯好象獨立的鍵,其實HKEY_CLASSES_ROOT 和HKEY_CURRENT_CONFIG是 HKEY_LOCAL_MACHINE的一部分。HKEY_CURRENT_USER是HKEY_USERS的一部分。
HKEY_LOCAL_MACHINE包含了HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG的所有內容。每次計算機啟動時,HKEY_CURRENT_CONFIG和HKEY_CLASSES_ROOT的信息被映射用以查看和編輯。
HKEY_CLASSES_ROOT其實就是HKEY_LOCAL_MACHINE\SOFTWARE\Classes,但是在HKEY_CLASSES_ROOT窗編輯相對來說顯得更容易和有條理。
HKEY_USERS保存著預設用戶信息和當前登陸用戶信息。當一個域成員計算機啟動並且一個用戶登陸,域控制器自動將信息發送到HKEY_CURRENT_USER里,而且HKEY_CURRENT_USER信息被映射到系統內存中。其他用戶的信息並不發送到系統,而是記錄在域控制器里。
鍵和子鍵
數據被分割成多層次的鍵和子鍵,建立分層次(就象Exploer一樣)結構更易於編輯。每個鍵有成組的信息而且根據在其中的數據類型被命名。每個鍵在它的文件夾圖標上都有一個加號(+)標志子鍵說明在它下面還有更多內容的東西。當點開它的時候,文件夾的加號標志被替換成一個減號(-)標志,然後顯示出下一級的子鍵。
所有軟體,硬體,windows工作的設置都存放在HKEY_LOCAL_MACHINE。所有安全策略,用戶許可權和共享信息也包括在這個鍵中。用戶許可權,安全策略,共享信息可以通過Windows NT域用戶管理器,Explorer和Win95中控制面板來設置。
HKEY_CLASSES_ROOT
HKEY_CLASSES_ROOT包含了所有應用程序運行時必需的信息:
在文件和應用程序之間所有的擴展名和關聯;
所有的驅動程序名稱;
類的ID數字(所要存取項的名字用數字來代替);
DDE和OLE的信息;
用於應用程序和文件的圖標;
HKEY_CURRENT_CONFIG.
HKEY_CURRENT_CONFIG是在HKEY_LOCAL_MACHINE中當前硬體配置信息的映射。如果系統只有一個配置文件,也就是原始配置,數據將一直在同樣的地方。在控制面板|系統|硬體配置文件|創建一個額外的配置使額外配置信息放入HKEY_LOCAL_MACHINE。當Win95中存在多個配置文件時,當每次計算機啟動時將給出一個提示讓你選擇一個配置文件。在Winnt中,在啟動時你可以按空格鍵來選擇上次正常啟動時硬體配置文件。根據硬體配置文件選擇的不同,特定的信息被映射到HKEY_CURRENT_CONFIG。
HKEY_DYN_DATA
HKEY_DYN_DATA和其他的注冊表控制鍵不同,因為實際上它並不被寫入硬碟驅動器中。Win95的一個優點是,在系統啟動時HKEY_DYN_DATA這個控制鍵儲存收集到的即插即用信息並配置它們。它保存在內存中,Win95用它來控制硬體。因為是在內存中,所以它不從硬碟中讀取,每次當你啟動計算機時,配置都有可能會不一樣。在啟動時Win95必須計算超過1600種可能的配置。所以,如果系統改變既定的設置而沒有報告給Win95那麼潛在的問題就可能發生。系統大多數時間工作良好,但是並非一直如此。
HKEY_USERS
HKEY_USERS僅包含了預設用戶設置和登陸用戶的信息。雖然它包含了所有獨立用戶的設置,但在用戶未登陸網路時用戶的設置是不可用的。這些設置告訴系統哪些圖標會被使用,什麼組可用,哪個開始菜單可用,哪些顏色和字體可用,和控制面板上什麼選項和設置可用。
HKEY_CURRENT_USER
用來保存當前用戶和預設用戶的信息,HKEY_CURRENT_USER僅映射當前登陸用戶的信息。
各主鍵的簡單介紹
HKEY_LOCAL_MACHINE
HKEY_LOCAL_MACHINE是一個顯示控制系統和軟體的處理鍵。HKLM鍵保存著計算機的系統信息。它包括網路和硬體上所有的軟體設置。(比如文件的位置,注冊和未注冊的狀態,版本號等等)這些設置和用戶無關,因為這些設置是針對使用這個系統的所有用戶的。
HKEY_LOCAL_MACHINE\AppEvents
為了以後在瘦客戶機上運行客戶機/伺服器這樣的應用程序,在Win95/98中AppEvents鍵是空的。應用程序實際上都駐留網路伺服器上,這些鍵會保存部分指針。
HKEY_LOCAL_MACHINE\Config
這個鍵保存著你計算機上所有不同的硬體設置(這些從控制面板的系統屬性中硬體配置文件中可以創建)。這些配置在啟動時通常被復制到HKCC。每個配置會被用一個鍵(比如0001或者0002等等)來保存,每個都是一個獨立的配置。如果你只有一個單一的配置,那就只會有0001這個鍵
HKEY_LOCAL_MACHINE\Config\0001\Display
這個鍵表示顯示的設置,如熒屏字體,窗體大小,窗體位置和解析度等
一個小技巧:當設置了計算機不支持的大解析度導致Windows不能啟動時(黑屏),可以修改解析度來解決。進入安全模式,運行regedit.exe,在這個鍵的Resolution鍵值中把數據值修改為640,480或者800,600這樣的低解析度,然後重新啟動計算機即可。
HKEY_LOCAL_MACHINE\Config\0001\System
這個鍵保存著系統里列印機的信息
HKEY_LOCAL_MACHINE\Config\0001\System\CurrentControlSet\Control\Print\Printers
在這個鍵下面,有一個鍵是為系統上每一個列印機設置的,通過控制面板添加和刪除列印機會調整這個列表
HKEY_LOCAL_MACHINE\Enum
Enum鍵包含啟動時發現的硬體設備和那些既插即用卡的信息。Win95使用匯流排列舉在啟動時通過不同的.ini文件來檢測硬體信息。那些在啟動時被安裝的和被檢測到的硬體會顯示在這里。子鍵包括BIOS, ESDI, FLOP, HTREE, ISAPNP, Monitor, Network, Root, SCSI, 和 VIRTUAL。子鍵名表示它們各自的硬體設備信息。
HKEY_LOCAL_MACHINE\Enum\BIOS
BIOS鍵保存著系統中所有即插即用設備的信息。它們用一套代碼數列出,包括每一個鍵的詳細說明,舉例,*pnp0400是並行口LPT1的鍵。如果LPT1並不具備即插即用功能,它就會別列入到Enum下的Root鍵中
HKEY_LOCAL_MACHINE\Enum\Root
Root鍵包括所有非即插即用設備的信息。在這里,我們可以迅速斷定哪些設備是即插即用,那些不是。比如SCSI適配器,這個設備必須符合Win95中一個鍵名為ForcedConfig的硬體設置,這個不會改變。
HKEY_LOCAL_MACHINE\Enum\Network
win95的網路功能在這個鍵有詳細說明,子鍵包括了每個已經安裝的主要的服務和協議。
HKEY_LOCAL_MACHINE\HARDWARE
hardware子鍵包括了兩個多層的子鍵:DESCRIPTION鍵,它包含了中央處理器和一個浮點處理器的信息。還有一個設備映射鍵,它下面的串列鍵列出你所有的com埠。這個hardware鍵僅保存超級終端程序的信息,及數學處理器和串列口。
HKEY_LOCAL_MACHINE\Network
這個鍵僅保存網路登陸信息。所有網路服務細節都保存在HKEY_LOCAL_MACHINE\Enum\Network這個鍵中。這個鍵有一個子鍵,logon,包括了lmlogon(本地機器登陸?0=false 1=true)的值,logonvalidated(必須登陸驗證),策略處理,主登陸方式(Windows登陸 ,微軟網路客戶方式等),用戶名和用戶配置。
HKEY_LOCAL_MACHINE\SECURITY
security 有兩個子鍵,第一個是存取(它最終致使一個遠程鍵列出網路安全資源,存取許可權等)和提供(包括列出網路地址和地址伺服器),這個鍵被保留用在以後使用高級安全功能和NT兼容性上
HKEY_LOCAL_MACHINE\SOFTWARE
這個鍵列出了所有已安裝的32位軟體和程序的.ini文件。它包括了變化,依靠軟體安裝。那些程序的控制功能在這里的子鍵中列出。多數子鍵簡單的列出了安裝軟體的版本號。
我們在\Microsoft\Windows\Current Version下發現了一些有意思的設置,它有如下子鍵:
1.App paths: 你曾經安裝過的所有32位軟體的位置。
2.Applets, Compression, Controls Folder : 包括下控制面板象顯示屬性那樣屬性條的附件。
3.Detect, explorer :很多有意思的子鍵如Namespace keys of Desktop和My Computer----它們指出了回收站和撥號網路的CLSID行----和提示子鍵可以讓你建立自己的提示。
4.Extensions : 一個擴展聯系的列表,當前相關聯的擴展名和比特定的執行文件更適合的目標類型。
5.Fonts, fontsize, FS Templates :系統屬性條中所選擇文件系統模板, 伺服器,桌面計算機或者筆記本電腦信息。
6.MS-DOS Emulation :包括一個應用程序兼容子鍵 為大量過時的程序二進制鍵所設。
7.MS-DOS Options :在dos模式下的設置,如himem.sys,cd-roms等。
8.Network :網路驅動的配置。
9.Nls, Policies :系統管理員認為你不應該去做的事。
10.ProfileList :所有可以登陸你計算機的用戶名列表。
11.在Windows啟動時運行的程序的神秘之處是它們並不在開始菜單的啟動文件夾中。它們在HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\下的子鍵中被執行。
Run : 程序在啟動時運行
RunOnce : windows初始化時程序在啟動時只運行一次,這個經常用在當安裝軟體之後需要重新啟動系統的時候,所以這個鍵一般都是空的。
RunServices : 它就象Run一樣,但是包含了「服務」,它不象一般的程序它們是比較重要的或者是「系統」程序。但是它們不是VXDs,就象McAfee或者RegServ工作一樣。
RunServicesOnce : 它只運行一次,但是是「系統自身」的安裝(大量的windows安裝參數:通常鍵值包括了系統目錄位置,和win95更新,可選項安裝組件,和windows啟動目錄的子鍵。
注意:在很多黑客木馬軟體中,常常在這里添加鍵值(一般是在Run中),這樣使得木馬軟體可以隨著windows啟動而啟動並且很隱秘。在這里可以查看不正常的啟動項和去掉無用的運行程序(比如我就很不喜歡超級解霸的自動伺服器,在這里可以去掉它)。
12.SharedDLLs:共享DLL的列表,每一個都給出了在一個不可知系統的一個數字等級。
13.Shell Extensions:列出了「被認可的」OLE注冊條,和相應的CLSID連接。
14.ShellScrap :這個包含了一個PriorityCacheformats的子鍵,它包括了一個空的有限值,它更象過去SmartDrive命令行參數的派生。
15.Time Zones : 主鍵值是你現在的時區;子鍵定義了所以可能的時區。
16.Uninstall:這個保存了程序在添加/刪除程序對話框的顯示;子鍵包含了指向反安裝程序的路徑。和安裝向導相似.......)winlogon(包含了合法登陸布告的文本句)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
這個子鍵包括設備驅動和其他服務的描述和控制。不同於windows nt,win95隻包括限制驅動的控制設置信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
這個子鍵包括了win95控制面板中的信息。不要編輯這些信息,因為一些小程序的改變在很多地方,一個丟失的項會使這個系統變的不穩定
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
這個鍵包括了所有win95的標准服務。所有被添加的服務和設備,每個標準的服務鍵包括了它的設置和辨認設置。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Arbitrators
atbitrators鍵包括了當兩個設備共同佔用同樣的設置需要解決的信息。四個子鍵包括了內存地址,沖突,DMA,I/O埠沖突和IRQ沖突。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Class
class鍵包括了所有win95支持的設備classes控制,這些和你在添加新硬體出現的硬體組很類似,還包括了這些設備如何安裝的信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\inetaccs
這個鍵包括了關於這個系統變化的ie附件的可用性,它僅在你安裝過ie2。0或者更高版本才出現。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSNP32
msnp32描述了客戶機如何在microsoft網路中實現功能,它包括了認證過程和認證者的信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NWNP32
nenp32鍵描述了windows客戶如何在netware網路中工作功能,它包括了關於認證過程和證明者的信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RemoteAccess
在這個鍵里包括需要遠程工作在win95系統上的信息,有認證參數,主機信息,和為了建立一個撥號連接工作的協議信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP
這個鍵包括了所以snmp(簡單網路管理協議)的參數。它包括了允許的管理,配置陷阱,和有效的團體。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD
vxd鍵包括了win95中所有32位虛擬設備驅動信息,win95自動管理它們,所以不必要用注冊表編輯器編輯它們,所以的靜態vxds用子鍵列出。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebPost
webpost鍵包括了所有裝載的internet郵局的設置,如果你連接一個isp,並且它列出載這里,你應該給自己選則一個伺服器。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Winsock
這個鍵列出了當連接到internet上winnsock文件的信息,如果列出了不正確的文件,你將不會連接上internet。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinTrust
wintrust功能是檢查從Internet上下載來的文件是否有病毒,它可以確保你得到干凈安全的文件。
HKEY_CLASSES_ROOT
在注冊表中HKEY_CLASSES_ROOT是系統中控制所有數據文件的項。這個在Win95和Winnt中是相通的。HKEY_CLASSES_ROOT控制鍵包括了所有文件擴展和所有和執行文件相關的文件。它同樣也決定了當一個文件被雙擊時起反應的相關應用程序。
HKEY_CLASSES_ROOT被用作程序員在安裝軟體時方便的發送信息,在Win95和Winnt中,HKEY_CLASSES_ROOT和HKEY_LOCAL_MACHINE\Software\Classes是相同的。程序員在運行他們的啟動程序時不需要擔憂實際的位置,相反的,他們只需要在HKEY_CLASSES_ROOT中加入數據就可以了。
在Windows用戶圖形界面下,每件事----每個文件,每個目錄,每個小程序,每個連接,每個驅動---都被看做一個對象;每個對象都有確定的屬性和它聯系。HKCR包含著對象類型和它們屬性的列表。HKCR主要的功能被設置為:
一個對象類型和一個文件擴展名關聯
一個對象類型和一種圖標關聯
一個對象類型和一個命令行動作的關聯
定義對象類型相關菜單選項和定義每一個對象類型屬性選項
在Win95中,相關菜單就是當你滑鼠右擊一個對象時所彈出的菜單;屬性就是當你選擇屬性項後一個展開的對話框。用簡單術語來說就是在改變HKCR中的設置可以改變一個給定文件擴展名預設的關聯。改變一個文件類型的預設圖標,和添加或者刪除給定對象類型的彈出菜單內容(或者所有的對象類型)
HKCR包括了三種基本類型的子鍵
\??? 或者文件擴展名子鍵
文件擴展名子鍵在彈出菜單上連接文件擴展名到對象類型和相關操作,屬性項,和相關操作。
\object 類型子鍵
對象類型子鍵定義了一個對象類型在它預設圖標的項,它的彈出菜單和屬性項,它的相關操作和它的CLSID連接。
\CLSID 子鍵
在Windows下每件事都被用一個數字取代它的名字來對待。就象人往往是用名字來處理事情一樣。CLSID是標識所有列出的圖標,應用程序,目錄,文件類型等等對象的數字。是微軟為製造商分配的,每一個都必須是唯一的。製造商將CLSID放入安裝程序文件這樣就可以在安裝時更新注冊表。
注冊表是應用程序進行時它們需要關於做什麼的指示的資料庫。比如說,假定你有一個微軟Excel 7電子數據表的Word 7文檔,當你在Word中雙擊這個電子數據表,應用程序菜單就會變成Excel的菜單而且電子數據表進入編輯狀態,就好象你在Excel中一樣。它是如何知道該做什麼呢?每個Excel 7創建的文件都有Excel的CLSID連接。Word讀這個CLSID後,到注冊表中尋找指示,依賴CLSID下的數據運行.DLL文件或者應用程序。
CLSID子鍵為對象類型提供了OLE和DDE信息和圖標。相關菜單,或者包含在它子鍵中的屬性項信息。這個可能是多數讓人看到後覺得「恐怖」的鍵。每個CLSID數必須是唯一的,實際上,為了這個目的微軟已經出產了CLSID-產生程序--這個結果導致你往往得到32位16進制的數字串,除非你是程序員,否則多數部分鍵看起來是很枯燥的。它們包括內存管理模式,客戶機/伺服器配置,和OLE處理的.dll連接。
關於子鍵的一點註解
1)shell:Shell鍵有個一」action「子鍵,如同」open「一樣,這里有一個command子鍵;command子鍵有一個預設句值,它包含了運行程序的命令行。將一個」open「子鍵放在一個對象類型的shell子鍵中會在這個對象類型的彈出菜單上多出一個」open「選項,給這個open子鍵一個command(預設命令行"C:\Windows \Notepad.exe %1")子鍵會使得打開這個對象類型時使用筆記本做為預設應用程序。其他操作選項包括View,Print,Copy,Virus,Scan等等。
2)shellex:Shellex鍵有一個子鍵。它們包含的每一個子鍵指向一個為對象類型執行OLE和DDE功能的CLSID項(比如說快速查看,一個菜單處理子鍵下指向一個有句值的CLSID鍵列出了包含了文件瀏覽功能的.dll文件)
3)shellnew:ShellNew包含了一個「command」句,它包含了一個打開對象類型「新」文件的命令行。
4)DefaultIcon:DefaultIcon子鍵包含了一個「default」句
㈧ java web中怎麼使用web.xml配置文件
如果是要取出全部的值.建議解析WEB.XML然後取值.如果是取某個特定的值可以用下面的: web.xml裡面可以定義兩種參數: (1)application范圍內的參數,存放在servletcontext中,在web.xml中配置如下:xml 代碼 context/param avalible ring applic