一、安装
jsp程序员应该不会装错。首先下载axis,解压缩。将axis目录拷贝到tomcat下webapps下。ok,对就这么简单。
启动tomcat,访问http://localhost:8080/axis 检查安装是否成功
二、部署(三种方式)
(1)、Dynamic Invocation Interface ( DII)
我认为这是其中最简单的方式,也是最不想介绍的方式。
1.编写服务端程序HelloClient
1 public class HelloClient
2 {
3 public String getName(String name)
4 {
5 return "hello "+name;
6 }
7 }
2、将源码拷贝到Axis_HOME下,重命名为 HelloClient.jws
3、访问连接http://localhost:8080/axis/HelloClient.jws?wsdl,页面显示Axis自动生成的wsdl
4、编写访问服务的客户端 TestHelloClient.java
1 import org.apache.Axis.client.Call;
2 import org.apache.Axis.client.Service;
3 import javax.xml.namespace.QName;
4 import javax.xml.rpc.ServiceException;
5 import java.net.MalformedURLException;
6 import java.rmi.RemoteException;
7
8 public class SayHelloClient2
9 {
10 public static void main(String[] args)
11 {
12 try
13 {
14 String endpoint =
15 "http://localhost:8080/Axis/HelloClient.jws";
16
17 Service service = new Service();
18 Call call = null;
19
20 call = (Call) service.createCall();
21
22 call.setOperationName(new QName(
23 "http://localhost:8080/Axis/HelloClient.jws",
24 "getName"));
25 call.setTargetEndpointAddress
26 (new java.net.URL(endpoint));
27
28 String ret = (String) call.invoke(new Object[]
29 {"zhangsan"});
30 System.out.println("return value is " + ret);
31 }
32 catch (Exception ex)
33 {
34 ex.printStackTrace();
35 }
36 }
37 }
(2)、Stubs方式
这种方式对自己来说记忆很深刻,做的第一个小项目,调用别人提供的ws就是这种方式。
1、编写部署服务端程序,同上边DII方式,本次仍使用上边部署的HelloClient
2、编写代理接口
1 public interface HelloClientInterface
2 extends java.rmi.Remote
3 {
4 public String getName(String name)
5 throws java.rmi.RemoteException;
6 }
3、编写并执行客户端程序TestHelloClient.java
1
2 import javax.xml.rpc.Service;
3 import javax.xml.rpc.ServiceFactory;
4 import java.net.URL;
5 import javax.xml.namespace.QName;
6
7 public class TestHelloClient
8 {
9 public static void main(String[] args)
10 {
11 try
12 {
13 String wsdlUrl =
14 "http://localhost:8080/Axis/HelloClient.jws?wsdl";
15 String nameSpaceUri =
16 "http://localhost:8080/Axis/HelloClient.jws";
17 String serviceName = "HelloClientService";
18 String portName = "HelloClient";
19
20 ServiceFactory serviceFactory =
21 ServiceFactory.newInstance();
22 Service afService =
23 serviceFactory.createService(new URL(wsdlUrl),
24 new QName(nameSpaceUri, serviceName));
25 HelloClientInterface proxy = (HelloClientInterface)
26 afService.getPort(new QName(
27 nameSpaceUri, portName),
28 HelloClientInterface.class);
29 System.out.println
30 ("return value is "+proxy.getName("john") ) ;
31 }catch(Exception ex)
32 {
33 ex.printStackTrace() ;
34 }
35 }
36 }
(3)、Dynamic Proxy方式
(我比较喜欢用这种方式。)
1. 服务端同样使用一样的测试代码,不过打包成jar,然后放在axis目录web-inf/lib下。
2. 编写server-config.wsdd 放在axis web-inf下。
1
2 <?xml version="1.0" encoding="UTF-8"?>
3 <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
4 <globalConfiguration>
5 <parameter name="adminPassword" value="admin"/>
6 <parameter name="enableNamespacePrefixOptimization" value="true"/>
7 <parameter name="disablePrettyXML" value="true"/>
8 <parameter name="sendXsiTypes" value="true"/>
9 <parameter name="sendMultiRefs" value="true"/>
10 <parameter name="sendXMLDeclaration" value="true"/>
11 <requestFlow name="RequestFlow1">
12 <handler name="Handler1" type="java:org.apache.axis.handlers.JWSHandler">
13 <parameter name="scope" value="application"/>
14 </handler>
15 <handler name="Handler2" type="java:org.apache.axis.handlers.JWSHandler">
16 <parameter name="scope" value="request"/>
17 <parameter name="extension" value=".jwr"/>
18 </handler>
19 </requestFlow>
20 </globalConfiguration>
21 <responseFlow name="ResponseFlow1">
22 <handler name="Handler1" type="LocalResponder"/>
23 </responseFlow>
24 <handler name="Handler1" type="LocalResponder"/>
25 <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
26 <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
27 <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
28 <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
29 <requestFlow name="RequestFlow1">
30 <handler name="Handler1" type="URLMapper"/>
31 <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
32 </requestFlow>
33
34 <service name="TESTWS" style="wrapped">
35 <parameter name="allowedMethods" value="*"/>
36 <parameter name="scope" value="Application"/>
37 <parameter name="className" value="HelloClient"/>
38 </service>
39
40 <transport name="http">
41 <requestFlow name="RequestFlow1">
42 <handler name="Handler1" type="URLMapper"/>
43 <handler name="Handler2" type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
44 </requestFlow>
45 </transport>
46 <transport name="local">
47 <responseFlow name="ResponseFlow1">
48 <handler name="Handler1" type="LocalResponder"/>
49 </responseFlow>
50 </transport>
51 </deployment>
测试程序仍然可以是DII方式中的测试程序。
不过附带vbs脚本测试:
1
2 Set SOAPClient = CreateObject("MSSOAP.SOAPClient30")
3 SOAPClient.MSSOAPInit("http://127.0.0.1:8080/axis/services/TESTWS?wsdl")
4 WScript.Echo SOAPClient.getName("devTest")
5
再附带一个asp连接程序:
1 Set SOAPClient = server.CreateObject("MSSOAP.SOAPClient30")
2 SOAPClient.ClientProperty("ServerHTTPRequest") = True
3 SOAPClient.MSSOAPInit("http://127.0.0.1:8080/axis/services/TESTWS?wsdl")
4 Dim wsrequest=SOAPClient.getName("zhangsan")
不过注意,vb 和asp连接应该装 soapsdk.exe 和msxmlchs.msi软件。
posted on 2007-02-08 09:18
-274°C 阅读(46956)
评论(0) 编辑 收藏 所属分类:
WebService