webServices学习之二——axis1传递复杂类型javabean

            继续axis1的实现,传递复杂类型javabean:

 

一、服务端:

 服务端需要在server-config.wsdd文件中要发布的service 中加入 beanMapping  指定要 传递JavaBean的类型,

见红色部分:

 

 

 <service name="MyServices" provider="java:RPC">
  <parameter name="allowedMethods" value="*"/>
  <parameter name="className" value="haohao.MyServices"/>
  <beanMapping languageSpecificType="java:haohao.User"    
    	qname="ns:User" xmlns:ns="urn:User"/>
 </service>
 

 

发布成功后的wsdl文件,有对JavaBean类型的描述:

 

 

<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:User">
	<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
	<complexType name="User">
		<sequence>
			<element name="id" nillable="true" type="xsd:long"/>
			<element name="pwd" nillable="true" type="xsd:string"/>
			<element name="username" nillable="true" type="xsd:string"/>
		</sequence>
	</complexType>
</schema>
</wsdl:types>

 

 

二、客户端调用:

 

 

private static String nameSpaceUri = "http://localhost:8080/axisTest/services/MyServices";
Service service = new Service();
			Call call = (Call) service.createCall();
			QName qn = new QName("urn:BeanService","SimpleObject");
			call.registerTypeMapping(User.class, qn,
				new BeanSerializerFactory(User.class, qn),
				new BeanDeserializerFactory(User.class, qn));
			
			call.setTargetEndpointAddress(new java.net.URL(serviceUrl));

			call.setOperationName(new QName(nameSpaceUri, "sayHello"));
			str = (String) call.invoke(new Object [] {createMorkUser()});
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值