- 浏览: 724584 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
yukang1:
太适合新手了 谢主隆恩
tomcat结合nginx使用小结 -
singformyself:
确实,楼主写的很好。必须赞一个。让我这个nginx新手如获至宝 ...
tomcat结合nginx使用小结 -
光太狼Leon:
这才是真正对新手有用的文章。
tomcat结合nginx使用小结 -
wangyudong:
由CXF实现的微服务需要有比较好的工具去测试RESTful A ...
JAVA webservice之CXF -
MCLoginandPwd:
如今,java技术框架太多了,给你分享一个好玩代码生成器,ht ...
论JAVA框架
最近公司最近需要将以前提供出去的接口统一用一个标准来实现,考虑到webservice这个是标 准,因此我花时间大概学习了一下webservice,也对JAVA的几个webservice框架进行了一些小例子的学习。
JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊。但就算是伤心,我们也还是要完成的。JAVA也不乏比较好的实现,如xfire,jersey,CXF。有人会说axis2,那个东西,看着就伤心,它不包括在比较好里面,比较差里面反倒有它的一席之位。怎么差,这里先不说,我们慢慢地来看看这几个框架的实现。
今天我们就先一起来看一下xfire的实现,接下来的几天我们会慢慢一起来学习另外的框架。
1)首先,当然是要下包啦,这个普通人都知道。http://xfire.codehaus.org/Download可以到这里去下,可以下all也可以下distribution。但建议还是下all的,免得一堆奇怪的问题搞得你一点信心都没了。
包弄下来了那么怎么办呢?放进项目里啊。貌似废话,但很多人就是不知道下下来要干什么用。
建一个新项目,比较我的是xfireWebservice,这里当然是建web项目啦。
我这里是把它所有的包都放到这里面了,毕竟我们写例子,就没必要挑三拣四了,随便点吧,如果想看看异常信息的朋友可以不把全部放进去,慢慢地加入,以后遇到错误也好排除,但我们这里就不那么做了,毕竟一般缺少什么类那些的异常没什么难看的,大家可以自己排除。
2)我们首先来了解一下xfire与其他webservice框架的不同,它最大的不同之处在于它需要一个接口,而且如果需要用xfire来调用相应的webservice必须知道接口的定义,感觉这里有点限制了。但除了这点,xfire调用webservice,那是相当的方便,就跟调用本地方法一样。我们直接来看例子:
首先是最重要的接口:
public interface IReaderService { public Reader getReader(String name,String password); public List<Reader> getReaders(); }
有接口,当然也要有实现类,不然接口就没什么意义了。
public class ReaderService implements IReaderService{ public Reader getReader(String name,String password) { return new Reader(name,password); } public List<Reader> getReaders(){ List<Reader> readerList = new ArrayList<Reader>(); readerList.add(new Reader("shun1","123")); readerList.add(new Reader("shun2","123")); return readerList; } }
也看一下JAVABEAN,Reader类:
public class Reader{ private static final long serialVersionUID = 1L; private String name; private String password; public Reader(){} public Reader(String name,String password) { this.name = name; this.password = password; } //Get/Set方法省略 public String toString(){ return "Name:"+name+",Password:"+password; } }
注意,我们这里的Reader类实现了Serializable接口,为什么呢?这里,首先我们需要了解webservice的原理,对于JAVA来讲,如果我们需要在互联网上传对象,很多人当然会想到序列化,对了,这里就是序列化,因为我们需要把reader作为参数来传递。这在以前的版本中是需要强制实现,否则会报错,但现在的最新的版本(其实最新的也是07年的,因为xfire已经停止开发,被apache合并为CXF项目,这个我们之后再讲)已经不需要了,至于是用什么方式实现的,我们这里暂时不深究,因为它已经被合并到CXF中,我们如果要深入学习,应该学习CXF较好。
3)当我们完成上面的接口和JAVABEAN的编写后,很多人会问,我看很多webservice都会有WSDL文件,那你这个怎么来的?在讲这个之前,我们来讨论一下什么是WSDL。也许很多公司提供的接口都还是只是一个HTTP地址,返回XML这样的格式,我们的也是。这有一个好处,也有一个坏处。好处是我们开发的难度小了,而坏处是我们需要提供给用户一堆说明文件,每个返回的XML标签是什么意思,这倒也没啥,但就是比较烦而已。而webservice呢,坏处就是我们开发的东西稍微多了点,而好处是我们不用再写那么多说明文件,因为有一个统一的说明,叫WSDL,这个是webservice的说明文档,是统一的,无论什么语言都一样,所以不存在谁看不懂的问题。
而这里,当我们部署完成xfire后,它就可以帮我们生成WSDL文件。
问题是怎么部署,这个其实也简单。我们在src目录下新建一个文件夹META-INF,再建它的一个字文件夹xfire,里面建立文件services.xml。之后的结构如下:
有人会问为什么要建到src目录下,其实不是规定建到这里的,但因为我们需要让开发工具帮我们自己部署这几个文件,所以我们放到这里,eclipse就可以帮我们自己部署到tomcat或者其他的容器中。注意,这个文件所在文件夹层次是固定的,不可以修改。
我们直接看一下servics.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <!-- webserviceq名称,调用时需要指定这个 --> <name>readerService</name> <!-- 这个一般是自己公司的网址,意义不大 --> <namespace>http://test/HelloService</namespace> <!-- 接口类 --> <serviceClass>com.xfire.servlet.IReaderService</serviceClass> <!-- 实现类 --> <implementationClass>com.xfire.servlet.ReaderService</implementationClass> </service> </beans>
看着注释一般都没问题的。
4)很多人以为这样就行了,不,还没行,你指定了这个,那别人怎么访问呢。怎么把相应的请求转发到xfire那里,让它进行处理呢。这里又需要修改web.xml了。
修改后如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> </web-app>
其实也就是添加了一个servlet和对应的mapping。接下来,我们在浏览器上直接输入:
http://localhost:8080/xfireWebService/services/readerService?wsdl
我们可以看到:
这里显示的就是wsdl,它会显示我们定义的方法,返回的类型,这个文件我们这里就不分析了,http://webservices.group.iteye.com/group/topic/11467这位朋友在这里写得很清楚,想了解的朋友可以到这里看看。
5)上面四步完成后,我们就完成了webservice的部署了。别人就可以调用相应的webservice来访问我们的方法了。下面我们就用xfire提供的client来访问一下我们刚才发布的webservice:
public class ReaderClient { public static void main(String[] args) { //这里是创建一个service,需要传入一个接口类,因为我们后面必须调用相应的接口方法 Service srcModel = new ObjectServiceFactory().create(IReaderService.class); //代理工厂,这里是为了后面创建相应的接口类 XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire()); //webservice地址,不需要加wsdl String readerServiceUrl = "http://localhost:8080/xfireWebService/services/readerService"; try { //利用工厂返回相应的接口类 IReaderService readerService = (IReaderService)factory.create(srcModel,readerServiceUrl); Reader reader = readerService.getReader("shun","123"); System.out.println(reader); } catch (MalformedURLException e) { e.printStackTrace(); } } }
这样,我们看到输出结果为:
很简单的调用,当我们取得接口后,一切就跟本地一样了。xfire发布和调用webservice相对其他框架来说是简单很多的。接下来几天,我们会继续学习另外的几个框架,CXF,axis2和jersey,axis2我们放到最后再讲,因为相对其他来说,它的灵活性比较差,而且比较麻烦。
另外问个小问题,有没有朋友知道怎么修改博客字体大小,我修改完成后保存,它只会在代码段那里加上<span>标签,但字体没有改变,其他的也是一样,有知道的朋友麻烦跟我说下。
评论
//这里是创建一个service,需要传入一个接口类,因为我们后面必须调用相应的接口方法 Service srcModel = new ObjectServiceFactory().create(IReaderService.class);
具体怎么传入接口类,要知道客户端根本没有IReaderService接口类,楼主那个测试类在本机肯定没事。
发表评论
-
你的单元测试有多稳定?提升自动测试质量的最佳实践
2014-03-21 13:12 1630本文转载自http://www.importnew.com ... -
Protobuffer和json深度对比
2013-11-13 22:53 96912JSON相信大家都知道是什么东西,如果不知道,那可就真的O ... -
小记S2SH开发
2013-07-08 23:23 3649相信S2SH没人不知道了吧,struts2+ ... -
论JAVA框架
2013-04-14 15:09 6094进入新公司已经差不多三个星期了,上次一篇文章 ... -
struts2.x样式修改
2012-11-22 10:09 1580好久没弄过三大框架相关的东西了,今天重新拾起,弄了一下str ... -
tomcat结合nginx使用小结
2012-05-19 13:51 221248相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apa ... -
自定义标签之EL函数
2012-05-10 22:44 2415前几天写了篇博客回顾了一下自定义标签的,这次也来重新回顾一下 ... -
JSP自定义标签小结
2012-05-07 00:39 1800已经好久没有写博客了,这段时间看过很多书,包括《浪潮之巅》( ... -
JAVA处理XML
2011-12-13 22:04 2775网上有很多讲解JAVA怎么处理XML,当然文章并不会再讲那些 ... -
JAVA webservice之Jersey
2011-11-28 23:34 6727前几天我们一起学习了CXF和xfire,那两天都存在WSDL ... -
JAVA webservice之CXF
2011-11-23 22:32 153548昨天我们一起学习了一下xfire,今天我们来看一下CXF, ... -
JDBC对clob和blob的相关操作
2011-11-12 22:58 3590这段时间经常接触到需要对clob和blob字段进行操作的情况 ... -
jsp相对路径和绝对路径小谈
2011-07-14 00:32 33263很长一段时间纠结过JSP ... -
ajax小谈
2011-07-07 21:51 2138最近在做项目时经常用到ajax,当然有个很好的jquery在 ... -
oracle分页小谈
2011-06-17 00:02 3895今天做项目时要实现分页功能,以前只在mysql上弄过,ora ... -
EL表达式遇到的问题
2011-06-14 22:43 3269今天在为客户做一个新需求,重新做几个JSP页面和几个serv ... -
solr初体验(3)
2011-05-12 19:55 2285前两天,学习了solr的 ... -
jsp:include和@include学习
2011-03-27 15:16 2131一直以来做项目都是用@include,很少去用到JSP:in ...
相关推荐
Java Web服务(WebService)是一种基于开放标准的、平台无关的方式,使得应用程序可以在不同系统间交换数据和服务。在本主题中,我们将深入探讨如何将XFire与Spring2框架集成,以便构建高效、灵活的Web服务解决方案...
Java WebService基于XFire的实例教程 Web服务是一种在分布式环境中提供互操作性的技术,它允许不同系统之间通过网络交换数据。在Java中,实现Web服务的一种流行框架就是XFire,一个快速、轻量级的SOAP(Simple ...
"Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...
XFire和JAX(Java API for XML)都是在Java环境中实现WebService的重要工具,它们分别提供了不同的方法来处理身份验证,确保数据安全传输。 XFire是早期的一个开源项目,它是一个快速、灵活的Web服务框架,支持SOAP...
在“WebService之XFire开发文档和代码”压缩包中,包含了详细的开发文档,帮助开发者了解如何使用XFire创建、部署和测试WebService。同时,还提供了一些代码示例,可以帮助开发者快速上手实践。通过学习这些文档和...
这篇博客“Java使用XFire调用WebService接口”显然是讨论如何利用XFire这个开源框架来与Web服务交互。 XFire是Apache CXF项目的前身,它提供了一种简单的方式来创建和消费SOAP Web服务。XFire的强项在于其轻量级和...
【标题】"webService-xfire入门doc" 涉及的是Web服务技术中的XFire框架,这是一款用于构建和消费Web服务的开源Java库。XFire是早期流行的Web服务实现,它允许开发者轻松地将Java对象转换为Web服务,反之亦然。 ...
2. **XFire**:XFire是另一个Java Web Service框架,现在已经更名为CXF。它提供了更高级别的抽象,使得开发者可以更容易地创建和消费Web Service。对于短信接口,我们可以使用XFire的ClientProxyFactoryBean来创建一...
用java通过xfire框架实现ws,实现正向生成wsdl文件,并由wsdl逆向生成java ws客户端代码 测试输入:http://localhost:8080/webservice-xfire/services/CalculatorService?wsdl
XFire是早期流行的Java WebService框架,它提供了快速、简单的方式来创建和使用Web服务。XFire基于Apache CXF项目,后者是目前更为主流的Web服务实现。 在“java webservice XFire技术文档”中,你将找到关于如何...
本篇文章将详细探讨“webService之xFire实现流程”,并结合提供的文档资源进行深入解析。 一、Web服务简介 Web服务是一种基于互联网的、平台无关的应用程序接口,它通过标准的XML(可扩展标记语言)进行数据交换,...
Java WebService 技术是Java领域中用于构建可互操作分布式应用程序的重要手段,它通过XML标准来实现跨平台、跨语言的通信。...由于CXF的广泛支持和灵活性,它是现代Java WebService开发的首选框架之一。
xfire是一款基于Java的开源WebService框架,它提供了一个简单、灵活和高效的方式来开发和部署WebService。xfire可以与多种类型的WebService结合使用,如SOAP、REST、XML-RPC等。xfire还提供了一个基于annotation的...
XFire是Java平台上一个曾经流行的开源框架,专门用于构建和消费Web服务。本实例将深入探讨如何利用XFire来实现Web服务。 一、XFire简介 XFire是Apache CXF项目的前身,它提供了一个轻量级、高性能的框架,用于创建...
2. **XFire简介**:XFire是基于Java的SOAP服务器,它简化了Web服务的开发过程,提供了动态WSDL生成、自动数据绑定等功能。XFire的亮点在于其轻量级和对Spring的深度集成,使得开发者可以利用Spring的依赖注入和配置...
标题“Xfire调用WebService无法传递参数问题”暗示了开发者在尝试使用Xfire框架时遇到了参数无法正常传递到Web服务的情况。这可能涉及到多个方面,如编码问题、序列化错误、类型不匹配或者配置不正确等。以下是一些...
在编码阶段,XFire支持注解驱动的开发模式,这意味着你可以使用如`@WebService`和`@WebMethod`等JAX-WS注解来标记你的服务类和方法。这种方式使得代码更清晰,减少了XML配置的复杂性。 在部署方面,XFire插件可以...
在给定的标题“webservice (xfire,axis2)”中,我们关注的是两个知名的Java WebService框架:Xfire和Axis2。 Xfire是一个早期的Java WebService框架,它提供了一个轻量级、快速且易于使用的解决方案,使得开发人员...