




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
可修改歡迎下載精品Word可修改歡迎下載精品Word可修改歡迎下載精品WordRedHatLinux網(wǎng)絡(luò)效勞器構(gòu)架實(shí)務(wù)20**-02-0617:14:00·趙鳳君·Yesky前言
這里我將說明本文檔的書寫動(dòng)機(jī)、配置目標(biāo)、主要內(nèi)容、遵循原那么和使用說明。我主要的從事領(lǐng)域是網(wǎng)絡(luò)開發(fā),主要采用的技術(shù)方案是FreeBSD/Linux+MySQL/Oracle+JavaBean/EJB+Jsp,也就是所說的四層結(jié)構(gòu)〔也有人認(rèn)為是三層結(jié)構(gòu),但在J2EE中添加了界面層的概念〕。工程開發(fā)過程中,常常需要進(jìn)行效勞器的構(gòu)架,每次配置完畢我都會(huì)寫一份簡單的配置文檔作為工程技術(shù)文檔的一局部。這份文檔是我一次次配置的結(jié)晶,我將構(gòu)建網(wǎng)路效勞器常用的局部寫進(jìn)了本文檔,其一可以作為初學(xué)者的安裝向?qū)?,其二也可以聽取大家的意見和建議,使之更加嚴(yán)謹(jǐn)和完善。本文檔的目標(biāo)是構(gòu)架一個(gè)比較標(biāo)準(zhǔn)的RedHat開發(fā)效勞器作為工程的開發(fā)環(huán)境。本文檔當(dāng)前共十七個(gè)步驟,簡明而全面的介紹了DNS、FTP、MySQL、Apache、JVM、Resin、PHP等效勞器的配置方法。下面是我書寫本文檔所遵循的幾個(gè)原那么:1、力求簡明:去除任何多余的步驟;讓命令說話,只加必要的注釋,這樣方便大家作為配置清單使用。本文檔主要告訴讀者如何去做,很少說明為什么這樣做〔這一點(diǎn)在本版本中有所改善〕,但需要注意的是,如果您忽略了其中的任何一步都可能導(dǎo)致后面出錯(cuò);2、系統(tǒng)全面:步驟貫穿從安裝操作系統(tǒng)到配置完成的全過程,初學(xué)者一步一步照做即可;效勞器的配置是一個(gè)系統(tǒng)的過程,很多說明文檔只是說明某幾個(gè)軟件的配置方法,沒有統(tǒng)籌兼顧,所以照搬往往失??;3、力求嚴(yán)謹(jǐn):這是我的一個(gè)目標(biāo),也是我發(fā)布原因之一,當(dāng)然這需要大家的檢驗(yàn)才能實(shí)現(xiàn);4、保持最新:包括操作系統(tǒng)在內(nèi),所有的軟件都是截止到文檔發(fā)布日的最新版本,如果有新的軟件版本出現(xiàn),我也會(huì)努力做到及時(shí)更新;5、精選軟件:文中提及的軟件都是大家所熟悉的,只有兩個(gè)需要說明。其一:為什么不選擇FreeBSD而用Redhat?FreeBSD可謂是Intel平臺(tái)上最好的網(wǎng)絡(luò)操作系統(tǒng),但它對(duì)JAVA〔尤其是新版本的JDK〕的支持很差,我曾在較長一段時(shí)間內(nèi)采用FreeBSD作為JAVA開發(fā)平臺(tái),然而由于SUN并沒有發(fā)布FreeBSD上的JDK,所以經(jīng)常造成系統(tǒng)崩潰,已經(jīng)是屢次的經(jīng)歷了;為什么不用Tomcat而使用Resin?雖然Tomcat是Apache組織的一個(gè)工程,雖然它也在不斷完善起來,但較之Resin還是有一定的差距;Resin在中文支持、執(zhí)行效率、可定制性、升級(jí)速度、支持J2EE等方面都有不俗的表現(xiàn),也是我個(gè)人已經(jīng)體會(huì)到的;雖然我疑心它在高端應(yīng)用、系統(tǒng)負(fù)載等方面的性能,但應(yīng)付中小型的Web工程方面應(yīng)該是綽綽有余的;6、側(cè)重JSP:以搭建JSP開發(fā)環(huán)境為主,可以作為JSP初學(xué)者的效勞器配置手冊(cè):其一:RH7.2增強(qiáng)了多語言的支持,如果你在安裝的過程中選擇語言時(shí)選擇了i18n的簡體中文包,加上Resin對(duì)中文的良好支持,你無需聲明Content-Type〔任何方式的聲明都不需要〕,中文將自動(dòng)支持,這一點(diǎn)文檔中也已說明;其二:提供了Resin連接池的配置方法和調(diào)用方法,并提供了一個(gè)用于數(shù)據(jù)庫連接和處理的組件;其三:提供了添加一個(gè)JSP虛擬主機(jī)的詳細(xì)方法,從DNSE到Resin全面講述;其四:指出了JDBC2.0的支持方法,并提供代碼進(jìn)行測(cè)試;7、編譯安裝:軟件全部編譯安裝,有益于系統(tǒng)可定制性和系統(tǒng)穩(wěn)定性;8、目標(biāo)讀者:Linux初學(xué)者的配置向?qū)Ш椭懈呒?jí)讀者的參考;9、配置目標(biāo):本文檔當(dāng)前最適合作為企業(yè)內(nèi)部開發(fā)效勞器的配置手冊(cè),如果作為Internet效勞器,需要考慮的平安因素還很多,最起碼不能全部安裝,也不需要安裝Xserver,Internet效勞器不僅需要我文檔中提及的功能,更需要一個(gè)簡潔平安的系統(tǒng);10、功能清晰:我將效勞器定位在一個(gè)DNS+p構(gòu)架的Web開發(fā)效勞器,而將可有可無的效勞去掉。所以,文檔中沒有提及QMAIL、ORACLE和ASP、FrontPage擴(kuò)展等配置方法。除了功能的別離和讀者的需求之外,Oracle的最正確運(yùn)行平臺(tái)是SUSELinux,ASP的最正確運(yùn)行平臺(tái)是NT,至于Qmail,后續(xù)版本可以增加進(jìn)去;以下是本文檔的使用說明:1、顏色說明:
深藍(lán)色:在原文文檔中修改的或者添加的局部
深綠色:我的注釋
2、符號(hào)說明
#:系統(tǒng)或者軟件配置文檔中原有的注釋;
##:我為隨后段落做的說明
//:我的行末說明
/*…*/:篇幅較長的說明
3、命令說明:我習(xí)慣使用vi來表示編輯一個(gè)文件,如果不喜歡使用這個(gè)工具,你完全可以使用AdvancedEditor之類的可視化編輯器或者mc等其他命令。偶爾我會(huì)在命令之前加上shell>表示這是一個(gè)命令,以與文件內(nèi)容區(qū)別開來,但這個(gè)版本是中文的,所以我一般不加該符號(hào)。make和makeinstall是可以使用make;makeinstall替代的,但為了便于查看每一步的提示信息,建議分開執(zhí)行。./在文中很多地方出現(xiàn),中間沒有空格,而且點(diǎn)號(hào)也不明顯,需要注意。軟件列表下載下面的軟件并將它們放到/home/src目錄。首先要?jiǎng)?chuàng)立一個(gè)系統(tǒng)帳戶,然后將軟件放到該目錄下。下面的軟件都將在本文檔中用到,下面的連接都是截止到01/18/2002的最新版本:RedHat7.2
j2sdk-1_3_1_01-linux-i386.bin
jaf1_0_1.zip
javamail1_1_3.zip
z
配置步驟Step1RedHat7.2install我的建議:1、安裝時(shí)為/home建立單獨(dú)的分區(qū),因?yàn)椋痟ome是用戶數(shù)據(jù)的存放之地,本文檔中也將軟件的安裝文件都放到這個(gè)目錄下,所以,這樣做當(dāng)你下次重新安裝系統(tǒng)的時(shí)候,可以保存該分區(qū),數(shù)據(jù)也就得以保全;
2、采用定制安裝的方式并選中'Everything'選項(xiàng),這樣特別適合于初學(xué)者,否那么后面的安裝過程中可能會(huì)出現(xiàn)找不到某個(gè)包或某個(gè)命令的情況;但如果是配置Internet效勞器,就應(yīng)該只選擇必需的包,做到盡量的精簡才夠平安;
3、選擇語言時(shí),建議選中simplifiedchinese〔A〕選項(xiàng),這樣,當(dāng)你配置好效勞器的時(shí)候,在程序代碼中無需任何聲明,中文將被支持而不會(huì)亂碼;
4、使用Gnome做為登陸管理器,使用KDE作為默認(rèn)的Session,設(shè)置默認(rèn)啟動(dòng)到X,這樣做的目的是為了方便遠(yuǎn)程控制;
5、IP:,這是我在本文檔中使用的IP,這個(gè)可以自行設(shè)置。
6、文檔中我沒有涉及到防火墻的設(shè)置,系統(tǒng)安裝完成后你可以使用ntsysv或者chkconfig命令將iptables和ipchains兩個(gè)效勞禁用掉,否那么會(huì)導(dǎo)致telnet和遠(yuǎn)程登陸等無法使用;當(dāng)然,如果您熟悉防火墻設(shè)置,可以自行處理。Step2Xsetup##這一步完成后,重啟效勞器,然后你就可以使用Extra!X等遠(yuǎn)程控制軟件以圖形界面在微軟平臺(tái)上進(jìn)行效勞器配置,這樣做的好處是可以同時(shí)控制效勞器端和客戶端,不必奔波在兩臺(tái)機(jī)器之間。如果你按照下面的設(shè)置不能進(jìn)行遠(yuǎn)程控制,那么,很有可能你的防火墻策略不允許這樣做,禁用掉iptables和ipchains就可以了。vi/etc/X11/gdm/gdm.conf//啟用遠(yuǎn)程控制
[xdmcp]
Enable=1vi/etc/X11/gdm/Sessions/Default//設(shè)置默認(rèn)Session
exec/etc/X11/xdm/Xsessionkdevi/etc/X11/xdm/Xaccess//設(shè)置播送對(duì)象
19Step3ServicessetupShell>ntsysv
運(yùn)行ntsysv命令啟用named、telnet和wu_ftpd效勞,禁用d、mysqld、iptables和ipchains效勞和其他一些不需要的效勞,然后用reboot重啟效勞器。Step4Dnssetupvi/etc/named.conf1創(chuàng)立標(biāo)準(zhǔn)區(qū)域
##你可以根據(jù)你的喜好來命名,這里我使用的后綴是.loc,主要是為了防止和Internet已經(jīng)注冊(cè)的域名相沖突,你可以自行決定你的后綴。
##添加下面的文本到/etc/named.confzoneyesgo.loc{
typemaster;
file"yesgo.loc";
}
zone
typemaster;
}2創(chuàng)立域名庫文件
touch/var/named/yesgo.loc
touch/var/named/##編輯正向域名庫文件,建立主機(jī)名和主機(jī)別名
vi/var/named/yesgo.loc@INSOA〔
2022050801;Serial
28800;Refresh
14400;Retry
3600000;Expire
86400〕;Minimum
INNS
INMX0ns.yesgo.loc.nsINA
ftpINCNAME
mailINCNAME
popINCNAME
smtpINCNAME##編輯反向域名庫文件,建立主機(jī)名指針
vi/var/named/192.168.1@INSOA〔
2022050801;Serial
28800;Refresh
14400;Retry
3600000;Expire
86400〕;Minimum
INNS
c.2INPTR3重新啟動(dòng)DNS效勞
/etc/rc.d/init.d/namedrestart4域名查詢
##測(cè)試域名是否解析成功,這是一個(gè)交互式的命令行,你可以輸入域名或者IP地址進(jìn)行正向和反向查詢nslookup-silStep5KDEsetup這一步是可有可無的,因?yàn)槟阃耆梢圆蝗ダ頃?huì)而直接使用默認(rèn)界面。一般的做法是先根據(jù)KDE配置向?qū)нM(jìn)行總體設(shè)置,然后再使用KDE控制中心進(jìn)行詳細(xì)配置,在此不多介紹。需要提的一點(diǎn)是你可以通過KDEControlPanel中的WindowsManager來設(shè)置默認(rèn)Session,當(dāng)然也可以通過配置文件來實(shí)現(xiàn)這一點(diǎn)。Step6vi/etc/shells
##添加下面一行到/etc/shells,將作為FTP用戶的shell,使其不能使用命令和telnet效勞/dev/null##增加組,該組中的用戶將以自己的home目錄作為FTP根目錄groupadd##添加FTP用戶,該類用戶只能使用FTP效勞,且以自己的home目錄為根目錄
useraddsrc-s/dev/null-g//本帳號(hào)用來存放軟件包
passwdsrc/*
我習(xí)慣將軟件包放到自定義的/home/src目錄,主要目的還是上面提到的數(shù)據(jù)保全和軟件上傳問題,如果放到/usr/local/src目錄,這兩點(diǎn)也能實(shí)現(xiàn)但不方便,如果你習(xí)慣將軟件包放到/usr/local/src,你可以刪除/usr/local/src然后為/home/src建立一個(gè)符號(hào)連接。
*/
rm-R-f/usr/local/src
ln-s/home/src/usr/local/srcStep7MySQL、ApacheandphpUnistall使用Package管理器或者rpm命令卸載MySQL、Apache和PHP,建議初學(xué)者使用Package管理器,分別查找這三個(gè)關(guān)鍵詞直到將所有相關(guān)的軟件包都卸載干凈。我們接著會(huì)編譯安裝這些軟件。Step8MySQLinstall1準(zhǔn)備用戶
userdelmysql
useraddmysql-s/dev/null-g
passwdmysql2安裝MySQL
cd/home/src
tarxvzfmy*//解包
cdmy*
./configure--prefix=/usr/local/mysql//配置
make//編譯
makeinstall//安裝
./scripts/mysql_install_db//建庫3修改文件夾權(quán)限
##下面修改相關(guān)文件夾權(quán)限,否那么MySQL效勞不能啟動(dòng),或者說你對(duì)數(shù)據(jù)庫沒有寫權(quán)限
chown-Rroot/usr/local/mysql
chgrp-Rmysql/usr/local/mysqlchown-Rroot/usr/local/mysql/bin
chgrp-Rmysql/usr/local/mysql/binchown-Rroot/usr/local/mysql/var
chgrp-Rmysql/usr/local/mysql/var
chmod770/usr/local/mysql/varchown-Rroot/usr/local/mysql/var/mysql
chgrp-Rmysql/usr/local/mysql/var/mysql
chmod770/usr/local/mysql/var/mysqlchown-Rroot/usr/local/mysql/var/mysql/*
chgrp-Rmysql/usr/local/mysql/var/mysql/*
chmod770/usr/local/mysql/var/mysql/*chmod770/usr/local/mysql/lib/mysql/libmysqlclient.a4重新加載動(dòng)態(tài)庫
##因?yàn)槲覀儾捎米远x編譯安裝的方式,所以跟系統(tǒng)原先定義的庫位置不一樣,現(xiàn)在我們重新指定它并重新加載vi/etc/ld.so.conf
#添加下面一行
/usr/local/mysql/libshell>ldconfig//重新加載動(dòng)態(tài)庫5測(cè)試MySQL
cd/usr/local/mysql
./bin/safe_mysqld--user=mysql&//啟動(dòng)MySQL效勞
mysqladmin-uroot-ppassword'your_password'//更改用戶密碼
mysql-p//開始使用6創(chuàng)立啟動(dòng)腳本
##創(chuàng)立MySQL效勞,使之在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)
cd/etc/rc.d/init.d
touchmysqld
vimysqld
##文件內(nèi)容如下:#!/bin/bash
#StartMySQLservice
cd/usr/local/mysql
./bin/safe_mysqld--user=mysql#改變?cè)撃_本的權(quán)限,否那么系統(tǒng)啟動(dòng)時(shí)會(huì)說由于沒有執(zhí)行權(quán)限而啟動(dòng)失敗
chown-Rroot/etc/rc.d/init.d/mysqld
chmod700/etc/rc.d/init.d/mysqld##將此效勞連接到init5,如果你使用init3啟動(dòng)機(jī)器,連接到rc3.d即可,60代表啟動(dòng)的次序,S要大寫
ln-s/etc/rc.d/init.d/mysqld/etc/rc.d/rc5.d/S60mysqldStep9Apacheinstall1安裝Apache
cd/home/src
tarxvzfapa*//解包
cdapa*
./configure--prefix=/usr/local/apache--enable-module=so//設(shè)置編譯參數(shù)
make//編譯
makeinstall//安裝2建立符號(hào)連接
##為啟動(dòng)程序建立符號(hào)連接,便于以后重啟效勞
ln-s/usr/local/apache/bin/apachectl/usr/bin/apache3編輯配置文件
##設(shè)置默認(rèn)頁面,中間用空格分開DirectoryIndexindex.htmlindex.jspindex.xtpindex.phpindex.php34測(cè)試Apache
Shell>apachestart
lynx://localhost
##如果出現(xiàn)Apache的文檔頁面,表示安裝成功。5創(chuàng)立啟動(dòng)腳本
##創(chuàng)立Apache效勞
touch/etc/rc.d/init.d/d
vi/etc/rc.d/init.d/d##文件內(nèi)容如下:#!/bin/bash
#Startdservice
/usr/local/apache/bin/apachectlstart##設(shè)置文件權(quán)限
chown-Rroot/etc/rc.d/init.d/d
chmod700/etc/rc.d/init.d/d##連接到你默認(rèn)init級(jí)別的所在目錄
ln-s/etc/rc.d/init.d/d/etc/rc.d/rc5.d/S65dStep10Phpinstall##本版本中我采用的是DSO安裝模式,這樣當(dāng)你升級(jí)PHP的時(shí)候就無需重新安裝Apache1安裝PHP
cd..
tarxvzfphp*
cdphp*
./configure--with-mysql=/usr/local/mysql--with-apxs=/usr/local/apache/bin/apxs--enable-track-vars--enable-sockets--enable-ftp//設(shè)置PHP編譯參數(shù)
make//編譯
makeinstall//安裝
cp./php.ini-dist/usr/local/lib/php.ini//復(fù)制配置文件到/usr/local/lib2配置Apache
vi/usr/local/apache/conf/d.conf//配置Apache支持PHP##以php為關(guān)鍵詞查找到如下幾行,去掉前面的注釋符號(hào)#AddTypeapplication/x-d-php.php
#AddTypeapplication/x-d-php.php3//本行需要自行添加,用來支持PHP3
#AddTypeapplication/x-d-php-source.phps#重新啟動(dòng)Apache
apacherestartStep11Jvmsetupcp/home/src/j2sdk-1_3_1-linux-i386.bin/usr/local
cd/usr/local
chmoda+xj2sdk-1_3_1-linux-i386.bin##下面的指令是一個(gè)腳本,它先要問你是否同意,輸入Y,然后它會(huì)自行安裝
./j2sdk-1_3_1-linux-i386.bin##為當(dāng)前的JDK版本建立一個(gè)符號(hào)連接,這樣做的目的是將來如果有新的版本安裝到系統(tǒng)上,可以將新的目錄連接為/usr/local/jvm,這樣就無需修改很多配置文件
ln-s/usr/local//usr/local/jvmStep12ClassesInstall##這個(gè)步驟是我的一個(gè)習(xí)慣,如果不做JAVA或者JSP開發(fā)可能不需要這一步,這個(gè)步驟的目的是設(shè)置一個(gè)放置自己JAVA類庫的主目錄,然后在此主目錄下建立子目錄分別存放不同種類的類文件。
##這里需要探討的是MySQL的驅(qū)動(dòng)程序。大家可以看到我下面使用的仍然是mm驅(qū)動(dòng),有網(wǎng)友建議我使用resin自帶的驅(qū)動(dòng),我到caucho的站點(diǎn)上看到caucho聲明它的驅(qū)動(dòng)比mm驅(qū)動(dòng)快很多,并附有相關(guān)數(shù)據(jù);然而我測(cè)試的結(jié)果是resin驅(qū)動(dòng)在rs跳轉(zhuǎn)時(shí)除了rs.next〔〕其他的rs.previous〔〕;、rs.first〔〕;和rs.last〔〕;都沒任何作用,所以我仍然使用ar.zip。##創(chuàng)立類庫主目錄
mkdir/usr/local/lib/java##下面安裝MySQL的JDBC驅(qū)動(dòng),這個(gè)驅(qū)動(dòng)是支持JDBC2.0的
mkdir/usr/local/lib/java/drivers
cp/home/src//usr/local/lib/java/drivers//MySQLdriver##下面安裝JAF,需要說明的是,下載的jaf包是個(gè)winzip文件,我是windows上解壓的,然后創(chuàng)立了一個(gè)jaf的目錄將activation.jar放到里面又上傳到/home/src的,你可以自行解決
mkdir/usr/local/lib/java/jaf
cp/home/src/java/jaf/activation.jar/usr/local/lib/java/jaf//Jafclass##下面安裝JAVAMAIL,我的處理方法同上
mkdir/usr/local/lib/java/javamail
cp/home/src/java/javamail/*.jar/usr/local/lib/java/javamail//JavaMailclassesStep13Edit/etc/profile##這一步用來配置環(huán)境變量,Resin的安裝需要依賴該步驟
Vi/etc/profile
##在/etc/profile文件末添加如下內(nèi)容:JAVA_HOME=/usr/local/jvmRESIN_HOME=/usr/local/resinCLASS_HOME=/usr/local/lib/javaCLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib:$RESIN_HOME/lib:$CLASS_HOME/drivers/E/jaf/activation.jar:$CLASS_HOME/javamail/mail.jar:$CLASS_HOME/javamail/smtp.jar:$CLASS_HOME/javamail/pop3.jar:$CLASS_HOME/javamail/mailapi.jar:$CLASS_HOME/javamail/imap.jarPATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local:/usr/local/bin:/usr/local/jvm/bin:/usr/local/jvm/jre/bin:/usr/local/mysql/bin:/usr/bin/X11:/usr/X11R6/binexportJAVA_HOMERESIN_HOMECLASS_HOMECLASSPATHPATH##保存文件后注銷登陸,然后重新進(jìn)入,輸入下面的命令查看系統(tǒng)變量是否已經(jīng)生效:
Shell>envStep14ResinInstall1安裝Resin
cd/home/src
cp/home/src/r.gz/usr/local
cd/usr/local
tarxvzfresin*
cdresin*
./configure--with-apache=/usr/local/apache//設(shè)置編譯參數(shù)
〔Or:./configure--with-apxs=/usr/local/apache/bin/apxs〕
make//編譯
makeinstall//安裝2建立符號(hào)連接
##建立resin的符號(hào)連接,道理同建立jvm符號(hào)連接
ln-s/usr/local//usr/local/resin##建立resin效勞程序的符號(hào)連接,道理同建立apache符號(hào)連接
ln-s/usr/local/resin/bin/d.sh/usr/bin/resin3修改配置文件
vi/usr/local/resin/conf/resin.confModifyOne:建立連接池,類似于NT上的DSN〔數(shù)據(jù)源〕<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>//數(shù)據(jù)源名稱
<res-type>e</res-type>//數(shù)據(jù)源類型
<init-param"/>//數(shù)據(jù)庫驅(qū)動(dòng)
<init-paramurl="jdbc:mysql://localhost/test"/>//連接串<init-paramuser="your_user_name"/>//用戶名
<init-parampassword="your_password"/>//密碼
<init-parammax-connections="20"/>//最大連接數(shù)
<init-parammax-idle-time="30"/>//延時(shí)時(shí)間
</resource-ref>##后面的測(cè)試局部有例子介紹如何調(diào)用數(shù)據(jù)源ModifyTwo:修改默認(rèn)主目錄,如果使用虛擬主機(jī),其實(shí)也可以不理會(huì)這個(gè)地方
<app-dir>/usr/local/apache/htdocs</app-dir>ModifyThree:修改Resin端口,與Apache協(xié)同工作
<port='8080'/>//刪除本行即可ModifyFour:添加支持JSP的虛擬主機(jī)
##添加一個(gè)支持JSP的虛擬主機(jī)需要做如下四方面的工作:DNS、、RESIN1、添加一個(gè)DNS別名〔當(dāng)然主機(jī)名也可以〕
vi/var/named/yesgo.loc
#追加如下一行,當(dāng)然你可以自定義其他別名或主機(jī)名
wwwINCNAMEns.yesgo.loc./etc/rc.d/init.d/namedrestart
//重啟DNS效勞
nslookup//測(cè)試是否解析成功##在文檔中查找</host>,然后在其后參加如下內(nèi)容:
<hostid=''>
<app-dir>/home/www</app-dir>//指定該站點(diǎn)的根目錄
<classpathid='classes'source='classes'compile='true'/>//指定class文件目錄
</host>『注意』:
按照上面地設(shè)置,你放置JavaBean的目錄就是站點(diǎn)根目錄下的classes目錄,不可以死記硬背/WEB-INFO/classes,關(guān)鍵要明白其中的道理,其實(shí)你設(shè)置什么都可以的,例如Amao,Agou啦,呵呵。
『強(qiáng)烈建議』:設(shè)置classes目錄的權(quán)限,否那么客戶端可以瀏覽和下載你的組件
chmod701/home///設(shè)置classes目錄的權(quán)限,防止非法獲取4測(cè)試Resin
##啟動(dòng)Resin
shell>resinstart
##重新啟動(dòng)Apache,因?yàn)閯倓傂薷牧薲.conf,需要重啟才生效
shell>apacherestart
#創(chuàng)立文件
touch/home/
chown-Rwww/home/
chmod701/home/
##編輯源文件
vi/home/
##源代碼只有一句:
1+1=<%=1+1%>
##測(cè)試該程序
lynx://c/
##輸出結(jié)果應(yīng)該是:1+1=25創(chuàng)立啟動(dòng)腳本
##創(chuàng)立Resin效勞,道理跟創(chuàng)立MySQL和Apache效勞是一樣的,不過這里要設(shè)置相關(guān)環(huán)境變量。
##創(chuàng)立腳本文件
touch/etc/rc.d/init.d/resin
##更改文件權(quán)限
chmod701/etc/rc.d/init.d/resin
##連接到相關(guān)啟動(dòng)級(jí)別
ln-s/etc/rc.d/init.d/resin/etc/rc.d/rc5.d/S70resin
##編輯啟動(dòng)腳本
vi/etc/rc.d/init.d/resin##文件內(nèi)容如下:#!/bin/bash
#Setenvironmentparameter:JAVA_HOME=/usr/local/jvmRESIN_HOME=/usr/local/resinCLASS_HOME=/usr/local/lib/javaCLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib:$RESIN_HOME/lib:$CLASS_HOME/drivers/mm.E/jaf/activation.jar:$CLASS_HOME/javamail/mail.jar:$CLASS_HOME/javamail/smtp.jar:$CLASS_HOME/javamail/pop3.jar:$CLASS_HOME/javamail/mailapi.jar:$CLASS_HOME/javamail/imap.jarPATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local:/usr/local/bin:/usr/local/jvm/bin:/usr/local/jvm/jre/bin:/usr/local/mysql/bin:/usr/bin/X11:/usr/X11R6/binexportJAVA_HOMERESIN_HOMECLASS_HOMECLASSPATHPATH#Startresinwebserver
exec/usr/local/resin/d.shstartStep15PhpMyAdmininstall##phpMyAdmin是我最喜歡的MySQL客戶端工具。我也使用過其他的客戶端,包括win32的DBTools、mysqlfront等和基于web的其他工具,然而,我最后發(fā)現(xiàn)phpMyAdmin仍然是不可替代的。它基于web的通用性、免安裝、多用戶、平臺(tái)無關(guān)性、穩(wěn)定性、開放源碼和極快的升級(jí)速度實(shí)在是太好了。況且本文檔主要探討的是效勞器的配置,所以,我這里仍然只介紹phpMyAdmin。1配置DNS
vi/var/named/yesgo.loc
#追加如下一行,當(dāng)然你可以自定義其他別名或主機(jī)名
mysqlINCNAMEns.yesgo.loc./etc/rc.d/init.d/namedrestart//重啟DNS效勞
nslookup//測(cè)試是否解析成功2建立FTP
##在安裝MySQL的時(shí)候,我們已經(jīng)建立了一個(gè)叫做mysql的帳號(hào),如果你還沒有建立,可以按照下面的語句建立:
useraddmysq-s/dev/null-g
passwdmysql3安裝phpMyAdmin
tarxvzf/home/src/phpMy*
cp/home/src/phpMyAdmin/*/home/mysql
chown-Rmysql/home/mysql
chown-Rmysql/home/mysql/*
chmod701/home/mysql
chmod701/home/mysql/*4添加虛擬主機(jī)
vi/usr/local/apache/conf/d.conf<Virtuac>
ServerAdminwe
DocumentRoot/home/mysql
ServerName
ErrorLoglogs/m
CustomLoglogs/
</VirtualHost>5添加身份驗(yàn)證
##添加MySQL用戶
##使用身份驗(yàn)證功能,phpMyAdmin需要一個(gè)啟動(dòng)用戶,這個(gè)用戶對(duì)mysql的相關(guān)表具有查詢權(quán)限,具體定義如下:
shell>mysql-p
mysql>GRANTUSAGEONmysql.*TO'<stduser>'@'localhost'IDENTIFIEDBY'<stdpass>';
mysql>GRANTSELECT〔Host,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,,Grant_priv,References_priv,Index_priv,Alter_priv〕ONmysql.userTO'<stduser>'@'localhost';
mysql>GRANTSELECTONmysql.dbTO'<stduser>'@'localhost';
mysql>GRANTSELECT〔Host,Db,User,Table_name,Table_priv,Column_priv〕ONmysql.tables_privTO'<stduser>'@'localhost';
##修改配置文件$cfgServers[1]['host']='localhost';//主機(jī)名
$cfgServers[1]['port']='3306';//默認(rèn)端口
$cfgServers[1]['socket']='';//使用的socket路徑
$cfgServers[1]['connect_type']='tcp';//使用tcp還是socket方式來連接
$cfgServers[1]['stduser']='';//標(biāo)準(zhǔn)用戶帳號(hào)名稱
$cfgServers[1]['stdpass']='';//標(biāo)準(zhǔn)帳號(hào)的密碼
$cfgServers[1]['auth_type']='';//指定驗(yàn)證方式為config,還是cookie,這是2.2.3版本的一個(gè)變化,比較平安的方式是驗(yàn)證
$cfgServers[1]['user']='root';//MySQL帳號(hào)
$cfgServers[1]['password']='';//只有使用config驗(yàn)證方式的時(shí)候才需要填寫
$cfgServers[1]['only_db']='';//如果你在這里指定了一個(gè)數(shù)據(jù)庫,那么登陸后系統(tǒng)只列出這個(gè)數(shù)據(jù)庫在左側(cè)6測(cè)試phpMyAdmin
apacherestart
lynx://mysql.yesgo.loc//建議使用客戶端瀏覽器測(cè)試Step16ServerTest##為什么不使用1+1=<%=1+1%>或者<%out.print〔"HelloWorld!"〕;%>這樣的例子呢?因?yàn)檫@樣的例子只能測(cè)試Apache和Resin是否能夠協(xié)同工作,而不能測(cè)試數(shù)據(jù)庫連接、JDBC2.0是否支持,中文問題是否存在等等。下面給出四個(gè)例子,第一個(gè)例子可以測(cè)試上述的所有問題;第二個(gè)例子告訴你如何使用Resin的連接池;第三個(gè)例子告訴你如何調(diào)用組件,如何實(shí)現(xiàn)數(shù)據(jù)層和處理層的別離;第四個(gè)例子用來測(cè)試PHP。例一:使用連接串連接數(shù)據(jù)庫1創(chuàng)立數(shù)據(jù)庫
##數(shù)據(jù)庫腳本如下,可存儲(chǔ)為.sql文件,然后利用phpMyAdmin生成數(shù)據(jù)庫
##注意,后面的例子也將沿用該數(shù)據(jù)庫。
createdatabaseyesgo
useyesgo;createtableprov
〔
prov_idtinyint〔2〕notnullprimarykey,
prov_namechar〔6〕notnull
〕;insertintoprovvalues〔'01','安徽'〕;
insertintoprovvalues〔'02','北京'〕;
insertintoprovvalues〔'03','重慶'〕;
insertintoprovvalues〔'04','福建'〕;
insertintoprovvalues〔'05','甘肅'〕;
insertintoprovvalues〔'06','廣東'〕;
insertintoprovvalues〔'07','廣西'〕;
insertintoprovvalues〔'08','貴州'〕;
insertintoprovvalues〔'09','海南'〕;
insertintoprovvalues〔'10','河北'〕;
insertintoprovvalues〔'11','黑龍江'〕;
insertintoprovvalues〔'12','河南'〕;
insertintoprovvalues〔'13','湖北'〕;
insertintoprovvalues〔'14','湖南'〕;
insertintoprovvalues〔'15','內(nèi)蒙古'〕;
insertintoprovvalues〔'16','江蘇'〕;
insertintoprovvalues〔'17','江西'〕;
insertintoprovvalues〔'18','吉林'〕;
insertintoprovvalues〔'19','遼寧'〕;
insertintoprovvalues〔'20','寧夏'〕;
insertintoprovvalues〔'21','青海'〕;
insertintoprovvalues〔'22','山西'〕;
insertintoprovvalues〔'23','陜西'〕;
insertintoprovvalues〔'24','山東'〕;
insertintoprovvalues〔'25','上海'〕;
insertintoprovvalues〔'26','四川'〕;
insertintoprovvalues〔'27','天津'〕;
insertintoprovvalues〔'28','西藏'〕;
insertintoprovvalues〔'29','新疆'〕;
insertintoprovvalues〔'30','云南'〕;
insertintoprovvalues〔'31','浙江'〕;
insertintoprovvalues〔'32','香港'〕;
insertintoprovvalues〔'33','澳門'〕;
insertintoprovvalues〔'34','臺(tái)灣'〕;2為數(shù)據(jù)庫添加帳號(hào)
##按如下方式添加的帳戶只對(duì)yesgo數(shù)據(jù)庫具有權(quán)限,而且對(duì)它擁有全部權(quán)限。但為什么要添加四次呢?主要是host的不同,需要注意的是,MySQL驗(yàn)證是一個(gè)連接是否正確,不僅取決于帳號(hào)和密碼,還要看主機(jī)名和數(shù)據(jù)庫名。
mysql-p
mysql>grantallprivilegesonyesgo.*toyour_user_name@localhostidentifiedby'your_password'withgrantoption;
mysql>grantall
mysql>grantallprivilegesonyesgo.*toyour_usr_password'withgrantoption;
mysql>grantallprivilegesonyesgo.*toyour_user_name@'%'identifiedby'your_password'withgrantoption;
mysql>exit3創(chuàng)立JSP源文件
touch/home/
chown-Rwww/home/
chgrp-rroot/home/
chmod771/home/vi/home/
##源代碼如下:
<%@pagelanguage="java"%>
<%
Class.forName〔iver"〕;
Connectionconn=DriverManager.getConnection〔"jdbc:mysql://host_name/db_name","user_name","password"〕;
Statementstmt=conn.createStatement〔〕;
ResultSetrs=stmt.executeQuery〔"select*fromprov"〕;
rs.next〔〕;
out.print〔rs.getString〔"prov_id"〕+""+rs.getString〔"prov_name"〕+"<br>"〕;
rs.next〔〕;
out.print〔rs.getString〔"prov_id"〕+""+rs.getString〔"prov_name"〕+"<br>"〕;
rs.previous〔〕;
out.print〔rs.getString〔"prov_id"〕+""+rs.getString〔"prov_name"〕+"<br>"〕;
rs.last〔〕;
out.print〔rs.getString〔"prov_id"〕+""+rs.getString〔"prov_name"〕+"<br>"〕;
rs.first〔〕;
out.print〔rs.getString〔"prov_id"〕+""+rs.getString〔"prov_name"〕+"<br>"〕;
rs.close〔〕;
stmt.close〔〕;
conn.close〔〕;
%>4測(cè)試該程序
lynx://c/cnmysql
##正確的結(jié)果應(yīng)該是:1安徽
2北京
1安徽
34臺(tái)灣
1安徽例二:使用連接池連接數(shù)據(jù)庫
1建立數(shù)據(jù)源
vi/usr/local/resin/conf/resin.conf<resource-ref>
<res-ref-name>jdbc/yesgo</res-ref-name>//數(shù)據(jù)源名稱
<res-type>e</res-type>//數(shù)據(jù)源類型
<init-paramdriver-name="org.gj"/>//數(shù)據(jù)庫驅(qū)動(dòng)
<init-paramurl="jdbc:mysql://localhost/yesgo"/>//連接串
<init-paramuser="your_user_name"/>//用戶名
<init-parampassword="your_password"/>//密碼
<init-parammax-connections="20"/>//最大連接數(shù)
<init-parammax-idle-time="30"/>//延時(shí)時(shí)間
</resource-ref>2創(chuàng)立JSP源文件
touch/home/
chown-Rwww/home/
chgrp-rroot/home/
chmod771/home/vi/home/
##源代碼如下:<%@pagelanguage="java"impo%>
<%
DBPoolpool=newDBPool〔〕;
Connectionconn=pool.getPool〔"data_source_name"〕.getConnection〔〕;
Statementstmt=conn.createStatement〔〕;
ResultSetrs=stmt.executeQuery〔"select*fromprov"〕;
rs.next〔〕;
out.print〔rs.getString〔"prov_id"〕+rs.getString〔"prov_name"〕+"<br>"〕;
rs.next〔〕;
out.print〔rs.getString〔"prov_id"〕+rs.getString〔"prov_name"〕+"<br>"〕;
rs.previous〔〕;
out.print〔rs.getString〔"prov_id"〕+rs.getString〔"prov_name"〕+"<br>"〕;
rs.last〔〕;
out.print〔rs.getString〔"prov_id"〕+""+rs.getString〔"prov_name"〕+"<br>"〕;
rs.first〔〕;
out.print〔rs.getString〔"prov_id"〕+rs.getString〔"prov_name"〕+"<br>"〕;
rs.close〔〕;
stmt.close〔〕;
conn.close〔〕;
%>3調(diào)試該程序
lynx://go.loc/testpool.jsp
##處理的結(jié)果跟例一是一樣的:1安徽
2北京
1安徽
34臺(tái)灣
1安徽例三:使用處理層連接數(shù)據(jù)庫
##本例告訴你如何使用組件
##其實(shí)你完全可以寫一個(gè)bean來處理數(shù)據(jù)庫,而不用象例二那么羅索。只用四條語句就可以取出數(shù)據(jù)庫中的所有數(shù)據(jù)并顯示出來,這樣做實(shí)現(xiàn)了處理層和邏輯層的徹底別離,由邏輯層發(fā)出指令、由處理層去響應(yīng)相關(guān)處理,記錄集也不會(huì)返回到邏輯層的jsp頁面,而由處理層的bean處理,使得代碼非常精簡,效率也更高。至于如何書寫組件不是本文檔的重點(diǎn),下面僅給出一個(gè)組件的例子并說明邏輯層的調(diào)用方法,你會(huì)發(fā)現(xiàn)其實(shí)邏輯層是個(gè)官僚,處理層是下屬,呵呵。
1創(chuàng)立處理層組件
下面的組件是我為公司寫的數(shù)據(jù)庫處理組件的簡化版本,考慮到篇幅和可讀性等問題,這里我簡化了它的功能〔象數(shù)據(jù)分頁、批量更新、獲取字段數(shù)和字段名稱,用set和get提高其擴(kuò)展性、對(duì)其他連庫方法的支持等都沒有出現(xiàn)在下面的代碼中〕,使之包含所有常用的功能并使之更加清晰和易于理解;其二,我將連庫動(dòng)作加到了構(gòu)造函數(shù)中,這是個(gè)優(yōu)點(diǎn)也是個(gè)缺點(diǎn),優(yōu)點(diǎn)是簡化了連庫動(dòng)作,缺點(diǎn)是降低了通用性,我沒有添加設(shè)置數(shù)據(jù)源等方法,從而每當(dāng)變換一次數(shù)據(jù)庫就需要改寫組件中的連接池名稱,這在做一個(gè)固定工程的時(shí)候是可以的,如果你需要set數(shù)據(jù)源,可以自行添加;
##使用組件的方法:
我這里說的是使用bean的通用方法,你建立自己的bean目錄可以仿照該例子。在你的站點(diǎn)根目錄下建立resin.conf中指定的存放bean的目錄,我上面的舉例是classes,那你就建立classes目錄,那么classes就是你站點(diǎn)的class根目錄。然后在下面依次建立com\gledecity\yesgo\sql,注意它們之間是父子關(guān)系,不是同級(jí)文件夾,然后將下面即將建立的DBBridge.java放到"站點(diǎn)根目錄\classes\com\gledecity\yesgo\sql"目錄下,然后將該文件上傳到效勞器端即可。上面的步驟在微軟平臺(tái)上使用UltraDev之類的開發(fā)工具即可完成,當(dāng)然手工也可以。源文件如下://
//File:DBBridge.java
//Copyright〔c〕2022-20**Mr.FengjunZhao.AllRightsReserved.
//Author:趙鳳君@06/18/01
//LastRevision:趙鳳君@01/18/20**
//Description:數(shù)據(jù)庫接口類。一個(gè)統(tǒng)一的數(shù)據(jù)庫接口,實(shí)現(xiàn)了邏輯層和數(shù)據(jù)層的徹底別離,封裝了常用的數(shù)據(jù)庫操作。主要功能是:連接數(shù)據(jù)庫、執(zhí)行SQL語句、數(shù)據(jù)庫取值操作、數(shù)據(jù)分頁、去除數(shù)據(jù)、關(guān)閉數(shù)據(jù)庫等。
//Version:簡化版1.0
////指定包目錄
//導(dǎo)入包
publicclassDBBridge{
//聲明屬性
privateDBPoolpool;
privateConnectionconn;
privateResultSetrs;
privateStatementstmt;//構(gòu)造函數(shù)
publicDBBridge〔〕{
pool=null;
conn=null;
rs=null;
stmt=null;
try{open〔〕;}
catch〔javex〕{ex.toString〔〕;}
}
////連接數(shù)據(jù)庫的方法
publicvoidopen〔〕
throwsSQLException{
if〔conn!=null&&!conn.isClosed〔〕〕
thrownewSQLException〔"Theconnectionhasbeenestablishedalready."〕;
clear〔〕;
pool=newDBPool〔〕;
conn=pool.getPool〔"your_data_source_name"〕.getConnection〔〕;
}//執(zhí)行SQL語句的方法,將JDBC中的executeQuary〔〕和executeUpdate〔〕兩個(gè)方法//合而為一,注意返回值為整形,
publicintexecSQL〔StringsqlStmt〕
throwsSQLException{
if〔conn==null||conn.isClosed〔〕〕
thrownewSQLException〔"Thisconnectionhasnotbeenestablishedyet."〕;
if〔sqlStmt==null〕
thrownewSQLException〔"SQL-statementisnull."〕;
clear〔〕;
conn.setAutoCommit〔true〕;
stmt=conn.createStatement〔〕;
if〔sqlStmt.toUpperCase〔〕.startsWith〔"SELECT"〕〕{
rs=stmt.executeQuery〔sqlStmt〕;
return-1;
}
else{
intnumRow=stmt.executeUpdate〔sqlStmt〕;
clear〔〕;
returnnumRow;
}
}//獲取字段值,參數(shù)為整形--字段次序
publicStringgetString〔intfieldNo〕
throwsSQLException{
returnrs.getString〔fieldNo〕;
}//獲取字段值,參數(shù)為字符串--字段名
publicStringgetString〔StringfieldName〕
throwsSQLException{
returnrs.getString〔fieldName〕;
}//上移指針
publicbooleanprevious〔〕
throwsSQLException{
if〔rs==null〕
thrownewSQLException〔"ResultSetisnull."〕;
returnrs.previous〔〕;
}//下移指針
publicbooleannext〔〕
throwsSQLException{
if〔rs==null〕
thrownewSQLException〔"ResultSetisnull."〕;
returnrs.next〔〕;
}//指針最上
publicbooleanfirst〔〕
throwsSQLException{
if〔rs==null〕
thrownewSQLException〔"ResultSetisnull."〕;
returnrs.first〔〕;
}//指針最下
publicbooleanlast〔〕
throwsSQLException{
if〔rs==null〕
thrownewSQLException〔"ResultSetisnull."〕;
returnrs.last〔〕;
}//去除變量,當(dāng)你僅需要去除變量而不關(guān)庫時(shí)可調(diào)用此方法
privatevoidclear〔〕throwsSQLException{
if〔rs!=null〕rs.close〔〕;
rs=null;
if〔stmt!=null〕stmt.close〔〕;
stmt=null;
}//去除變量并關(guān)庫
publicvoidclose〔〕throwsSQLException{
clear〔〕;
if〔conn==null〕
thrownewSQLException〔"Thisconnectionhasbeenclosedalready."〕;
if〔conn.isClosed〔〕〕
thrownewSQLException〔"Thisconnectionhasbeenclosed."〕;
conn.close〔〕;
conn=null;
}}2編寫邏輯層代碼
##在客戶端創(chuàng)立dbbridge.jsp,然后上傳到效勞器端即可:##上級(jí)要來視察某官僚的工作,只見該官僚指揮假設(shè)定:
##邏輯層對(duì)處理層說:小子,去跟我的后臺(tái)聯(lián)絡(luò)一下。//連庫并初始化
<jsp:useBean/>
##邏輯層對(duì)處理層說:把我們今年的工作成果準(zhǔn)備一下。//執(zhí)行SQL語句
<%bridge.execSQL〔"select*fromprov"〕;
##邏輯層對(duì)處理層說:材料準(zhǔn)備好了?干得好!上級(jí)一來看到一片數(shù)據(jù)。//循環(huán)顯示
while〔bridge.next〔〕〕
{out.print〔bridge.getString〔"prov_id"〕+bridge.getString〔"prov_name"〕+"<br>"〕;}
##邏輯層對(duì)處理層說:好了好了,政績顯示完畢,你們通通滾蛋吧。//關(guān)閉所有變量
bridge.close〔〕;%>
##上級(jí)看后非常滿意,拍拍官僚的肩膀:"干得不錯(cuò)!"官僚一快樂,說:"哪里哪里,都是下屬辦事得力!"3測(cè)試該程序
lynx://c/dbbridge.jsp
##當(dāng)然你也可以在客戶端瀏覽器測(cè)試,只是你需要將你效勞器的IP添加到你網(wǎng)絡(luò)設(shè)置中的DNS列表中。##處理的結(jié)果是數(shù)據(jù)庫中所有的數(shù)據(jù):1安徽
2北京
3重慶
4福建
5甘肅
6廣東
7廣西
8貴州
9海南
10河北
11黑龍江
12河南
13湖北
14湖南
15內(nèi)蒙古
16江蘇
17江西
18吉林
19遼寧
20寧夏
21青海
22山西
23陜西
24山東
25上海
26四川
27天津
28西藏
29新疆
30云南
31浙江
32香港
33澳門
34臺(tái)灣例四:測(cè)試PHP
1創(chuàng)立源文件
touch/home/
chmod701/home/2編輯源文件
vitest.php
##源代碼如下:
<?
phpinfo〔〕;
?>3測(cè)試該程序
lynx:///test.php
//結(jié)果是大家熟知的效勞器端變量列表。Step17Configurationdebug##調(diào)試過程可能的錯(cuò)誤如下:常見錯(cuò)誤一:Youdon'thavepermissionForbidden
Youdon'thavepermissiontoaccess/onthisserver.
Apache/ratPort80原因可能是:1、你沒有為該目錄或者該文件設(shè)置guest組權(quán)限;
2、你沒有將該文件名設(shè)置為默認(rèn)頁面,尤其是在僅用域名訪問的情況下。
解決方法:
chmod701/home/www
chmod701/home/www/*vi/usr/local/apache/conf/d.conf
DirectoryIndexindex.htmlindex.jspindex.xtpindex.phpindex.php3常見錯(cuò)誤二:404NotFound404NotFound
/index.jspwasnotfoundonthisserver.
Resin〔builtThuNov1517:56:24PST2001〕原因可能是:
1、你請(qǐng)求的文件名輸入錯(cuò)誤;
2、你沒有在resin.conf和d.conf中都建立相應(yīng)的主機(jī)。解決方法:
1、檢查文件名,尤其注意大小寫問題;
2、參照Resininstall步驟中的配置支持JSP的虛擬主機(jī)局部。常見錯(cuò)誤三:assNotFoundException500ServletException
ats〔DynamicClassLoader.java:479〕
atjavaoadClass〔ClassLoader.java:253〕
atjal〔ClassLoader.java:313〕
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐廳臨時(shí)出租協(xié)議書
- 針灸推拿醫(yī)生協(xié)議書
- 裝修公司學(xué)徒協(xié)議書
- 營運(yùn)車輛入股協(xié)議書
- 銀行貸款免還協(xié)議書
- 餐廳經(jīng)營轉(zhuǎn)讓協(xié)議書
- 食品貨車司機(jī)協(xié)議書
- 閑置水廠合作協(xié)議書
- 音樂機(jī)構(gòu)入股協(xié)議書
- 酒店投資合伙協(xié)議書
- 前懸掛整稈式甘蔗收割機(jī)雙刀盤切割與喂入裝置設(shè)計(jì)與試驗(yàn)的中期報(bào)告
- 《不朽的貝尼尼雕塑》課件
- 《如何閱讀文獻(xiàn)》課件
- 建筑工程抗浮技術(shù)標(biāo)準(zhǔn)JGJ476-2019
- 云計(jì)算標(biāo)準(zhǔn)體系研究報(bào)告
- 《林業(yè)科普知識(shí)》課件
- 生產(chǎn)線技改后效果對(duì)比
- 故事技巧敘事性非虛構(gòu)寫作
- 五年級(jí)美國大聯(lián)盟計(jì)算和幾何專題講義教師版(含題目翻譯答案解析)
- 《小學(xué)生C++創(chuàng)意編程》第3單元課件 選擇結(jié)構(gòu)
- 學(xué)院本科教學(xué)工作審核評(píng)估支撐材料目錄
評(píng)論
0/150
提交評(píng)論