1、新建Session的WebService測試代碼,代碼很簡單。就是記錄用戶登錄的狀態(tài)信息,放在MessageContext的ServiceContext中。代碼如下:
代碼
這里保存Session信息的主要是通過MessageContext這個上下文來獲取ServiceContext的上下文,然后通過setProperty來保存session的信息,通過getProperty來獲取session信息。
Session的作用可以在使用WebService登錄的時候,保存用戶的登錄狀態(tài)或是會話消息。但是使用session需要設(shè)置發(fā)布Service的時候,設(shè)置WebService的作用域。作用域默認(rèn)是request,它還有另外三個值,分別是:application、soapsession、transportsession;我們可以選擇使用transportsession和application分別實(shí)現(xiàn)同一個WebService類和跨WebService類的會話管理。
2、使用axis2的工具生成aar文件,并發(fā)布LoginService服務(wù)。
關(guān)于這里發(fā)布LoginService的步驟就不一一介紹,上面已經(jīng)有說過了。當(dāng)你用這個步驟發(fā)布WebService的時候,你可以打開壓縮文件的方式aar文件(其實(shí)不一定要用aar文件,只是官方推薦的aar,jar文件也是可以的),在META-INF目錄下有一個services.xml文件,看到它的<service>這個標(biāo)簽,沒有設(shè)置scope屬性。
scope默認(rèn)的是request,我們得修改services.xml的內(nèi)容。
修改后services.xml內(nèi)容如下:
代碼
這個地方的scope是關(guān)鍵,如果這里不設(shè)置的話session是無法存放信息。
3 、用控制臺Dos命令發(fā)布WebService
這個是手工打包,也就是我們經(jīng)常用的jar命令
首先我們得需要一個services.xml文件,文件內(nèi)容如上面的。
<service name= "LoginService" scope= "transportsession" >
name是當(dāng)前發(fā)布WebService的名稱,scope是會話作用域。保存在Session中就要用這個transportsession這個作用域。
<parameter name= "ServiceClass" >com.hoo.service.LoginService</parameter>
這個是當(dāng)前Service的類路徑,包名+類名
<messageReceivers>
<messageReceiver mep= "http://www.w3.org/2004/08/wsdl/in-only"
class= "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver mep= "http://www.w3.org/2004/08/wsdl/in-out"
class= "org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</messageReceivers>
這個應(yīng)該是參數(shù)和返回值信息的解析類,in-only是輸入也就是參數(shù),in-out是輸出也就是返回值。
A、 首先,我們在C盤下新建一個sessionService的目錄,然后將上面的services.xml文件中的ServiceClass的類的class文件copy到這個目錄下,注意要帶上package目錄,然后在sessionService目錄下新建一個META-INF將上面的services.xml文件放到這個目錄下
B、 然后運(yùn)行cmd進(jìn)入控制臺,進(jìn)入sessionService這個目錄,鍵入命令如下:
jar cvf service.aar .
service.aar是打包后的文件名稱,.是指代當(dāng)前目錄
如果你不懂jar命令,你可以輸入jar會有命令語法的提示
進(jìn)入sessionService這個目錄中,你可以看到service.aar文件就有了。然后將這個文件copy到axis2的WEB-INF目錄下的services目錄中,也就是
[tomcat-home]\webapps\axis2\WEB-INF\services
然后可以通過: http://localhost:8080/axis2/services/listServices
就可以查看剛才發(fā)布的服務(wù)了。
這樣就完成手工發(fā)布打包發(fā)布WebService了
C、 編寫WebService客戶端的請求代碼
代碼
執(zhí)行后,結(jié)果如下:
true
admin#登陸成功
上面要說明的是options.setManageSession( true );是開啟對Session管理的支持
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
