http://topic.csdn.net/u/20080506/16/6932ccbc-27ce-43a4-963a-e8e0a6e87f52.html
http://di201yao.iteye.com/blog/310292
本文的预定读者首先要对j2ee有所了解,熟悉xml,tomcat等基本内容,本文主要是简单介绍一下web服务的基本内容,怎样在java web开发中构建SOAP服务:
一、SOAP(Simple Object Access Protocol)简单对象访问协议
要了解SOAP,首先就需要了解分布式计算的由来,随着下一代的分布式计算体系web服务的出现,SOAP成为了创建和调用通过网络发布的应用程序的实际通信标准。
正在装载数据……
SOAP类似传统的二进制协议IIOP(CORBA)和JRMP(RMI),但它不采用二进制数据表示法,而是采用使用XML的,基于文本的数据表示法。
通过XML表示法,SOAP定义了一种小型有线连接协议和编码格式,以表示数据类型、编程语言和数据库,还可以使用各种Internet标准协议作为其消息传输工具,还可以提供表示RPC和文档驱动的消息交换等通信模型的约定。请注意,W3C正致力于SOAP的研究,http://www.w3c.org/2000/xp/Group/ ,并得到了主流供应商的积极响应,以便对于基于XML的协议相关的重要任务达成共识,并定义其关键要求和使用场景。
SOAP1.2的基本规范定义了以下基本内容:
1)用于将XML文档表示为结构化SOAP消息的语法和语义
2)在SOAP消息中表示数据的编码标准
3)用于交换SOAP消息的通信模型
4)SOAP传输等底层协议的绑定
SOAP消息主要包括了信封头,消息头,主体,附件几部分
一个简单的SOAP消息表示:
POST /StudentInfo HTTP/1.1
Host:anthropology.cun.edu
Content-Type: text/xml;charset="utf-8"
Content-Length: 640
SOAPAction: "GetStudentInfo"
<SOAP-ENV:Envelop xmlns:SOAP-ENV="http://www.w3c.org/2001/06/soap-envelope"
xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3c.org/2001/XMLSchema"
SOAP-ENV:encodingStyle="http://www.w3c.org/2001/06/soap-encoding">
<SOAP-ENV:Header>
<person:mail xmlns:person="http://www.cun.edu/Header">xyz@cun.edu
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:GetStudentInfo xmlns:m="http://www.cun.edu/jws.student.studentInfo">
<student_name xsi:type='xsd:string'>
Wang wen yin
</student>
</m:GetStudentInfo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelop>
以上是1.2版本命名空间,1.1的命名空间 SOAP ENVELOPE:http://schemas.xmlsoap.org/soap/envelop/ ,SOAP ENCODING: http://schemas.xmlsoap.org/soap/encoding/
关于SOAP编码规范请参阅www.w3c.org/TR/xmlschema-2/ 定义的编码值,其他的一些规范可以上www.w3c.org 上具体查看。
二、以下从实际例子来学习
这里我使用的是Apache的一个子项目Axis的具体例子,便于深入了解soap的运行:
1)下载Axis的相关内容http://ws.apache.org/axis/:
2)建立一个实例程序(遵守j2ee的web程序规范),如(WebServiceTest目录)
把axis中lib文件夹的内容拷到你的WebServiceTest/WEB-INF/lib下,同时上网下载xerces(下载地点:http://xml.apache.org/xerces-j/)解释器的包文件xerces.jar,也拷到WebServiceTest/WEB-INF/lib文件夹下,(若要配置log4j,请把属性文件log4j.properties拷到WebServiceTest/WEB-INF/classes文件夹下)
3)修改应用程序WebServiceTest/WEB-INF中的web.xml文件:主要servlet设置如下
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/servlet/TestServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>AdminServlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.AdminServlet
</servlet-class>
<load-on-startup>100</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AdminServlet</servlet-name>
<url-pattern>/servlet/AdminServlet</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>wsdl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
你现在可以在网址里输入http://localhost/WebServiceTest/servlet/TestServlet 看到了吗?Axis是使用axis.jar包里的org.apache.axis.transport.http.AxisServlet对应用程序进行处理的,基本配置就讲到这里。
三、接着我们来说Axis中的内核
1)不使用Tomcat引擎运行Axis。
先建立一个脚步文件,对环境变量classpath进行设置要把lib下的那些包文件的路径全都包括进去,运行:java org.apache.axis.transport.http.SimpleAxisServer <port>
2)内部服务处理程序是org.apache.axis.providers.java.RPCProvider,标志出服务所需的方法,然后提供从SOAP请求消息组成部分的参数。
3)Axis的应用程序端管理功能:
java org.apache.axis.client.AdminClient 就会列出参数,可供你选择。我们的例子是:java org.apache.axis.client.AdminClient -l http://localhost/WebserviceTest/servlet/TestServlet list 就会显示出服务列表,返回的是xml文件
4)wsdl2java应用程序可以把wsdl文件创建基于java的程序,如占位程序等
java org.apache.axis.wsdl.WSDL2java <url>
Axis的基本内容说到这里
四、具体例子
1)编写逻辑程序,简单如:SoapTest.java
public class SoapTest{
public String getStr(String name){
return "Hello,"+name;
}
}
2) 部署服务,编写wsdd文件SoapTest_deploy.wsdd:
<deployment name="SimapleTest" xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
<service name="SoapTest" provider="java:RPC">
<parameter name="className" value="SoapTest"/>
<parameter name="allowedMethods" value="getStr"/>
</service>
</deployment>
其中className参数是你的想部署的类名(全名),allowedMethods是调用的服务的方法,如果有多个方法的话可以用空格分开(如: <parameter name="allowedMethods" value="getStr getMoney"/>),当用*的时候表示全部。
好了现在准备部署了,确保环境路径classpath设置正确,运行:
java org.apache.axis.client.AdminClient -l http://localhost/WebserviceTest/servlet/TestServlet SoapTest_deploy.wsdd
(这里不懂的话,请参考以上的说明)
ok,呵呵,至此,我们已经完成了一个web服务的部署:测试http://localhost/WebServiceTest/servlet/TestServlet 看里面是否多了一个选择SoapTest服务?
如果不想要服务了那重新编写一个wsdd文件,内容改为:
<deployment name="SimapleTest" xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance">
<service name="SoapTest"/>
</deployment>
和上面一样,对比一下就ok了。
五、客户端测试:
客户端我们也可以使用java来进行测试,网上也有资料的,你可以去学习,很简单的。现在为了体现web服务的魅力,我用.NET平台来测试吧,客户端使用c#编写(先要安装.net framework sdk):
1)通过wsdl生成web服务代理,在net平台下运行:
wsdl /l:CS /protocol:SOAP /out:SoapTestClient.cs http://localhost/WebserviceTest/services/SoapTest?wsdl
我们通过wsdl得到了一个cs文件SoapTestClient.cs(当前目录),你可以打开cs文件,研究一下里面的代码,那个getStr(string name)就是我们需要调用的方法,我们的客户端通过调用该方法就可以调用服务器端的方法,内部的转化wsdl.exe工具已经帮我们完成了,axis下的WSDL2Java
分享到:
相关推荐
快速收集邮箱地址快速收集邮箱地址快速收集邮箱地址
《邮箱地址搜集器》强大的邮箱地址搜集功能可以帮您根据设定的种子数量和关键字内容,在互联网上搜集@163.com、@126.com、@QQ.com、@hotmail.com、@sina.com、@gmail.com、@sohu.com、@aliyun.com、@foxmail.com、@...
收集了包括中国电信、中国移动、中国联通、长城宽带、聚友宽带等 ISP 的最新准确 IP 地址数据。包括 最全的网吧数据。希望能够通过大家的共同努力打造一个没有未知数据,没有错误数据的QQ IP。IP数据库每 5天更新一...
垃圾邮件不仅使接收邮件的用户烦恼,同样也很难为发送邮件的...该软件的最大特点是允许设置关键字,利用搜索引擎搜集与所设置的关键字直接相关的电子邮箱地址。最大程度地确保商家能够更有针对性地发送商业电子邮件。
使用Shell脚本对局域网中的所有主机进行MAC地址的收集,便于日常的维护管理。同时对局域网中部署FTP服务的主机进行监控,能够快速得知哪台具有FTP的主机在提供服务。下图该局域网的拓扑图。 图1局域网拓扑 实现MAC...
用于搜集邮件地址 非常方便 基于网络爬虫方式搜集,非常好用 <br>如不好用退还积分
邮件搜集 邮件采集邮件搜集 邮件采集邮件搜集 邮件采集邮件搜集 邮件采集邮件搜集 邮件采集邮件搜集 邮件采集邮件搜集 邮件采集邮件搜集 邮件采集邮件搜集 邮件采集
地址抓取器我用来收集地址数据的东西查看节点模块要求,并获取有关如何使用节点刮取数据的信息。
电子邮件地址搜集器,使用Winsock获取网页,用自动机完成正则表达式扫描,无法编译的可以直接运行debug下的可执行程序。
计算机电子书下载地址收集
论坛收集到的EMAIL地址共110000条
从公共来源收集州地址数据。
通过设定一个网站入口,即通过网络蜘蛛收集指定级别的电子邮件地址.
MAC地址IP地址端口关系概念[收集].pdf
2008年10月到12月间,精心收集+筛选+发送成功的邮件地址。共计6万6千个。
全国DNS表单 【个人收集全国DNS地址】
电脑网卡物理地址查询方法[收集].pdf
Maxprog.eMail.Extractor是一款非常专业的Email邮箱搜集工具,对于有需要收集Email的人来说是一个很好用的工具。 Maxprog eMail Extractor可以从网站或HTML文件里抓取Email,还会顺着超连结的网页一直抓下去。可以...
三、vlan端口与mac地址绑定[收集].pdf
华为s5700交换机配置全局地址池dhcp[收集].pdf