一、安装

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 阅读(46955) 评论(0)  编辑  收藏 所属分类: WebService

只有注册用户登录后才能发表评论。


网站导航:
 

常用链接

留言簿(21)

随笔分类(265)

随笔档案(242)

相册

JAVA网站

关注的Blog

搜索

  •  

积分与排名

  • 积分 - 911530
  • 排名 - 40

最新评论