好文档 - 专业文书写作范文服务资料分享网站

axis2 WebService 开发指南

天下 分享 时间: 加入收藏 我要投稿 点赞

25

Axis WebService 技术指南

[tomcat-home]\\webapps\\axis2\\WEB-INF\\services

然后可以通过:http://localhost:8080/axis2/services/listServices 就可以查看刚才发布的服务了。

这样就完成手工发布打包发布WebService了 C、 编写WebService客户端的请求代码

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; /**

* function:LoginService Session客户端代码 * @author hoojo

* @createDate 2011-3-9 上午11:21:59 * @file LoginServiceClient.java * @package com.hoo.service * @project Axis2WebService

* @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */

public class LoginServiceClient {

public static void main(String[] args) throws AxisFault {

String target = //target =

RPCServiceClient client = new RPCServiceClient(); Options options = client.getOptions(); options.setManageSession(true);

EndpointReference epr = new EndpointReference(target); options.setTo(epr);

QName qname = new QName(\, //指定调用的方法和传递参数数据,及设置返回值的类型

Object[] result = client.invokeBlocking(qname, new System.out.println(result[0]);

\; \

\);

Object[] { \, \ }, new Class[] { boolean.class }); 欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途

26

Axis WebService 技术指南

} } qname = new QName(\, result = client.invokeBlocking(qname, new Object[] System.out.println(result[0]); \); { null }, new Class[] { String.class }); 执行后,结果如下:

true

admin#登陆成功

上面要说明的是options.setManageSession(true);是开启对Session管理的支持

五、 跨多个WebService管理Session

当多个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; /**

* function:管理多个会话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 = ServiceGroupContext ctx = if (\.equals(userName) &&

MessageContext.getCurrentMessageContext(); context.getServiceGroupContext(); \.equals(password)) {

欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途

27

Axis WebService 技术指南

}

}

}

ctx.setProperty(\, userName); ctx.setProperty(\, password); ctx.setProperty(\, \登陆成功\); return true;

ctx.setProperty(\, \登陆失败\); return false;

public String getLoginMessage() { }

MessageContext context = ServiceGroupContext ctx =

return ctx.getProperty(\) + \ +

MessageContext.getCurrentMessageContext(); context.getServiceGroupContext(); ctx.getProperty(\);

和上面的Session一样的操作,只不过是用ServiceGroupContext上下文来存取session信息

另外还需要用一个Service来查询session的信息,SearchService的代码如下:

package com.hoo.service;

import org.apache.axis2.context.MessageContext; import org.apache.axis2.context.ServiceGroupContext; /**

* function:查找多服务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) {

欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途

28

Axis WebService 技术指南

return \找到的数据<\ + key + \\ + ctx.getProperty(key) + \; } else { return \没有找到<\ + key + \的数据\; } } } 2、 编写services.xml来发布这2个服务,还以前不一样的。这一次是用一个

services.xml文件配置2个service,同时发布2个服务。Xml代码如下:

Web Service Search Session例子

com.hoo.service.SearchSessionServcie

Web Service Session例子

com.hoo.service.LoginSessionService

mep=\

class=\

\ />

mep=\

class=\

ceiver\ />

mep=\

class=\

\ />

欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途

29

Axis WebService 技术指南

ceiver\ /> 3、 发布完成后,可以通过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; /**

* function:多会话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 =

RPCServiceClient client = new RPCServiceClient(); Options options = client.getOptions(); options.setManageSession(true);

EndpointReference epr = new EndpointReference(target); options.setTo(epr);

QName qname = new QName(\, //指定调用的方法和传递参数数据,及设置返回值的类型

\;

\);

欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途

axis2 WebService 开发指南

25AxisWebService技术指南[tomcat-home]\\webapps\\axis2\\WEB-INF\\services然后可以通过:http://localhost:8080/axis2/services/listServices就可以查看刚才发布的服务了。这样就完成手工发布打包发布Web
推荐度:
点击下载文档文档为doc格式
0pq1q8e53z1x2cx44ea3
领取福利

微信扫码领取福利

微信扫码分享