30
Axis WebService 技术指南
}
}
Object[] result = client.invokeBlocking(qname, new System.out.println(result[0]);
qname = new QName(\,
result = client.invokeBlocking(qname, new Object[] System.out.println(result[0]);
target =
epr = new EndpointReference(target); options.setTo(epr);
qname = new QName(\,
result = client.invokeBlocking(qname, new Object[] System.out.println(result[0]);
qname = new QName(\,
result = client.invokeBlocking(qname, new Object[] System.out.println(result[0]);
qname = new QName(\,
result = client.invokeBlocking(qname, new Object[] System.out.println(result[0]);
Object[] { \, \ }, new Class[] { boolean.class }); \);
{ null }, new Class[] { String.class });
\;
\);
{ \ }, new Class[] { String.class });
\);
{ \ }, new Class[] { String.class });
\);
{ \ }, new Class[] { String.class });
运行后结果如下:
true
admin#登陆成功
找到的数据
4、 如果将services.xml文件 scope=\>的内容改成scope=transportsession,看看什么情况。是不是找不到session中的内容。 六、 用Spring创建的JavaBean发布成WebService 1、首先,看看这个简单的类代码: 欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途 31 Axis WebService 技术指南 package com.hoo.service; /** * function:Spring的装载Bean的Service * @author hoojo * @createDate 2011-3-9 下午06:30:26 * @file SpringService.java * @package com.hoo.service * @project Axis2WebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */ public class SpringService { } public String getMessage() { } return this.number + \ + this.name; public void setNumber(int number) { } this.number = number; private String name; private int number; public void setName(String name) { } this.name = name; 将这个类编译后的class,放到[tomcat-home]\\webapps\\axis2\\WEB-INF\\classes中,注意带上package类路径的目录。 2、在 欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途 32 Axis WebService 技术指南 3、在[tomcat-home]\\webapps\\axis2\\WEB-INF\\classesapplicationContext.xml文件,文件中的内容如下: 中新建一个 axis2-spring-1.5.3.jar文件,该文件用于将被装配JavaBean的发布成WebService。同样这里我们采用手动打包发布的模式,在C盘建立一个axis2-spring-ws的目录,然后在此目录中新建一个META-INF的目录,目录中添加一个services.xml文件,内容如下: org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier mep=\ class=\ />
在文件中需要通过ServiceObjectSupplier参数指定
欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途
33
Axis WebService 技术指南
SpringServletContextObjectSupplierApplicationContext对象; 然后用jar命令创建aar文件
类来获得Spring的
然后将生产的aar文件,[tomcat_home]\\webapps\\axis2\\WEB-INF\\services目录中 6、 然后重启tomcat,访问:
http://localhost:8080/axis2/services/listServices 就可以看到刚才发布的springService了
复
制
到
7、 编写客户端测试代码
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:SpringService客户端代码 * @author hoojo * @createDate 2011-3-14 上午14: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 SpringServiceClient { 欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途
34
Axis WebService 技术指南
}
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(\, Object[] result = client.invokeBlocking(qname, new System.out.println(result[0]);
\;
\);
Object[] { null }, new Class[] { String.class });
运行后,看到bean注入的值有输出。 1#hoojo 七、 异步调用WebService
异步,说到异步需要首先将以下同步。同步就是代码按照顺序执行,当前面的代码的请求没有正常返回结果的情况下,后面的代码是不能运行。而异步正好和这点不同,异步是代码运行后,不管当前的请求是否返回结果,后面的代码都会继续运行。 关于异步在此就不再赘述了,有兴趣的可以去网上查查这方面的资料。 1、 编写服务器端的代码。 package com.hoo.service; /** * function:异步WebService服务器端代码 * @author hoojo * @createDate 2011-3-14 上午08:16:59 * @file AsynchronousService.java * @package com.hoo.service * @project Axis2WebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */ public class AsynchronousService { public String execute() { System.out.println(\正在执行此代码……\); //延迟5秒后,返回结果 欢迎转载 请保留原文作者信息 不得未经作者允许用于商业用途