|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。
WebService给人最直不雅的感到就是由一个个办法构成,并在客户端经由过程SOAP协定挪用这些办法。这些办法大概有前往值,也大概没有前往值。固然如许能够完成一些工具,但这些被挪用的办法是伶仃的,当一个办法被挪用后,在其他的办法中没法取得这个办法挪用后的形态,也就是说没法保存形态。
读者能够设想,这关于一个完全的使用程序,没法保存形态,就意味着只依托WebService很难完玉成部的事情。比方,一个完全的使用体系都必要举行登录,这在Web使用中利用Session来保留用户登录形态,而假如用WebService的办法来举行登录处置,没法保留登录形态长短常使人为难的。固然,这也能够通过其他的办法来办理,如在服务端利用static变量来保留用户形态,并发送一个id到客户端,经由过程在服务端和客户端传送这个id来获得响应的用户形态。这十分相似于Web使用中经由过程Session和Cookie来办理用户形态。但这就必要由开辟职员做良多事情,不外幸亏Axis2为我们供应了WebService形态办理的功效。
利用Axis2来办理WebService的形态基础上关于开辟职员是通明的。在WebService类必要利用org.apache.axis2.context.MessageContext和org.apache.axis2.context.ServiceContext类来保留与获得保留在服务真个形态信息,这有些象利用HttpSession接口的getAttribute和setAttribute办法取得与设置Session域属性。
除此以外,还必要修正services.xml文件的内容,为<service>元素加一个scope属性,该属性有四个可取的值:Application,SOAPSession,TransportSession,Request,不外要注重一下,固然Axis2的官方文档将这四个值的单词首字母和缩写字母都写成了年夜写,但经笔者测试,必需全体小写才有效,也就是这四个值应为:application、soapsession、transportsession、request,个中request为scope属性的默许值。读者能够选择利用transportsession和application分离完成统一个WebService类和跨WebService类的会话办理。
在客户端必要利用setManageSession(true)翻开Session办理功效。
综上所述,完成统一个WebService的Session办理必要以下三步:
1.利用MessageContext和ServiceContext取得与设置key-value对。
2.为要举行Session办理的WebService类所对应的<service>元素增加一个scope属性,并将该属性值设为transportsession。
3.在客户端利用setManageSession(true)翻开Session办理功效。
上面是一个在统一个WebService类中办理Session的例子。
先创建一个WebService类,代码以下:- packageservice;
- importorg.apache.axis2.context.ServiceContext;
- importorg.apache.axis2.context.MessageContext;
- publicclassLoginService
- {
- publicbooleanlogin(Stringusername,Stringpassword)
- {
- if("bill".equals(username)&&"1234".equals(password))
- {
- //第1步:设置key-value对
- MessageContextmc=MessageContext.getCurrentMessageContext();
- ServiceContextsc=mc.getServiceContext();
- sc.setProperty("login","乐成登录");
- returntrue;
- }
- else
- {
- returnfalse;
- }
- }
- publicStringgetLoginMsg()
- {
- //第1步:取得key-value对中的value
- MessageContextmc=MessageContext.getCurrentMessageContext();
- ServiceContextsc=mc.getServiceContext();
- return(String)sc.getProperty("login");
- }
- }
复制代码 <p>
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。 |
|