做自己的网站好还是博客好,兰州企业做网站,赣州品牌网站建设,专业的营销网站建设公司排名当多个WebService的时候#xff0c;我们要管理它的Session。这个时候我们得依靠ServiceGroupContext保存session信息#xff1b; 然后在发布WebService的时候#xff0c;services.xml文件的的service表情的scope就不再说request或是transportsession了#xff0c; 而是appl…当多个WebService的时候我们要管理它的Session。这个时候我们得依靠ServiceGroupContext保存session信息 然后在发布WebService的时候services.xml文件的的service表情的scope就不再说request或是transportsession了 而是application最后同样要开启对session的管理即options.setManageSession(true); 1、 首先多个WebService的session管理的代码如下 package com.hoo.service;import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.ServiceGroupContext;/*** bfunction:/b管理多个会话Session信息* author hoojo* createDate 2011-3-9 下午05:11:07* file LoginSessionService.java* package com.hoo.service* project Axis2WebService* blog http://blog.csdn.net/IBM_hoojo* email hoojo_126.com* version 1.0*/
public class LoginSessionService {public boolean login(String userName, String password) {MessageContext context MessageContext.getCurrentMessageContext();ServiceGroupContext ctx context.getServiceGroupContext();if (admin.equals(userName) 123456.equals(password)) {ctx.setProperty(userName, userName);ctx.setProperty(password, password);ctx.setProperty(msg, 登陆成功);return true;}ctx.setProperty(msg, 登陆失败);return false;}public String getLoginMessage() {MessageContext context MessageContext.getCurrentMessageContext();ServiceGroupContext ctx context.getServiceGroupContext();return ctx.getProperty(userName) # ctx.getProperty(msg);}
} 和上面的Session一样的操作只不过是用ServiceGroupContext上下文来存取session信息 另外还需要用一个Service来查询session的信息SearchService的代码如下package com.hoo.service;import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.ServiceGroupContext;/*** bfunction:/b查找多服务Session会话中的消息* author hoojo* createDate 2011-3-9 下午05:22:39* file SearchSessionServcie.java* package com.hoo.service* project Axis2WebService* blog http://blog.csdn.net/IBM_hoojo* email hoojo_126.com* version 1.0*/
public class SearchSessionServcie {public String findSessionMessage(String key) {MessageContext mc MessageContext.getCurrentMessageContext();ServiceGroupContext ctx mc.getServiceGroupContext(); if (ctx.getProperty(key) ! null) {return 找到的数据 key , ctx.getProperty(key) ;} else {return 没有找到 key 的数据;}}
}2、 编写services.xml来发布这2个服务还以前不一样的。这一次是用一个services.xml文件配置2个service同时发布2个服务。Xml代码如下 serviceGroupservice nameLoginSessionService scopeapplicationdescriptionWeb Service Session例子/descriptionparameter nameServiceClasscom.hoo.service.LoginSessionService /parametermessageReceiversmessageReceiver mephttp://www.w3.org/2004/08/wsdl/in-outclassorg.apache.axis2.rpc.receivers.RPCMessageReceiver /messageReceiver mephttp://www.w3.org/2004/08/wsdl/in-onlyclassorg.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver //messageReceivers/serviceservice nameSearchSessionService scopeapplicationdescriptionWeb Service Search Session例子/descriptionparameter nameServiceClasscom.hoo.service.SearchSessionServcie /parametermessageReceiversmessageReceiver mephttp://www.w3.org/2004/08/wsdl/in-outclassorg.apache.axis2.rpc.receivers.RPCMessageReceiver /messageReceiver mephttp://www.w3.org/2004/08/wsdl/in-onlyclassorg.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver //messageReceivers/service
/serviceGroup3、 发布完成后可以通过http://localhost:8080/axis2/services/listServices查看发布的WebService服务编写客户端的测试代码code如下 package com.hoo.service;import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;/*** bfunction:/b多会话Session管理WebService客户端请求代码* author hoojo* createDate 2011-3-9 下午05:17:15* file LoginSessionServiceClient.java* package com.hoo.service* project Axis2WebService* blog http://blog.csdn.net/IBM_hoojo* email hoojo_126.com* version 1.0*/
public class LoginSessionServiceClient {public static void main(String[] args) throws AxisFault {String target http://localhost:8080/axis2/services/LoginSessionService;RPCServiceClient client new RPCServiceClient();Options options client.getOptions();options.setManageSession(true);EndpointReference epr new EndpointReference(target);options.setTo(epr);QName qname new QName(http://service.hoo.com, login);//指定调用的方法和传递参数数据及设置返回值的类型Object[] result client.invokeBlocking(qname, new Object[] { admin, 123456 }, new Class[] { boolean.class });System.out.println(result[0]);qname new QName(http://service.hoo.com, getLoginMessage);result client.invokeBlocking(qname, new Object[] { null }, new Class[] { String.class });System.out.println(result[0]);target http://localhost:8080/axis2/services/SearchSessionService;epr new EndpointReference(target);options.setTo(epr);qname new QName(http://service.hoo.com, findSessionMessage);result client.invokeBlocking(qname, new Object[] { userName }, new Class[] { String.class });System.out.println(result[0]);qname new QName(http://service.hoo.com, findSessionMessage);result client.invokeBlocking(qname, new Object[] { msg }, new Class[] { String.class });System.out.println(result[0]);qname new QName(http://service.hoo.com, findSessionMessage);result client.invokeBlocking(qname, new Object[] { password }, new Class[] { String.class });System.out.println(result[0]);}
}运行后结果如下 true admin#登陆成功 找到的数据userName, admin 找到的数据msg, 登陆成功 找到的数据password, 123456 4、 如果将services.xml文件service nameSearchSessionService scopeapplication的内容改成scopetransportsession看看什么情况。是不是找不到session中的内容。 转载于:https://www.cnblogs.com/javaTest/archive/2011/03/16/2589369.html