最近复习了一下AXIS,写了2个小例子
1: bean
1
package test.soap.vo;
2
3
import java.io.Serializable;
4
5
public 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
1
package test.soap.service;
2
3
import test.soap.vo.User;
4
5
public 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
- <!--
4
WSDL created by Apache Axis version: 1.3
5
Built 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
小小程序程序员混口饭吃 阅读(2046)
评论(0) 编辑 收藏 所属分类:
java