webserver课程设计分析文档格式.docx
- 文档编号:20889599
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:13
- 大小:168.20KB
webserver课程设计分析文档格式.docx
《webserver课程设计分析文档格式.docx》由会员分享,可在线阅读,更多相关《webserver课程设计分析文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
Nodt
Wwnl
r
h
■回Sitrve-r
®
port
@shutdown
i
p[t]Ustfuer
!
-
r>
[gLirttn*r
J-
回Listener
3-
[:
■回Ljibwiier
回GlabalNamingR.c5Qurc«
3
p叵)Service
XweLxiril
C&
nlrn|
version="
Werwoding="
UIT-ff'
L<
«
^isedtoIht此p血电EoftwFQumditiQH(A£
iF)underoneormortcontribytoFlit*™协gro挣册鼻皿鼠“Mote:
A'
SefTw'
isnd.ittdf曷'
CcrTtainrr'
soyoumaynotde4inffsubciDmpoMnts-suchas'
Vahei'
■“
SOOS
EHUTIXIWN
APRlibraryloader.Ogcurnent^rtiD仃at/do^s/ikpr.htrnl
ErvtialixfJa^sperpriortowebappsareI口ad?
d.Docurnentatinnat/docs^jasiprr-fiQW^Jitml
PrifrrtiltrnfrfliOrydu^i&
uit&
fparticularjava/jAPtl
JMXSupportfotIheTonwilserver,Oocumentaljanat/chx打訐“询卅戏罷Iwil
GlobalJNDCFfrSQixcfrt0o£
u«
riwl!
fl4io*iad:
/d&
cs^fidr-resources-h^Mri&
.htMl
A.BService'
詁aCQll«
:
dignpFamt©
「rncnr"
"
Conr^cfgr?
th#t$h>
rie-asingle'
C^intainis-r-A一
其中server.xml对整个系统进行描述,用于生成系统代码。
5.1.2服务器java代码
首先编写了一个加法程序,利用java的功能自动生成服务端的加法服务:
intadd(inta,intb);
根据该函数通过系统生成对应的服务端代码。
原程序结构
d&
web
JL卓src
J$web
Oaddfintint):
int
鼻』ServerCaljava
丿eServerCal
•addfint,int):
a」、META-1NF
[3MANIFEST,MF
-■JRESystemLibrary[Ja^aSE-1-7]
其中服务器共生成了如下代码
-•仔WebServkePro]ect
J算src
-JBweb
[J]Caljava
卩]CalPrexyjava
pjCalServicejava
.jJCaI£
erviceLocatorjava
]jCalSoapBindingStubJava書,.」RESystemLibraryjr-:
■]
2.ApacheTomcatvfi.O[ApacheTomcatv€.O]>
■*WebAppLibraries
build
J_•WebContent
0&
META-INF
p&
WEB-INF
鼻3wsdl
2cal.wsdl
Il■—■.itri
其中Cal这个类将是原函数之中的add方法在生成的服务端之中被重写为接口方法。
以便客户端进行调用。
剩下的都是为客户提供访问服务的方法。
其中CalServiceLocator.jav这个类里面也描述了http服务网址和远程服务的方法。
1packageweb*
2
3publicclasscal{
|中publicintadd(intSjimtb){
I5returna+b;
I£
}
7}
8
packageweb;
publicinterfaceCalextendsjavarrri.Remote
publicintadd(inta,intb)throwsjava-rmi.RemoteException;
服务端自动包含了系统引用的包,Apache服务器的包和网络应用的包。
5.1.3服务端wsdl文件
可以看到服务端还生成了一个cal.wsdI文件,这个文件是接口描述。
趕貝[7]因Sl.jtfv。
国CalSeiviwl^^.迪。
1加羽B;
ncL,Qdl・j旳自[0CalPrexyJaviaS)CalServrceJflw
可以看到该文件描述了服务的http网址和其对应的方法。
在客户端进行调用的时候会根据这个描述文件进行相应的调用
5.2客户端设计
客户端由服务端的wsdl文件自动生成,其中包含了如下文件
J鏗WebServkeProjectClienrt
鼻勢arc
击client
•曲web
[>
[J]Cal.j^va
』CalProxyJava
2jCjilServiceJava
»
t£
匚aI£
erviceLocatorjava
匚alScapBindingStub.java
、MJRESystemLibraryjre^]
Hi.,ApacheTomcatv6.0[ApacheTomcatv6.0]|
骂“WebAppLibraries
Dbuild
JWebCcntent
META-INF
rsampleCalProxy
、|^"
WEB-iNF]
其中Cal.java是我们的加法方法
CalServer.java是调用服务的方法
packagewebi
publicinterfaceCalServi匚已extendsjiavax-xml-rp匚「SErviczE{
publicjava..1angaStringgetcalAddress()i
publicweb・Cal呂etcal()throwsjsavax,xml..rp匚aServiceException;
publicweb-Calgetca1(jiava-netJUR.LportAddress)throwsjiavax.xmlrpcaServiceExceptionj
可以看到这个接口继承于rpc的类包,所以我认为是这是服务调用的方
法。
CalServiceLocator.java类和CalSoapBindingStub.java类里面圭寸装了服务启动以及运行的具体方法。
用服务器的主代码。
区teb1.j«
Ar«
碍C^L^tvi!
£
Cil54rviceLo...拥CfelSHpBirxU[£
[7]E■吃呼j■”[/)C^wict^fevi,|£
CtlStrvicflo...血SfrwrCMjM
1pockngEclient]
■iriportjbydtnirt.^-ailfariiedlJRLEMceptioni]_]
w(
C-BlSsrviceLocatorservice■mmCfllSerwiceLocatorf)i
url-ntwrwt.URL("
httpi//Iwtlhest:
saSfl/hw^E^rvicaPrci1?
Mgcir)5
C^LSoapBindingStubs-tub■■newCB15c«
BpBindin^5tub(urlj.service)j
^Stea,flirt,printlftCfljt-ftshslisS2015-,6,UH]i
intk2*stub.add(lu555Ji
SyittB.mt«
}(RensteException-e){
//TOCCIratedcatchbl$ck2e
e..prirYtS-tDcklTriacet)3
}c»
tcH(WilfwftedUHii.Exct-ptio*>
*){
//TOCOAutu-g?
ene-rat«
lcatchhljoickZJ«
r[pi*ir*tSta<
kTraceC)j
可以看到其中声明了CalServerLocator类对象service,声明了一个URL对象url,并且用服务器端的wsdl的地址进行初始化,之后通过CalSoapBindingStub这个类生成sutb对象,并且用service和url对其进行初始化操作,客户端与服务器进行绑定。
绑定成功之后可以调用stub的add方法进行计算。
通过这个绑定的文件名称,我们可以发现是通过Soap协议进行绑定,传输,这也说明了webserver是基于Soap协议的一种架构。
6连接件设计
由于webserver基于Soap协议进行数据传输,故这个系统中的连接件就是Soap协议(当然包括http协议)。
具体在程序之中实例化表现为CalSoapBindingStub.java这个类,该类的构造函数中用wsdl地址和CalServiceLocato类对象进行初始化,将服务端与客户端进行绑定,达到了连接两端的作用,使客户端可以调用服务器的方法进行计算。
7配置设计
本系统由于比较简单,只有一个客户端与一个服务器进行连接通讯,所以只配置了点对点的连接方式。
Webserver的拓扑结构应该为三角结构,分别为客户端,服务端和注册端。
由于是比较简单的web服务,目前市场的服务器计算吞吐量很大,点对点的服务让服务端不能满载,比较浪费资源,可以采用总线型或者星形的拓扑结构来增强服务器的带宽,以增强计算能力。
8实验结果
未开启服务运行客户端,客户端的add方法无法加载,但是system.out.println();
未经过服务器,故函数可以进行调用,打印输出。
可以看到命令行里面有很多的红色代码,说明没有开服务器是不能运行客户端的。
■.rCirtWKifrd>
mtJfcppMraHwi!
]RteiWw叫ntTMbi叫脚*輸**.血1弭®
月打吕下牛费堆1・
詡H22*MIS9zl>
il4Tf>
04*1MEil»
vtils.1*MtKhKnC^upp^rfcfl^
^MHINCiiI>
toiahl4如findrcqujir»
dcl4ft'
C'
F(jwwax-(KtiwvrtiiEHi.OMtHMandlrrandJvvvm.uil-t-jrAttKhwHit的ipit
■S■冑31*1
lixilFAwlr
fnjiltCgde:
(tr£
~E口:
/$j;
—l£
DBg-口mF乞口1>
|17卍11*1口口eV'
I&
^rwef-uttf电曜匸亡|]上:
15
flfcuiltStriflf:
(■丫曲,榔,Cd件內暑£
IF甘亡电QtiE;
CMWHCtieAeWHCt
ffriJiltNodfJ
fivltDttflik
{Htxm:
##:
3d■■・DiKh电闪gf■?
[iiF'
ist鬲ikTrafi:
q迪时■,i>
e雹.CoineittE“e±
nliantCMhection)ccinftect
■tjav■-nrt.□unl'
S-tac-kf-liainScickrtlapl.haitForC-tMinect()
BtjSflfflurwt.PUBlStfdrFiulHSockttlBpl.SCCk«
tC&
ftn4Ct(UvilEHQHH皿护
•Iji»
v4.n*t・*£
0的華宅电.(Un岸帼・■!
54vrc»
J
tJbv>
^net,Ah^CrActPlfllniSocketlBpl..fonnectla^Mre'
s-t(UnlmcwnS^uree)
■tjvvii-.nr^.Abft-r^cfFljiiHSKkrtInpl.-c^nntct(Unkn»
n^$urc*)
tjikv*..pLnlfiMcketlnpl.c«
M«
ct:
(UFiknwi5«
*"
丨
ptjpv*.rwt.Socket-cqiificc:
^(UnknownSw^cr)
Bttun,reflect-lUtL^tHithMMfcvEeqpIhpkinveterticSUAxUSSfiSi』
tswHiireflect.H«
tlve^tlwfc^ces1Bl«
iY4k>
e(Unhifta4iriS^^cr)
■rt9>
un:
reflectuDel«
g:
dinp*cthodAccrs&
arlja|]-l.inrviake(UinkrKMriSw^ce)
■tjjwv*-!
■»
(;
-rrfl«
ct..MffthMll.Lnvolcf(IRntncMiSwrcf)
Btorg,«
p»
ctl«
HifeHll,CM^dWIittrnet-c«
fflUltteckftiFACtlKy.CL韭曲1匸5«
6<
髦皑宅Factoryl'
¥
冒人,鼻jl
cz..apacht-ibKlia,miBDefiultScKketiFKta^y.e!
^・1豊©
氏甲・口1七%匕話!
1尸副诧口广¥
・1:
占1¥
8:
丄話、
t□厂;
(.apache.HHis.trinipcrt.http.MTTPSemtr^.食■1E£
ouiG.itlt|TTPS<
w0«
pj\q戲■:
jJL)
Bterg.cpflich*.Bull-trfFitport,http.HTTP%士沪-writtTo$*ckettKTTP$f闵”「彳■皆.1理4}
ntQ^lg.ApACtW.AkI1・trmpGit.http.HT7F5#ftd«
^.:
LftMtot©
HTTR5<
m»
eTH1|科週:
13叭
tDqg;
.apache-hkIs~stratrgle&
・InvacationS-tegy=皆士$Itltmvovffti・~|w:
:
$211
■tgrj.■acMi-»
k!
I-石tapLkHmIhi,&
毋"
1:
SiiMlrCKfdH-"
1脚鼻三11$T
tenf,«
chePkkIs»
Inwoke(时•圖》
irt口产雷.Apiiciie.hkIiBc.Lient.AkLiC1lent..ihwket・〈■管■;
lifiS)■
Wt口皿.«
piKch<
.■«
$.clIrnt-CaIJ.InvDkefngioef■£
n1g-1:
2714]
Ftoq»
?
h4-BKlf-cl1"
書rC«
llriHwptaff"
11-1■删"
祜、
■Eoq|.tpache・s・elient.Call・1昨管朋电C"
11“1:
・刚:
上*4拆
■rtai-ja・p■匸h髦.hk!
s.cllentsC«
llsIfivc^htgBjlJ.=:
>
■torgs«
piich«
-■嵐1s.clltn%-..C^l-lInvoke(匚・11-计・》:
t*»
.C«
15ci«
pBifldLn|^tub.Bdd[C・wH鬥:
1W)
hit亡丄土亡“电u,•ilrT代电讥・佃%'
1:
1令Ji
(http;
m】-«
pKb«
ep4Kii/}hestH9Mf4ij-K
$■“•■.rwt』tuninett^itEieptjLnE:
ConnettIanrtfuserf:
dwineft
■tgrg..pitif.Axif.・Mik尊11(AN||||Fa^|jJ^JjiV£
iJ21)i
Ktoq.«
ch«
BfliKlft・tflfllpOPt・httpBHTTP5eMt*»
l.«
v&
i(t!
{HTTP5<
il(>
eF.価叶片丄典)
■itSrg,ApticlwlhkIsaitratrfie&
.Idvgiiz»
timStr・T:
r(y■viiItItinME舖弋1旦nS■覽曽.4uv・1
ntor^[.«
p«
chc.•囂1鲁.S^Hpl^ChaLn.d<
rtU$2~t$iMple£
ji*il口-4w:
14$)
Bt,■hmm-・・1■-$i*gltchiin,1肝v&
iE154・p”lec阿“且购夏虎J、
bient■ip*ch«
Bahi&
.cilent.AmLsCllent.lnw>
ke1"
1比1.1更唯,”m;
1硏、
Ftnrg.ipatche一■Nds.cliients“J.L[刖吐上En.in*■斗刼些JiTiMj
Bterf,<
ip*Ec.«
i.climt.C«
ll,.1刖此时€:
■】】・"
iivii:
3!
料?
■t0啓.4p#ch«
・«
m1li.cli*Ht.Ctllrl«
l¥
fibk«
mil”和
■ta书.apiicti«
biHcllent・Cill・Inv&
ktml1-i・*:
)
■Itarg.apache.«
m1s.clirHt:
..Call=lnvolu(亡ad1-4・“■:
JL肯ig>
t>
t6.C«
1544pBiftdlnf5tub.*dd[fl央谪-jj处
feecllant.1i¥
i;
Ifi)
Causedby;
-rre^-CunirvettEmt:
口宅Idfi:
<
4nne£
CLdnRefused!
fdnhtcC
wtimrii.Ftrt.OijiiI^tiirli*!
.tfl^wrlrFtTanli.miHnr^ifwwwirfrfNflrlv*BM+hM\
开启服务端的正确结果
ft.flaz,2015e»
p4cl*e.«
5e1Is.?
vaVtilsisAttKh»
ent5urpp^rted
WARNDIGsUnabletefindre^ui^dclas-54&
(jawax.actlort.DataHarMller朗隹.«
ailPLflte-r*iet.MifteMultipart)・Attach^eiitsupportisdisabled.
HJE.賣言F^E^W5
556
可以看到客户端调用服务端的add方法,计算1+555等于556。
说明程序运行成功。
9心得体会
通过这次试验,我明白了webserver的开发过程,通过Apache服务器
进行搭建web端的服务,再通过服务端的wsdl描述语言生成客户端与服务器之间的连接件,再通过调用连接件的对象方法对远程的服务器进行调用,达到web服务的目的。
在写报告的时候我们将连接件误认为中间件,将Apache的服务器当做了连接件。
最开始我们还做了linux的RPC调用,在本次实验的服务端的CalServ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- webserver 课程设计 分析