架设 apache Axis的webservices服务器和客户端

1. 服务端

          web服务器: Tomcat5.5, 用到Axis2 1_4_1 (http://apache.mirror.phpchina.com/ws/axis2/1_4_1/ )

 

          取其下webapps下的axis 文件夹.放到Tomcat /webapps下.

          写一个要发布的的java类 

 

Java代码
  1. public   class  Hello{       
  2.      public  String sayHello(String name){       
  3.          return   "你好," +name;   
  4.     }       
  5. }    
public class Hello{    
	public String sayHello(String name){    
		return "你好,"+name;
	}    
}  

 

 

    将该文件(Hello.java)改名为Hello.jws 并拷贝到Tomcat 的 webapps/axis下.

 

    下面我们就可以测试该Web服务:

          启动Tomcat, 打开浏览器并输入刚刚创建的文件名对应的URL地址 http://localhost:8089/axis/Hello.jws

 

There is a Web Service here
       
        Click to see the WSDL

 

点击可以查看到WSDL文档,如下 

 

Xml代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < wsdl:definitions   targetNamespace = "http://localhost:8089/axis/Hello.jws"   xmlns:apachesoap = "http://xml.apache.org/xml-soap"   xmlns:impl = "http://localhost:8089/axis/Hello.jws"   xmlns:intf = http://localhost:8089/axis/Hello.jws  
  3. xmlns:soapenc = http://schemas.xmlsoap.org/soap/encoding/  
  4. xmlns:wsdl = http://schemas.xmlsoap.org/wsdl/  
  5. xmlns:wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/"   xmlns:xsd = "http://www.w3.org/2001/XMLSchema" >   
  6. <!--WSDL created by Apache Axis version: 1.4   
  7. Built on Apr 22, 2006 (06:55:48 PDT)-- >   
  8.   
  9.     < wsdl:message   name = "sayHelloResponse" >   
  10.   
  11.        < wsdl:part   name = "sayHelloReturn"   type = "xsd:string" />   
  12.   
  13.     </ wsdl:message >   
  14.   
  15.     < wsdl:message   name = "sayHelloRequest" >   
  16.   
  17.        < wsdl:part   name = "name"   type = "xsd:string" />   
  18.   
  19.     </ wsdl:message >   
  20.   
  21.     < wsdl:portType   name = "Hello" >   
  22.   
  23.        < wsdl:operation   name = "sayHello"   parameterOrder = "name" >   
  24.   
  25.           < wsdl:input   message = "impl:sayHelloRequest"   name = "sayHelloRequest" />   
  26.   
  27.           < wsdl:output   message = "impl:sayHelloResponse"   name = "sayHelloResponse" />   
  28.   
  29.        </ wsdl:operation >   
  30.   
  31.     </ wsdl:portType >   
  32.   
  33.     < wsdl:binding   name = "HelloSoapBinding"   type = "impl:Hello" >   
  34.   
  35.        < wsdlsoap:binding   style = "rpc"   transport = "http://schemas.xmlsoap.org/soap/http" />   
  36.   
  37.        < wsdl:operation   name = "sayHello" >   
  38.   
  39.           < wsdlsoap:operation   soapAction = "" />   
  40.   
  41.           < wsdl:input   name = "sayHelloRequest" >   
  42.   
  43.              < wsdlsoap:body   encodingStyle = http://schemas.xmlsoap.org/soap/encoding/  
  44. namespace = "http://DefaultNamespace"   use = "encoded" />   
  45.   
  46.           </ wsdl:input >   
  47.   
  48.           < wsdl:output   name = "sayHelloResponse" >   
  49.   
  50.              < wsdlsoap:body   encodingStyle = http://schemas.xmlsoap.org/soap/encoding/  
  51. namespace = "http://localhost:8089/axis/Hello.jws"   use = "encoded" />   
  52.   
  53.           </ wsdl:output >   
  54.   
  55.        </ wsdl:operation >   
  56.   
  57.     </ wsdl:binding >   
  58.   
  59.     < wsdl:service   name = "HelloService" >   
  60.   
  61.        < wsdl:port   binding = "impl:HelloSoapBinding"   name = "Hello" >   
  62.   
  63.           < wsdlsoap:address   location = "http://localhost:8089/axis/Hello.jws" />   
  64.   
  65.        </ wsdl:port >   
  66.   
  67.     </ wsdl:service >   
  68.   
  69. </ wsdl:definitions >   

 

 

 

 

webservices服务端发布完毕.

 

------------------------------------------------------------------------------------------------------------------------------

 

webservices客户端

 

 

根据wsdl文件生成java文件

 

     1. 新建一文件夹用于保存下列文件和文件夹. 

 

     2. 下载WSDL文档, 保存为xml格式,取名为wsdl.xml .

 

     3.   新建一个wsdl2java.bat文件,输入

 

.bat代码
  1. set Axis_Lib=lib   
  2. set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%   
  3. set Output_Path=class   
  4. set Package=com.axisws.client   
  5. %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o %Output_Path% -p %Package% wsdl.xml  

         备注: Axis_Lib 设置你的axis相关jar包,可以是绝对路径, 本例jar包放在本目录下的lib文件夹下.

                 Output_Path 为输出java文件的路径,可以为绝对路径, 本例生成到本目录下的class文件夹下.

                 Package 为生成文件的默认包名.

                 最后的wsdl.xml 为你下载的WSDL文档.

 

     4. 在本目录下的lib文件夹下放入下列jar包(11个, 都在下载的Axis2 1_4_1的lib下)

           activation.jar   axis.jar    axis-ant.jar    commons-discovery-0.2.jar    commons-logging-1.0.4.jar

           jaxrpc.jar     log4j-1.2.8.jar    mailapi_1_3_1.jar    saaj.jar    wsdl4j-1.5.1.jar    xml-apis-2.6.2.jar

 

     5. 文件夹包含 : wsdl.xml     wsdl2java.bat     lib文件夹

          运行批处理文件后, 会生成一个class文件夹.文件夹内就是生成的类文件.

              Hello_PortType.java               HelloService.java

              HelloServiceLocator.java        HelloSoapBindingStub.java

 

      6. 测试客户端, 新建java项目, 把生成的文件连包一起导入, lib内的jar包也导入(文件运行需要).

 

      7. 编写测试文件

 

Java代码
  1. package  com.axisws.client.test;   
  2.   
  3. import  java.rmi.RemoteException;   
  4. import  javax.xml.rpc.ServiceException;   
  5. import  com.axisws.client.HelloServiceLocator;   
  6. import  com.axisws.client.Hello_PortType;   
  7.   
  8. public   class  TestAxisClient {   
  9.   
  10.      public   static   void  main(String[] args) {   
  11.         HelloServiceLocator service =  new  HelloServiceLocator();   
  12.         Hello_PortType hello =  null ;   
  13.          try  {   
  14.   
  15.             hello = service.getHello();   
  16.             System.out.println(hello.sayHello( "Tom" ));   
  17.   
  18.         }  catch  (ServiceException e) {   
  19.             e.printStackTrace();   
  20.         }  catch  (RemoteException e) {   
  21.             e.printStackTrace();   
  22.         }   
  23.     }   
  24. }  
package com.axisws.client.test;

import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import com.axisws.client.HelloServiceLocator;
import com.axisws.client.Hello_PortType;

public class TestAxisClient {

	public static void main(String[] args) {
		HelloServiceLocator service = new HelloServiceLocator();
		Hello_PortType hello = null;
		try {

			hello = service.getHello();
			System.out.println(hello.sayHello("Tom"));

		} catch (ServiceException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}
}

     运行得到:     你好,Tom

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值