- 浏览: 584146 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
liuzeyuss:
好文章,顶顶
java 线程死锁的检测 -
ysite:
hugh.wang 写道请问你这个能还原吗?短网址用的是HAS ...
Java版短网址(ShortUrl)的算法 -
lv双:
没有注释,看的费劲
java 线程死锁的检测 -
dgj:
好帖子竟然没人顶...
java 线程死锁的检测 -
天空趋虚:
不好,你这只是记录式的博客,不是分享式的博客,对浏览着不友好. ...
一些技术牛人的博客
什么是Web Service
Web Service 是能够基于网络 ,尤其是基于万维网(World Wide Web )直接调用的能够处理离散任务或连续任务的软件 模型。目前较为流行的应用是,由一家公司对其专有数据进行封装,提供Web Service ,然后其它公司就可以通过Internet 来动态使用这些在线服务。这为未来全球的电子商务发展提供了新的标准和架构。
Web Service 架构
Web Service 是独立的、模块化的应用,能够通过因特网来描述、发布、定位以及调用。在Web Service 的体系架构中包括三个角色:服务提供者(Service Provider) 、服务请求者(Service Requestor) 、服务注册器(Service Registry) 。角色间主要有三个操作:发布(Publish) 、查找(Find) 、绑定(Bind) 。
下图清楚的描述了三种角色,以及角色之间的作用关系。
图示一:
图示二:
这个流程图显示了Web Services中的核心技术是如何工作的。
这里,Provider是提供服务的应用程序组件,Requester是使用服务的客户端程序。很多其他技术也会参与到交互中,但是这个图只显示了在Web Services环境中必需的核心技术组件。
Web Service 协议标准
简单对象访问协议(SOAP )
SOAP 是Simple Object Access Protocol 的缩写,是一种基于XML 的不依赖传输协议的表示层协议,用来在分散或分布式的应用程序 之间方便地以对象的形式交换数据。在SOAP 的下层,可以是HTTP/HTTP ,也可以是SMTP/POP3 ,还可以是为一些应用而专门设计的特殊的通信协议。
SOAP 包括三个主要部分:
² SOAP 封装结构:定义了一个整体框架,以表示消息中包含什么内容 ,谁来处理这些内容 以及这些内容 是可选的或是必需的。
² SOAP 编码规则:定义了用以交换应用程序 定义的数据类型的实例的一系列机制。
² SOAP RPC 表示:定义了一个用来表示远程过程调用和应答的协定。
Web Service 描述语言(WSDL )
WSDL 是Web Service Des cription Language 的缩写,该语言将网络 服务定义成一个能交换消息的通信端点集,为分布式系统 提供了帮助文档,同时也可作为自动实现应用间通信的解决方案。
统一描述、发现和集成协议(UDDI )
UDDI 是一套基于Web 的、分布式的、为Web Service 提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service 注册,以使别的企业能够发现的访问协议的实现标准。
以上概念转自http://www.itlove.net/Article/203/207/2005/2005082532541.html
XFire
XFire是一个免费的开源SOAP框架,它不仅可以极大方便地实现这样一个环境,并且可以提供许多Web Services规范中高级特征,这些特征在多数的商业或者开源工具都没有提供。http://xfire.codehaus.org/Download 是它的官方网站下载区,同时你也可以了解关于它的更多内容。
创建过程示例
下面我们就来使用Java构建一个WebService并且构建一个客户端来测试访问它。
首先请确保你的JDK和Tomcat在Eclipse环境中是可用的,配置方法不做赘述。并且你了解一些java编程技术和tomcat的发布常识。
版本信息:MyEclipse6.0.0M1;Tomcat6.0;JDK1.5;Xfire1.2
1、打开MyEclipse新建一个WebService Project,为你的项目命名,我选择了Java EE5.0,项目在你的WorkSpace目录下。下一步:看到了这个界面
在这里Eclipse为你创建了webService的配置文件services.xml(主意文件名是有“s”的),并进行了Xfire的 Servlet基本配置告诉项目你使用了Xfire改信息将体现在项目的web.xml文件中。继续下一步,加载Xfire相关的jar包,你看到了
在这个项目里我勾选了Xfire1.2 Core Libraries;HTTP Client Libraries;XML Beans Libraries。主要是确保引入了这些包包:
如果你好奇其他的包包是做什么用的就有待于我们在今后的学习中继续探究了~点击“Finish”完成了项目创建。目录结构如下图所示:
打开web.xml我们可以看到如下片断:
- < servlet >
- < servlet-name > XFireServlet </ servlet-name >
- < servlet-class > org.codehaus.xfire.transport.http.XFireConfigurableServlet </ servlet-class >
- < load-on-startup > 0 </ load-on-startup >
- </ servlet >
- < servlet-mapping >
- < servlet-name > XFireServlet </ servlet-name >
- < url-pattern > /services/* </ url-pattern >
- </ servlet-mapping >
- < welcome-file-list >
- < welcome-file > index.jsp </ welcome-file >
- </ welcome-file-list >
接下来的工作是开始编写java类接下来我们要写一个服务端java类。模拟应用是一个银行转账应用,从账户A转账到账户B并需要给出金额和货币种类。我们先来实现一个接口IBankingService .java代码全文如下:
- package com.mybank.xfire .example;
- public interface IBankingService {
- public String transferFunds(
- String fromAccount, String toAccount, double amount, String currency);
- }
然后编写一个普通的Java类BankingService 包含了一个叫做transferFunds()的方法来为我们完成这项工作。它需要四个输入参数:
- package com.mybank.xfire .example;
- import java.text.NumberFormat;
- import java.text.DecimalFormat;
- public class BankingService implements IBankingService {
- //Default constructor.
- public BankingService (){
- }
- /** Transfers fund from one account to another.
- */
- public String transferFunds(
- String fromAccount, String toAccount, double amount, String currency){
- String statusMessage = "" ;
- //调用业务逻辑执行操作.
- //建立并返回状态信息.
- try {
- NumberFormat formatter = new DecimalFormat( "###,###,###,###.00" );
- statusMessage = "COMPLETED: " + currency + " " + formatter.format(amount)+
- " was successfully transferred from A/C# " + fromAccount + " to A/C# " + toAccount;
- } catch (Exception e){
- statusMessage = "BankingService .transferFunds(): EXCEPTION: " + e.toString();
- }
- return statusMessage;
- }
- }
你可以看到BankingService 是一个普通的Java类,没有任何代码告诉我们它将会在Web Service s中使用。只是要有默认的构造函数,类型是public。这是必须的。否则,XFire 不能够初始化这个类。好的,这里我们不需要增加任何东西。我们所有的工作都在部署描述符里完成。
Web 应用的部署描述符
在Java中,Web 应用程序通常需要至少一个部署描述符(叫做web .xml)对其进行配置。XFire 本身是一个基于servlet的应用程序。因此,我们需要增加必要的引用到描述符文件中。然后我们还必须配置将要创建的Web Service s。我们使用一个称为service s.xml的新文件来完成这件事。在使用Eclipse工具构建工程的时候我们已经完成了这项配置(参见(上)文)。
service s.xml
- < beans xmlns = "http://xfire .codehaus.org/config/1.0" >
- < service >
- < name > Banking </ name >
- < namespace > mybank </ namespace >
- < service Class > com.mybank.xfire .example.IBankingService </ service Class >
- < implementationClass > com.mybank.xfire .example.BankingService </ implementationClass >
- </ service >
- </ beans >
Web Service s的定义包含在元素中,它还含有一些子元素。
第一个子元素是Banking,它可以是你提供任何的合法名字。这将会被客户端程序和其它需要定位你的服务的组件用到。例如,在服务准备好以后,你将在浏览器上使用这个名字来查看WSDL。
下一个子元素是。任何合法的XML名字都是可以的。用来唯一标识你的服务的各个参数。(注释@)
注释@:Namespace派什么用?namespace的作用是要避免命名冲突。如果我建立一项Web
Service
,其中的WSDL文件包含一个名为"foo"的元素,而你想要使用我的服务与
另一项服务连接作为补充,这样的话另一项服务的WSDL文件就不能包含名为"foo"的元素。两个服务器程序只有在它们在两个事例中表示完全相同的东西
时,才可以取相同的名字。如果有了表示区别的namespace,我的网络服务里的"foo"就可以表示完全不同于另一个网络服务里"foo"的含义。在
你的客户端里,你只要加以限制就可以引用我的"foo"。
元素包含了Java类的名字,它指定了方法签名。在我们的例子中,它是接口IBankingService
。如果Java类没有实现任何接口,你就需要把类的名字放在这里。在你的Java类或者接口中可能有几个方法。只需要一个入口把它们全部发布为Web
Service
s。
保存了实现方法的Java类名。这是一个可选元素。如果上一个元素包含了一个接口,那么相应的实现类必须在这里指定。
我们如何知道Web Service 正在工作呢?
为了了解Web Service 是否正在工作,我们需要测试。首先,我们测试来看WSDL是否可用。我们在浏览器中输入URL。哪个URL?因为我们的应用程序的war文件是aa.war,并且在service s.xml中给出的服务名是Banking,WSDL的URL应该是:http://localhost:8080/aa/service s/Banking?wsdl。
请注意:URL的第一部分,例如,http://localhost:8080 ,可能会根据你的应用服务器不同而不同。无论怎样,当你输入URL后,将会看到一个XML文档,这个文档叫做服务的WSDL。如果你看到了,这就是你的应用作为Web Service 已经可用的第一个证明。
正确的执行情况:
在这个WSDL中我们可以看到< xsd:element name =" transferFunds " >的服务方法明以及他的四个参数描述等信息。 但是这个测试是不够的。可能会发生这种情况,可以看到WSDL,但是从客户端程序可能会访问不到服务。因此为了核实服务是否可以访问了,我们必须使用一个客户端进行服务的实际调用来进行一个真正的测试。
开发一个客户端
编写BankClient.java
- package com.mybank.xfire .client;
- import java.net.MalformedURLException;
- import org.codehaus.xfire .XFire ;
- import org.codehaus.xfire .XFire Factory;
- import org.codehaus.xfire .client.XFire ProxyFactory;
- import org.codehaus.xfire .service .Service ;
- import org.codehaus.xfire .service .binding.ObjectService Factory;
- import com.mybank.xfire .example.IBankingService ;
- /**
- * @author AdminiDD
- *
- */
- public class BankClient {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- }
- /* Call the Web service
- *
- */
- public String callWeb Service (
- String fromAccount, String toAccount, double amount, String currency)
- throws MalformedURLException, Exception {
- //Create a metadata of the service 创建一个service 的元数据
- Service service Model = new ObjectService Factory().create(IBankingService . class );
- System.out.println( "callSoapService Local(): got service model." );
- //Create a proxy for the deployed service 为XFire 获得一个代理工厂对象
- XFire xfire = XFire Factory.newInstance().getXFire ();
- XFire ProxyFactory factory = new XFire ProxyFactory(xfire );
- //得到一个服务的本地代理
- String service Url = "http://127.0.0.1:8080/wstest/service s/Banking" ;
- IBankingService client = null ;
- try {
- client = (IBankingService ) factory.create(service Model, service Url);
- } catch (MalformedURLException e) {
- System.out.println( "WsClient.callWeb Service (): EXCEPTION: " + e.toString());
- }
- //Invoke the service 调用服务 返回状态结果信息
- String service Response = "" ;
- try {
- service Response = client.transferFunds(fromAccount, toAccount, amount, currency);
- } catch (Exception e){
- System.out.println( "WsClient.callWeb Service (): EXCEPTION: " + e.toString());
- service Response = e.toString();
- }
- System.out.println( "WsClient.callWeb Service (): status=" + service Response);
- //Return the response
- return service Response;
- }
- }
编写两个JSP页来模拟请求和响应
index.jsp;发送请求
- "-//W3C//DTD HTML 4.01 Transitional//EN" >
- "" >
- "pragma" content= "no-cache" >
- "cache-control" content= "no-cache" >
- "expires" content= "0" >
- "keywords" content= "keyword1,keyword2,keyword3" >
- "description" content= "This is my page" >
-
Welcomle to Web Service !
-
- Bank test : give my money to you!
- "form1" action= "say.jsp" method= "POST" >
-
your account ID:"toAcc"
type=
"text"
/>
-
How much
do
you want:"amount"
type=
"text"
/>
- "center" >"submit" value= "提交" >
-
say.jsp,接收请求并返回响应结果
java 代码- "-//W3C//DTD HTML 4.01 Transitional//EN" >
- "" >
- "pragma" content= "no-cache" >
- "cache-control" content= "no-cache" >
- "expires" content= "0" >
- "keywords" content= "keyword1,keyword2,keyword3" >
- "description" content= "This is my page" >
-
Welcomle to Web Service !
-
- Message from Web Service :
项目aa编译完毕并发布到Tomcat上,启动Tomcat测试开始!访问http://127.0.0.1:8080/aa/index.jsp
执行效果:
添上你的账户,想要多少钱就写多少钱,嘿嘿 提交!请求转发到say.jsp如果你看到下面的情况:
恭喜你!成功啦~ 可以看到有 RMB$ 1,000.00 从affman(a fit foolish man~)的账户转到了liudan的账户上!
总结:
基本的Web Service s开发步骤清单
这个清单总结了将一个Java方法发布为Web Service 所必须的步骤:
- 1、 检查Java类的方法和默认构造函数确保为public
- 2、 增加XFire servlet相关条目到web .xml中
- 3、 创建service s.xml,把它放到WEB -INF/classes/META-INF/xfire 目录下
- 4、 增加XFire 和第三方包到你的Web 应用的WEB -INF/lib文件夹中
嗯~确实不复杂!
以上步骤均经过亲自测试执行,如有勘误请至mail to: sweetmoondd@hotmail.com 欢迎指教和共同探讨
以下相关讨论(转自原文http://www.360doc.com/showweb /0/0/516946.aspx )
XFire 的其他高级特性
XFire 的使用可能比较简单,但是在特性和功能性上,它却占据着领导者的位置。下面是它的高级特性:
- ---本地数据绑定支持POJOs(plain-old Java objects)、XMLBeans、JAXB(Java Architecture for XML Binding)、Castor等等。数据绑定说明了Web Service s的XML请求和映射到Java对象的XML响应。
- ---使用StAX(Streaming API for XML)处理XML文档。同DOM的基于树和SAX的事件驱动的处理方式相比,StAX使用了拉(pull)机制,它使处理更快速,内存效率更高。
- ---支持多种传输协议,如HTTP、JMS(Java Message Service )和JVM内部传输。
- ---嵌入式,这是XFire 的核心功能之一。你可以把这个SOAP引擎嵌入到你的应用中,完全隐藏所有XFire 特定引用,同样所有配置都是程序驱动。
- ---丰富的API,它使XFire 可高度自定义,允许开发者在不同的阶段截获请求,并且对他们进行处理。
- ---兼容最新的标准例如SOAP1.1(没有加密远程工程调用,或者RPC)和1.2、WSDL1.1、the Web Service s Interoperability Organization’s Basic Profile 1.0、Web Service s Addressing和WS-Security。
发表评论
-
卧槽,我为netty贡献过代码,牛比不?
2014-02-14 10:15 1046发现netty有一段代码怎么跟我写的似的呢?一看github才 ... -
约瑟夫出圈问题
2012-02-21 15:48 1741import java.util.Scanner; ... -
书单,觉得比较好的书单 。
2012-01-28 11:29 2023学习软件开发应该看 ... -
去掉小箭头
2011-12-31 11:25 1057http://jingyan.baidu.com/articl ... -
转的JAVA实现AES加密
2011-12-07 14:54 2253JAVA实现AES加密 1. 因子 ... -
JAVA String.format 方法使用介绍
2011-10-25 18:25 9331.对整数进行格式化:%[index$][标识][最小宽度]转 ... -
处理系统全变成lnk图标的方法
2011-10-23 16:57 1555相信有些用户曾试过错误地把LNK文件的打开方式更改其他文件,导 ... -
如何读写json文件
2011-10-09 15:43 18636代码如下: import java.io.Buffered ... -
log4J的学习
2011-10-09 13:28 958http://blog.csdn.net/eako/artic ... -
linux下安装jsk
2011-10-08 18:55 12101. 去http://java.sun.com ... -
一些技术牛人的博客
2011-08-30 13:23 2436High Scalability - Building big ... -
把一个xml节点信息递归的存到map中的方法
2011-05-27 16:52 3725jar包自己加!! import java.util.Ha ... -
关于java中的static{}块
2011-04-29 15:38 4655一直以来对static块不是很熟系,今天特意写了两个程序来搞清 ... -
大数相加的java实现
2011-04-06 17:43 1750import java.io.BufferedReader ... -
java中的逻辑移位与算数移位
2011-03-22 14:12 1836java中是支持逻辑移位和算数移位的,简单说,逻辑移位就是不带 ... -
关于短路与和非短路与 (&& 和&)
2011-03-22 11:55 2648这两个操作符都是与的意思 && 和 ... -
java基础类型
2011-03-22 11:16 1004java含有四类八种基本的数据类型。 首先是整型, 1,byt ... -
java命令参数
2011-03-20 22:07 1242Java命令参数说明大全 ... -
线程之间通信的三种方法
2011-03-17 15:50 3259线程间通信的三种方法 ... -
java中抽象类和接口详解
2011-03-07 11:01 1101在Java语言中, abstract class 和int ...
相关推荐
#### 创建WebService示例:使用Java与XFire 为了在Eclipse中使用XFire开发WebService,首先需确保JDK和Tomcat环境正确配置,以及具备基本的Java编程技能和Tomcat部署知识。以下步骤指导如何创建一个简单的...
【在Eclipse上使用XFire开发WebService】 在IT行业中,Web Service是一种常见的软件接口技术,允许不同系统之间通过网络进行通信和数据交换。Eclipse是一款强大的集成开发环境(IDE),而XFire则是一个免费的开源...
2. **创建Maven项目**:使用IDE(如IntelliJ IDEA或Eclipse)创建一个新的Maven项目。 3. **添加依赖**:在pom.xml文件中添加XFire的相关依赖,例如: ```xml <groupId>org.codehaus.xfire <artifactId>xfire...
### Eclipse上使用XFire开发WebService知识点详解 #### 一、概述 本文主要介绍如何在Eclipse平台上使用XFire框架来开发WebService。通过本教程的学习,读者可以了解到搭建环境的具体步骤,以及实现一个简单的...
在这个“在Eclipse下用xfire创建webserver服务器demo”中,我们学习了如何在Eclipse环境中配置Xfire,创建一个简单的Web服务,以及如何启动和测试这个服务。这只是一个基础的起点,Xfire还支持许多高级特性,如WS-...
**XFire初识:使用Eclipse开发WebService** 在IT行业中,WebService是一种允许应用程序之间进行交互的标准化技术。它通过XML(可扩展标记语言)来交换数据,使得不同平台上的应用能够无缝对接。XFire是Java平台上一...
对于基于xFire的WebService开发,首先需要安装Eclipse和MyEclipse作为集成开发环境,具体版本要求为Eclipse3.2和MyEclipse5.5.1GA。安装过程需遵循特定路径,例如使用F盘下的MyEclipse安装包,并确保正确获取和应用...
这个资源是一个关于使用XFire框架创建Web服务的实际示例项目。XFire是早期流行的一个用于构建SOAP Web服务的Java库,它提供了轻量级且高效的解决方案。由于描述中提到“不包含xfire相关jar包”,这意味着用户在运行...
本教程将详细讲解如何在Eclipse下使用Web服务,主要涉及的技术包括Java、Web服务(Webservice)、XFire框架以及Eclipse IDE的使用。 一、建立Web Service Project 在Eclipse中创建一个新的项目,选择“Web Service ...
3. **示例代码和文档**:为了帮助开发者理解和使用XFire,包中可能会包含一些示例服务代码和详细的API文档,介绍如何创建服务端点、处理请求和响应等。 4. **配置文件**:XFire的配置文件(如xfire.xml)用于定义...
在这个主题中,我们将深入探讨如何使用Xfire创建Web服务以及客户端的实现,同时结合MyEclipse 6.5集成开发环境(IDE)和Tomcat 6.0应用服务器。 1. **Xfire简介** Xfire是Apache CXF项目的一部分,它提供了一个...
可以使用Eclipse集成开发环境并安装Xfire插件。按照以下步骤操作: 1. **安装Xfire Eclipse插件** 打开Eclipse的Help菜单,选择Update Site,输入更新URL:http://dist.codehaus.org/xfire/update/。安装并重启...
【标题】"xfire webservice eclipse可运行,非myeclipse可运行"表明这是一个基于XFire框架构建的Web服务项目,特别强调了它能够在Eclipse集成开发环境中顺利运行,但可能不适用于MyEclipse环境。XFire是Apache CXF的...
5. 配置XFire:在项目的src/main/resources目录下创建一个名为`services.xml`的文件,配置XFire如何暴露你的服务。在这个文件中,你需要定义服务的名称、接口类和实现类。 6. 部署服务:运行你的Java应用,XFire将...
### WebService学习手册知识点概述 ...综上所述,本文档详细介绍了如何使用Xfire、CXF、Axis等框架开发WebService,通过一系列的示例代码和实践指导,即使是初学者也能快速掌握这些技能,并能够在实际项目中运用自如。
本文将通过一个具体实例介绍如何在MyEclipse环境下使用XFire框架来快速搭建WebService应用。本例涉及的关键技术包括Eclipse IDE、Tomcat服务器、Java编程语言以及XFire框架。目标是在短时间内完成一个简单的...
【标题】"xfire+spring+webservice例子"是一个典型的示例项目,它演示了如何在Java环境中结合XFire和Spring框架来创建和消费Web服务。这个项目旨在帮助开发者理解和实践基于Spring的Web服务实现,同时也展示了XFire...
1. webservice xfire的完整demo,下载后可以直接导入eclipse调试。 2. 包括客户端和服务端,服务端需要部署到tomcat等web容器,启动服务端后可以通过客户端测试调用结果。 3. 工程已经将依赖的jar包一起包含,不需要...