注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

程序员小站

J2EE丨Spring | JVM | Scala

 
 
 

日志

 
 

SOAP入门实例(基于Apache-AXIS)  

2012-02-26 19:53:30|  分类: Java Web |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。简单来说就是SOAP提供一种方法接口,可以通过别的程序调用,他们之间用XML通讯。SOAP实现和调用可以用不同的语言,只要支持SOAP规范即可。
1.准备
软件和jar包:Tomcat软件 : apache-tomcat-7.0.23
                        Apache-AXIS软件:axis-bin-1_4.zip
                        mail.jar
                        activation.jar
                        xerces.jar
2.基本配置
安装Tomcat,解压axis-bin-1_4.zip 把压缩后webapps的axis文件夹复制到tomcat的webapps里。
把  mail.jar、activation.jar、xerces.jar复制到tomcat\lib 目录下
启动tomcat,打开:localhost:8080/axis/  然后点击Validation连接,如果没报错说明配置正确。
 
3.创建SOAP服务
Tomcat充当Apache-AXIS的容器,而Apache-AXIS又充当SOAP的容器。
3.1在任意位置创建SOAP服务的java类:Hello.java

public class Hello{
    public String sayHello(String name){
        return "Hello"+name;
    }
}

编译后把Hello.class文件复制到tomcat/webapps/axis/WEB-INF/classes下
3.2创建SOAP服务的发布描述符文件:deploy.wsdd

 <deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/"
                xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
      <service name="urn:helloService" provider="java:RPC" >
        <namespace>http://soapinterop.org/</namespace>
        <parameter name="className" value="Hello" />
        <parameter name="allowedMethods" value="*" />
      </service>
     </deployment>


 deployment元素:指定wsdd所用的XML名字空间。deployment是其根元素,可以定义多个service元素
 service元素:定义一项SOAP服务,他有name和provider两个属性,name代表这项服务的唯一标示符,
                SOAP  会根据name属性访问该SOAP服务,provider指定了实现这项服务的语言及服务方式。
 parameter元素:包含name和value属性,如果name值为className,则指定该服务的类名,如果name为
                    allowedMethods,则指定该项服务包含的方法。


4.发布SOAP服务:
打开DOS窗口,切换到deploy.wsdd目录下(或指定wsdd文件的路径):运行以下命令,运行之前必须确保Tomcat已经开启,axis运行正常。并且Hello.class文件在WEB-INF/classes中。
java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/servlet/AxisServlet deploy.wsdd  
这样一个SOAP服务就发布了,
可以在浏览器打开http://localhost:8080/axis/servlet/AxisServlet
查看已经发布的服务,AdminService和Version是系统自带的。
SOAP入门实例(基于Apache-AXIS) - 湘雅之梦 - nbsp爱的天空
看到我们的urn:helloService 已经发布成功啦,接下来就是客户端访问。
5.浏览器访问:
http://localhost:8080/axis/services/urn:helloService?method=sayHello&paramteter=World
得到:

 <?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>
- <sayHelloResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <sayHelloReturn xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">HelloWorld</sayHelloReturn>
  </sayHelloResponse>
  </soapenv:Body>
  </soapenv:Envelope>


 就是返回的XML格式的信息啦,HelloWorld就是我们的java方法返回的。
6.java程序访问
新建一个java工程,把axis-bin-1_4.zip解压后的lib文件夹下的全部jar包和xerces.jar加入到classpath路径。
新建java文件:

import java.net.URL;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class SOAPClient {
public static void main(String[] args) {
String name = "World";
String endPoint = "http://localhost:8080/axis/services/helloService";
try {

Service service = new Service();

Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(endPoint));
call.setOperationName(new QName("urn:helloService","sayHello"));
String result = (String) call.invoke(new Object[]{name});
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
}



运行 输出:HelloWorld 。
java调用SOAP成功!SOAP入门实例(基于Apache-AXIS) - 湘雅之梦 - nbsp爱的天空
  评论这张
 
阅读(1088)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017