仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 505|回复: 8
打印 上一主题 下一主题

[学习教程] 了解下JAVA的WebService年夜课堂之Axis2(5):会话(Session)办理

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:07:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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类,代码以下:
  1. packageservice;
  2. importorg.apache.axis2.context.ServiceContext;
  3. importorg.apache.axis2.context.MessageContext;
  4. publicclassLoginService
  5. {
  6. publicbooleanlogin(Stringusername,Stringpassword)
  7. {
  8. if("bill".equals(username)&&"1234".equals(password))
  9. {
  10. //第1步:设置key-value对
  11. MessageContextmc=MessageContext.getCurrentMessageContext();
  12. ServiceContextsc=mc.getServiceContext();
  13. sc.setProperty("login","乐成登录");
  14. returntrue;
  15. }
  16. else
  17. {
  18. returnfalse;
  19. }
  20. }
  21. publicStringgetLoginMsg()
  22. {
  23. //第1步:取得key-value对中的value
  24. MessageContextmc=MessageContext.getCurrentMessageContext();
  25. ServiceContextsc=mc.getServiceContext();
  26. return(String)sc.getProperty("login");
  27. }
  28. }
复制代码
<p>
你说是sun公司对她研究的透还是微软?针对自己工具开发的.net性能上肯定会站上风的。
小魔女 该用户已被删除
沙发
发表于 2015-1-20 14:45:02 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
愤怒的大鸟 该用户已被删除
板凳
发表于 2015-1-23 15:55:26 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
深爱那片海 该用户已被删除
地板
发表于 2015-1-31 18:15:16 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
兰色精灵 该用户已被删除
5#
发表于 2015-2-6 20:48:11 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
简单生活 该用户已被删除
6#
发表于 2015-2-18 17:00:52 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-6 08:51:27 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
admin 该用户已被删除
8#
发表于 2015-3-12 22:42:11 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
蒙在股里 该用户已被删除
9#
发表于 2015-3-20 04:43:52 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 04:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表