最近复习了一下AXIS,写了2个小例子
1: bean
1package test.soap.vo;
2
3import java.io.Serializable;
4
5public class User implements Serializable {
6
7 /** *//**
8 *
9 */
10 private static final long serialVersionUID = -9043747149109792411L;
11
12 private String name;
13 private String password;
14 public String getName() {
15 return name;
16 }
17 public void setName(String name) {
18 this.name = name;
19 }
20 public String getPassword() {
21 return password;
22 }
23 public void setPassword(String password) {
24 this.password = password;
25 }
26 public String toString() {
27 return new StringBuffer().append(name+":"+password).toString();
28 }
29
30}
31
2:service
1package test.soap.service;
2
3import test.soap.vo.User;
4
5public class UserService {
6
7 public User user = null;
8
9 public UserService() {
10 super();
11
12 }
13
14 public String getUser(User u) {
15 System.out.println("user.name=" + user.getName());
16 System.out.println("user.password=" + user.getPassword());
17 return "000000000000000000000";
18
19 }
20 public String getUser(){
21 System.out.println("get user no arg");
22 return "abc";
23 }
24 public String getUser(String i){
25 System.out.println(i);
26 return "123";
27 }
28
29}
30
client 调用代码:
1 String wsdlURL = "http://localhost:8080/axis/services/soapObjSvc?wsdl";
2 String nameSpaceUri ="http://localhost:8080/axis/services/soapObjSvc";
3 org.apache.axis.client.Service service = new org.apache.axis.client.Service();
4 Call call = (Call) service.createCall();
5 QName qn = new QName("urn:BeanService", "User");
6 User u = new User();
7 u.setName("111111111111");
8 u.setPassword("22222222222");
9 call.registerTypeMapping(User.class, qn,
10 new org.apache.axis.encoding.ser.BeanSerializerFactory(User.class, qn),
11 new org.apache.axis.encoding.ser.BeanDeserializerFactory(User.class, qn));
12 String result;
13 try {
14 call.setOperationName( new QName(nameSpaceUri, "getUser") );
15 call.setTargetEndpointAddress( new URL(wsdlURL));
16
17// call.addParameter( "u", qn, ParameterMode.IN );
18// call.setReturnType( org.apache.axis.encoding.XMLType.XSD_STRING );
19
20//本行程序能够调用,传递的是string参数
21 result = (String) call.invoke( new Object[] {"abcdefg"} );
22//本行对象调用不通过,传递的是USER对象
23 result = (String) call.invoke( new Object[] {u} );
24 } catch (Exception e) {
25 e.printStackTrace();
26 result = "1Error : " + e;
27
28 }
29
30 System.out.println(result);
31
4:server-config.wsdd
1<?xml version="1.0" encoding="UTF-8"?>
2<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
3 <globalConfiguration>
4 <parameter name="adminPassword" value="admin"/>
5 <parameter name="enableNamespacePrefixOptimization" value="true"/>
6 <parameter name="disablePrettyXML" value="true"/>
7 <parameter name="sendXsiTypes" value="true"/>
8 <parameter name="sendMultiRefs" value="true"/>
9 <parameter name="sendXMLDeclaration" value="true"/>
10 <requestFlow>
11 <handler type="java:org.apache.axis.handlers.JWSHandler">
12 <parameter name="scope" value="session"/>
13 </handler>
14 <handler type="java:org.apache.axis.handlers.JWSHandler">
15 <parameter name="scope" value="request"/>
16 <parameter name="extension" value=".jwr"/>
17 </handler>
18 </requestFlow>
19 </globalConfiguration>
20 <handler name="soapmonitor" type="java:org.apache.axis.handlers.SOAPMonitorHandler">
21 <parameter name="wsdlURL" value="/axis/SOAPMonitorService-impl.wsdl"/>
22 <parameter name="serviceName" value="SOAPMonitorService"/>
23 <parameter name="namespace" value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/>
24 <parameter name="portName" value="Demo"/>
25 </handler>
26 <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
27 <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
28 <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
29 <service name="AdminService" provider="java:MSG">
30 <parameter name="allowedMethods" value="AdminService"/>
31 <parameter name="enableRemoteAdmin" value="false"/>
32 <parameter name="className" value="org.apache.axis.utils.Admin"/>
33 <namespace>http://xml.apache.org/axis/wsdd/</namespace>
34 </service>
35 <service name="Version" provider="java:RPC">
36 <parameter name="allowedMethods" value="getVersion"/>
37 <parameter name="className" value="org.apache.axis.Version"/>
38 </service>
39 <service name="SOAPMonitorService" provider="java:RPC">
40 <parameter name="allowedMethods" value="publishMessage"/>
41 <parameter name="scope" value="Application"/>
42 <parameter name="className" value="org.apache.axis.monitor.SOAPMonitorService"/>
43 </service>
44 <service name="soapObjSvc" provider="java:RPC">
45 <parameter name="allowedRoles" value="*"/>
46 <parameter name="allowedMethods" value="*"/>
47 <parameter name="className" value="test.soap.service.UserService"/>
48 <beanMapping languageSpecificType="java:test.soap.vo.User" qname="ns1:User" xmlns:ns1="urn:BeanService"/>
49 </service>
50 <transport name="http">
51 <requestFlow>
52 <handler type="URLMapper"/>
53 </requestFlow>
54 <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>
55 <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
56 <parameter name="qs.list" value="org.apache.axis.transport.http.QSListHandler"/>
57 <parameter name="qs.method" value="org.apache.axis.transport.http.QSMethodHandler"/>
58 <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>
59 <parameter name="qs.wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
60 </transport>
61 <transport name="local">
62 <responseFlow>
63 <handler type="LocalResponder"/>
64 </responseFlow>
65 </transport>
66</deployment>
67
5:wsdl
1 <?xml version="1.0" encoding="UTF-8" ?>
2- <wsdl:definitions targetNamespace="http://localhost:8080/axis/services/soapObjSvc" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:8080/axis/services/soapObjSvc" xmlns:intf="http://localhost:8080/axis/services/soapObjSvc" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="urn:BeanService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3- <!--
4WSDL created by Apache Axis version: 1.3
5Built on Oct 05, 2005 (05:23:37 EDT)
6
7 -->
8- <wsdl:types>
9- <schema targetNamespace="urn:BeanService" xmlns="http://www.w3.org/2001/XMLSchema">
10 <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
11- <complexType name="User">
12- <sequence>
13 <element name="name" nillable="true" type="soapenc:string" />
14 <element name="password" nillable="true" type="soapenc:string" />
15 </sequence>
16 </complexType>
17 </schema>
18 </wsdl:types>
19- <wsdl:message name="getUserResponse">
20 <wsdl:part name="getUserReturn" type="soapenc:string" />
21 </wsdl:message>
22- <wsdl:message name="getUserResponse2">
23 <wsdl:part name="getUserReturn" type="soapenc:string" />
24 </wsdl:message>
25- <wsdl:message name="getUserRequest2">
26 <wsdl:part name="u" type="tns1:User" />
27 </wsdl:message>
28- <wsdl:message name="getUserResponse1">
29 <wsdl:part name="getUserReturn" type="soapenc:string" />
30 </wsdl:message>
31 <wsdl:message name="getUserRequest" />
32- <wsdl:message name="getUserRequest1">
33 <wsdl:part name="i" type="soapenc:string" />
34 </wsdl:message>
35- <wsdl:portType name="UserService">
36- <wsdl:operation name="getUser">
37 <wsdl:input message="impl:getUserRequest" name="getUserRequest" />
38 <wsdl:output message="impl:getUserResponse" name="getUserResponse" />
39 </wsdl:operation>
40- <wsdl:operation name="getUser" parameterOrder="i">
41 <wsdl:input message="impl:getUserRequest1" name="getUserRequest1" />
42 <wsdl:output message="impl:getUserResponse1" name="getUserResponse1" />
43 </wsdl:operation>
44- <wsdl:operation name="getUser" parameterOrder="u">
45 <wsdl:input message="impl:getUserRequest2" name="getUserRequest2" />
46 <wsdl:output message="impl:getUserResponse2" name="getUserResponse2" />
47 </wsdl:operation>
48 </wsdl:portType>
49- <wsdl:binding name="soapObjSvcSoapBinding" type="impl:UserService">
50 <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
51- <wsdl:operation name="getUser">
52 <wsdlsoap:operation soapAction="" />
53- <wsdl:input name="getUserRequest">
54 <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://service.soap.test" use="encoded" />
55 </wsdl:input>
56- <wsdl:output name="getUserResponse">
57 <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/services/soapObjSvc" use="encoded" />
58 </wsdl:output>
59 </wsdl:operation>
60- <wsdl:operation name="getUser">
61 <wsdlsoap:operation soapAction="" />
62- <wsdl:input name="getUserRequest1">
63 <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://service.soap.test" use="encoded" />
64 </wsdl:input>
65- <wsdl:output name="getUserResponse1">
66 <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/services/soapObjSvc" use="encoded" />
67 </wsdl:output>
68 </wsdl:operation>
69- <wsdl:operation name="getUser">
70 <wsdlsoap:operation soapAction="" />
71- <wsdl:input name="getUserRequest2">
72 <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://service.soap.test" use="encoded" />
73 </wsdl:input>
74- <wsdl:output name="getUserResponse2">
75 <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/services/soapObjSvc" use="encoded" />
76 </wsdl:output>
77 </wsdl:operation>
78 </wsdl:binding>
79- <wsdl:service name="UserServiceService">
80- <wsdl:port binding="impl:soapObjSvcSoapBinding" name="soapObjSvc">
81 <wsdlsoap:address location="http://localhost:8080/axis/services/soapObjSvc" />
82 </wsdl:port>
83 </wsdl:service>
84 </wsdl:definitions>
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" mlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:getUserByU soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://10.200.7.104:8080/axis/services/soapObjSvc"
<ns1:arg0 href="#id0"/>
</ns1:getUserByU>
<multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:User" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="urn:BeanService">
<name xsi:type="soapenc:string">1111111111</name>
<password xsi:type="soapenc:string">22222222222</password>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="
http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:getUserByUResponse soapenv:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="
http://10.200.7.104:8080/axis/services/soapObjSvc"><getUserByUReturn xsi:type="soapenc:string" xmlns:soapenc="
http://schemas.xmlsoap.org/soap/encoding/">abcs</getUserByUReturn></ns1:getUserByUResponse></soapenv:Body></soapenv:Envelope>
其实自定义负责对象 与返回复杂对象使用基本一样的,一定要regist,另外WSDD一定要声明一一下
// call.addParameter("user",qn,ParameterMode.IN);
// call.setReturnType(qn,java.lang.String.class);
下面这2句也会有些用处.
以上例子在WEBLOGIC和TOMCAT上都测试过了,没有什么问题
posted on 2007-06-15 15:48
小小程序程序员混口饭吃 阅读(2041)
评论(0) 编辑 收藏 所属分类:
java