java交流群:38615496
首先在MyEclipse中创建一个web project;
project取名 Ws2Pojo
服务器端
1、创建pojo类:
package sample.ws.pojo;
public class Person {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
PersonService.java
package sample.ws.service;
import sample.ws.pojo.Person;
public class PersonService {
/**
* 很简单我们只是将发过来的person返回去
* @param person
* @return
*/
public Person getPerson(Person person){
return person;
}
}
services.xml 文件内容
<?xml version="1.0" encoding="UTF-8"?>
<service name="PersonService" scope="application">
<description>PersonService</description>
<messageReceivers>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
<messageReceiver
mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass">
sample.ws.service.PersonService
</parameter>
</service>
将项目部署到tomcat上,这样服务器端就发布成功了。
现在是客户端,我们采用rpc的方式调用
1、首先建立pojo类Person(注意包名要和服务器端的person的包名相同
)
Person.java
package sample.ws.pojo;
public class Person {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
2、创建客户调用类:
package sample.ws.client;
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
import sample.ws.pojo.Person;
public class Ws2pojoClient {
public static void main(String args[]) throws java.lang.Exception{
RPCServiceClient client = new RPCServiceClient();
Options option = client.getOptions();
// 指定客户端访问的webservice服务器端地址
EndpointReference erf = new EndpointReference("http://localhost:8080/axis2/services/PersonService");
option.setTo(erf);
// 指定命名空间,指定要调用的方法
QName name = new QName("http://service.ws.sample","getPerson");
// 创建Person对象
Person person = new Person();
person.setAge("20");
person.setName("张三");
// 创建要传送的object数组
Object[] object = new Object[]{person};
// 创建返回的参数类型
Class[] returnTypes = new Class[]{Person.class};
// 调用远程服务,得到返回的object数组
Object[] response = client.invokeBlocking(name, object, returnTypes);
// 强制转换成Person对象
Person p = (Person)response[0];
System.out.println(p.getAge());
System.out.println(p.getName());
}
}
得到输出: 20
张三
分享到:
相关推荐
axis1_4 发布webservice 传递对象或返回对象(一)_benet6_新浪博客.mht
NULL 博文链接:https://jerval.iteye.com/blog/2227589
Axis中传递复杂对象和内部类 Axis中的handler、chain的特性 Axis中处理异常信息 Axis中传递文件信息 Axis常用命令介绍 Axis 提供的工具和调试 Axis 的wsdl生成代码 Axis的Header信息操作 .Net调用Axis出现的问题
Android 利用axis2 调用webservice 包含j2ee服务端代码和Android客户端代码 代码实现包含 List,map ,对象传递
3传递对象Users,得到对象Users 经我本人亲自测试 服务端代码如下: public class WebServiceTest { public String sayHello(String name){ return "Hello,"+name; } public Users getUsers(String name){ ...
1 如何发布自己的webService 2 1.1 即时发布 JWS (Java Web Service) Files - Instant Deployment 2 1.2 定制发布 Custom Deployment - ...3 如何传递javabean和你的对象 14 4 如何抛出自定义异常 18 5 如何传递文件 25
AXIS2中自带了一个通过POJO发布为WebService 的例子。这种方式发布的WebService并不需要我们生成WSDL,而直接从Bean生成WebService(自底向上模式)。典型的问题就是,如果我们直接用AXIS2中的源代码通过ant生成arr...
2.AXIS使用........................................3 2.1AXIS的介绍.....................................3 2.2AXIS的下载.....................................3 2.3AXIS的安装................................
即时发布JWS 定制发布WSDD 传递复杂对象List,Map,数组,自定义对象 RMI方式远程调用 RMI方式远程调用 JAF传输文件
就会导致对方的数据不是同步的,很难做到及时,后来就一直再搞axis,发现这个东西不是很好用,而且网上的资料太残缺了,搞的我几近崩溃,但是还是不行,后来发现axis好像不能传递List 没办法只好转向例外一种框架...
concat()函数的具体用法 ...如果传递了dict,则排序的键将用作键参数,除非它被传递,在这种情况下,将选择值(见下文)。任何无对象将被静默删除,除非它们都是无,在这种情况下将引发一个ValueErr
4 1.2.2 带自定义对象传递的Web Service ........................................................................ 8 1.3 XFire发布Web Services .....................................................
要将其应用于elment,请创建将元素和选项传递给它的Rotr对象。 < script > text = new Rotr ( "#text" , { xInverse : true , // set to true if you want to move the element opposite to cursor ...