因胸联盟 发表于 2015-1-18 11:07:06

了解下JAVA的WebService年夜课堂之Axis2(5):会话(Session)办理

用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性能上肯定会站上风的。

小魔女 发表于 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服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

兰色精灵 发表于 2015-2-6 20:48:11

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

简单生活 发表于 2015-2-18 17:00:52

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

冷月葬花魂 发表于 2015-3-6 08:51:27

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

admin 发表于 2015-3-12 22:42:11

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

蒙在股里 发表于 2015-3-20 04:43:52

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
页: [1]
查看完整版本: 了解下JAVA的WebService年夜课堂之Axis2(5):会话(Session)办理