网站模板库
  • 首页
  • web前端工具
    • HTML/JS转换工具
    • JS/HTML格式化工具
    • 字母/英文大小写转换工具
    • robots.txt文件生成工具
    • Js压缩/格式化工具
    • Css在线压缩工具_代码格式化
  • 关于我们
    • 免责声明
    • 联系我们
    • 广告服务
    • 服务项目
    • 关于我们
    • 网站轮播
    • 公告
    • 成都优优科技专用
    • 按行业分类
  • web学院
    • 服务器教程
    • 学习资料
      • 基础书籍
      • 交互书籍
      • 入门教程
      • 特效分类
    • 案例分享
    • web资讯
  • 网页特效
    • 图片特效
    • 导航特效
    • 滑动按钮
    • 表单特效
    • 文字特效
    • 弹窗特效
    • 其他特效
  • 织梦模板
    • 科技/电子/数码/通信
    • 文化/艺术/广告/传媒
    • 装修/设计/家居/家具
    • 基建/施工/地产/物业
    • 餐饮/酒店/旅游/票务
    • 食品/果蔬/饮料/日用
    • 服饰/珠宝/礼品/玩具
    • 摄影/婚庆/家政/生活
    • 运动/健身/体育/器材
    • 学校/教育/培训/科研
    • 美容/保健/医院/医疗
    • 金融/财税/咨询/法律
    • 政府/组织/集团/协会
    • 汽车/物流/交通/搬运
    • 机械/设备/制造/仪器
    • 化工/环保/能源/材料
    • 农业/畜牧/养殖/宠物
    • 其他模版
    • IT/软件/信息/互联网
  • 手机模板
    • 手机APP模板
    • 微信小程序模板
    • wap
  • 网站模板
    • joomla模板
    • Drupal模板
    • z-blog模板
    • EyouCms模板
    • Bootstrap模板
    • 帝国cms模板
    • CmsEasy模板
    • MetInfo模板
    • 购物商城模板
      • Shopify主题
      • PrestaShop主题
    • 后台模板
    • 纯HTML模板
    • ecshop模板
    • phpwind模板
    • pbootcms模板
    • phpcms模板
    • wordpress模板
    • discuz模板
  • 教程
    • 织梦教程
    • Discuz教程
    • WordPress教程
    • Phpcms教程
    • Phpwind教程
    • ECShop教程
    • Joomla教程
    • Drupal教程
    • zblog教程
    • EyouCMS教程
    • 帝国cms教程
    • MetInfo教程
    • CmsEasy教程
登录
当前位置:网站模板库 > web学院 > 服务器教程 > 用 java 编写一个 基于Web Service的软件
商业源码 服务器教程 2024-02-08 11:11:02

用 java 编写一个 基于Web Service的软件

用 java 编写一个 基于Web Service的软件,第1张

1首先说一下两个开发webservices的工具包:axis 和XFire 本人首先接触的是axis。

两者比较如下:

相对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在目前的Web Service开源社区拥有众多的追随者。并且因为XFire为Spring提供的支持,使得我们可以很容易在Spring中使用XFire构建Web Service应用。

知道了这两个框架你研究起来也就不难了。

下面我就基于xfire说一下开发说明:

xfire对WebServices的开发非常方便,在Eclipse里开发就更方便了。总结起来有这么几点:

1编写类,跟普通JAVABEAN没什么区别。

2配置文件

如果是要深层次的去理解WebServices还需努力,下面是我给你找的一个网上的例子作为参考:

使用XFire+Spring构建Web Service

XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用。

相 对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在目前的Web Service开源社区拥有众多的追随者。并且因为XFire为Spring提供的支持,使得我们可以很容易在Spring中使用XFire构建Web Service应用。

XFire与Axis2相比具有如下特征:

l 支持一系列Web Service的新标准--JSR181、WSDL20 、JAXB2、WS-Security等;

l 使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现;

l 容易上手,可以方便快速地从pojo发布服务;

l 支持Spring、Pico、Plexus、Loom等容器;

l 灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor;

l 高性能的SOAP 栈设计;

l 支持Spring、Pico、Plexus、Loom等容器。

XFire与Axis1性能的比较如下:

l XFire比Axis13快2-6倍;

l XFire的响应时间是Axis13的1/2到1/5。

XFire在WebService框架中开始较晚,它从现有的框架中借鉴了许多优秀的理念,力争将Web Service的应用开发难度降到最低。此外,还提供了各种绑定技术、支持多种传输协议,对WebService体系中许多新的规范提供了支持。

下面让我们来看一个XFire于Spring集成的helloWorld的简单例子。

一.实现的功能和特点

本例具有如下功能和特点:

1) 基于J2EE平台的Web Service服务;

2) 开发方便,配置简单;

3) 与spring无缝集成。

XFire是完全基于流数据处理进行工作的系统,这意味着XFire不是将整个SOAP文档缓存在内存中,而是以管道的方式接收SOAP流数据。这种工作方式的转变带来了可观的性能回报,同时节省了内存的占用。

XFire从 管道中接收一个SOAP请求到返回一个SOAP响应,会经历一系列的阶段。在管道调用的任何一个阶段,XFire都可以添加一些额外的Handler,在 对消息进行加工处理后再传入到下一个阶段中。在SOAP请求消息对Web Service发起真正调用之前,分别会经过传输、预转发、转发、策略实施、用户信息处理、预调用、服务调用等阶段。

二.开发环境

笔者的开发环境描述如下:

1) jdk: 15版本;

2) Tomcat:5520;

3) MyEclipse:511 GA。

三.开发步骤

1 工程与环境的建立

在MyEclipse 中新建Web工程,名为webservice_helloworld。选择该工程后,点击右键选择MyEclipse->Add Web Service Capabilities,弹出Add Web Service Capabilities对话框,点击“Next”,弹出Project Library Configuration对话框,默认选择Core Libraries,点击“Finish”按钮,完成XFire核心包的添加。为了后续的客户端的测试,还需读者加入commons- httpclientjar包到WEB-INF/lib下。

部署后可看到此时WEB-INF/lib的jar包列表如下:

activation-11jar、commons -beanutils-170jar、commons-codec-13jar、commons-httpclientjar、 commons-logging-104jar、jaxen-11-beta-9jar、jaxws-api-20jar、jdom- 10jar、jsr173_api-10jar、mail-14jar、saaj-api-13jar、saaj-impl- 13jar、spring-126jar、stax-api-101jar、wsdl4j-152jar、wstx-asl- 301jar、xbean-210jar、xbean-spring-25jar、xfire-aegis-122jar、 xfire-annotations-122jar、xfire-core-122jar、xfire-java5-122jar、 xfire-jaxws-122jar、xfire-jsr181-api-10-M1jar、xfire-spring- 122jar、XmlSchema-11jar

为了后续的开发和测试,在src目录下分别建立test和webservice目录,分别用于存放测试文件和webservice的相关类。

2.Web Service实现的编写

在本例中,我们只是做一个helloWorld的简单例子。Web Service服务端提供一个根据输入的名字信息回复相应的helloWorld信息的。例如,当名字为“阿蜜果”时,恢复信息为“hello,阿蜜果”。下面让我们一步一步来开始进行编码。

1)webxml的配置

一 般情况下,我们通过HTTP作为Web Service的传输协议,这样我们只需启动一个Web服务器(如Tomcat,在本例中使用的是Tomcat5520),这样客户端就可以通过 HTTP访问到Web Service服务。为了集成Spring容器,XFire专门提供一个XFireSpringServlet,我们可以在webxml中配置该 Servlet,将Spring容器中定义的Web Service在某个URI下发布。

为了能正确使用XFire,需在webxml中进行相应配置,在该文件中配置XFire的servlet和servlet-mapping。同时因为本实例需要将XFire集成到Spring中,因而需要在webxml文件中加载Spring的相应配置文件。在本实例中,我们首先在WEB-INF下建立两个配置Spring配置文件,一个为applicationContextxml,该文件用来定义本工程的bean,一个为xfire-servletxml,用来配置XFire的相关bean。修改后的webxml的内容如下所示:

<xml version="10" encoding="UTF-8">

<web-app xmlns="http://javasuncom/xml/ns/j2ee" xmlns:xsi="http://wwww3org/2001/XMLSchema-instance" version="24" xsi:schemaLocation="http://javasuncom/xml/ns/j2ee http://javasuncom/xml/ns/j2ee/web-app_2_4xsd">

<display-name>XFireService</display-name>

<!-- begin Spring配置 -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/applicationContextxml,/WEB-INF/xfire-servletxml</param-value>

</context-param>

<listener>

<listener-class> orgspringframeworkwebcontextContextLoaderListener

</listener-class>

</listener>

<listener>

<listener-class> orgspringframeworkwebutilIntrospectorCleanupListener

</listener-class>

</listener>

<!-- end Spring配置 -->

<!-- begin XFire 配置 -->

<servlet>

<servlet-name>xfire</servlet-name>

<servlet-class>orgspringframeworkwebservletDispatcherServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>xfire</servlet-name>

<url-pattern>ws</url-pattern>

</servlet-mapping>

<servlet>

<!-- 配合Spring容器中XFire一起工作的Servlet-->

<servlet-name>xfireServlet</servlet-name>

<servlet-class>orgcodehausxfirespringXFireSpringServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>xfireServlet</servlet-name>

<!-- 在这个URI下开放Web Service服务 -->

<url-pattern>/service/</url-pattern>

</servlet-mapping>

<!-- end XFire 配置 -->

</web-app>

2)Web Service的接口类HelloWorldjava和对应实现类HelloWorldImpljava

为了用Web Service完成HelloWorld功能,我们首先在src/webservice目录下建立接口类HelloWoldjava。它仅包含一个sayHelloWorld(String name)的方法,其详细内容如下:

package webservice;

/ //

HelloWorld的接口类

/

publicinterface HelloWorld {

/ //

对名字为name的人打招呼

@paramname名字

@return返回打招呼的字符串

/

String sayHelloWorld(String name);

}

我们还需要建立一个对应的实现类,来实现sayHelloWorld的功能,该实现类即为HelloWorldImpljava。该类的详细内容如下:

package webservice;

/ //

HelloWorld的实现类

/

publicclass HelloWorldImpl implements HelloWorld {

public String sayHelloWorld(String name) {

String helloWorld = "hello," + name;

return helloWorld;

}

}

3)Spring配置文件applicationContextxml和xfire-servletxml的配置

首先我们在applicationContextxml文件中配置对应的bean——HelloWorldBean,该xml文件的内容如下:

<xml version="10" encoding="UTF-8">

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

"http://wwwspringframeworkorg/dtd/spring-beansdtd">

<beans>

<bean id="HelloWorldBean" class="webserviceHelloWorldImpl"/>

</beans>

这个配置文件很简单,在此不详述。

XFire为Spring 提供了方便易用的导出器XFireExporter,借助该导出器的支持,我们可以在Spring容器中将一个POJO导出为Web Service。HelloWorld是业务服务类,在此拥有一个sayHelloWorld的方法,我们希望将此方法开放为Web Service。在实际应用中,如果某个类具有众多的方法,而其中的某些方法不需要开放为Web Service的情况下,我们可以定义一个窄接口,该接口中只需定义那些开放为Web Service的业务方法。

将一个业务类所有需要开放为Web Service的方法通过一个窄接口来描述是值得推荐的作法,这让Web Service的接口显得很“干净”。其次,XFire的导出器也需要服务接口的支持,因为它采用基于接口的动态代理技术。

窄接口中的方法在真实的系统中可能需要引用其它的业务类或DAO获取数据库中的真实数据,为了简化实例,我们在此简化了实例。

下面让我们看看在xfire-servletxml文件中导出器的设置,该文件内容如下:

<xml version="10" encoding="UTF-8">

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

"http://wwwspringframeworkorg/dtd/spring-beansdtd">

<beans>

<!-- 引入XFire预配置信息 -->

<import resource="classpath:org/codehaus/xfire/spring/xfirexml" />

<!—定义访问的url-->

<bean class="orgspringframeworkwebservlethandlerSimpleUrlHandlerMapping">

<property name="urlMap">

<map>

<entry key="/HelloWorldServicews">

<ref bean="HelloWorldService" />

</entry>

</map>

</property>

</bean>

<!-- 使用XFire导出器 -->

<bean id="baseWebService" class="orgcodehausxfirespringremotingXFireExporter" lazy-init="false" abstract="true">

<!-- 引用xfirexml中定义的工厂 -->

<property name="serviceFactory" ref="xfireserviceFactory" />

<!-- 引用xfirexml中的xfire实例 -->

<property name="xfire" ref="xfire" />

</bean>

<bean id="HelloWorldService" parent="baseWebService">

<!-- 业务服务bean -->

<property name="serviceBean" ref="HelloWorldBean" />

<!-- 业务服务bean的窄接口类 -->

<property name="serviceClass" value="webserviceHelloWorld" />

</bean>

</beans>

在 上面的配置中,我们可以看到,在该配置文件中引入了xfirexml这个Spring配置文件。它是在XFire核心JAR包中拥有一个预定义的 Spring配置文件,它定义了XFire在Spring中必须用到的一些Bean和资源,需要引入这个预定义的配置文件。从该配置文件中可以看出,我们 通过XFireExporter将业务类导出为Web Service,对于任何导出器,我们都需要引入XFire环境,即serviceFactory和xfire,这是标准的配置。ServiceFactory是XFire的核心类,它可以将一个POJO生成为一个Web Service。

在本实例中,我们通过定义一个baseWebService,其余的webService配置都将该bean作为父bean,这样可以简化Spring的配置,不需要多次引入serviceFactory和xfire。

3 Web Service的测试

在上一步操作完成之后,我们的这个简单的Web Service已经编写完毕,下面让我们来看看自己的劳动成果吧。

在浏览器中输入地址:http://localhost:8080/webservice_helloworld/HelloWorldServicewswsdl,我们可以看到HelloWorldService对应的WSDL信息,阅读这个WSDL文档,我们可以知道HelloWorld的sayHelloWorld方法已经被成功地发布为Web Service了。只要拿到这个WSDL就可以开发相应的客户端调用程序了。

XFire为访问服务端Web Service提供了各种方便的方式:我们一般根据服务地址和窄接口类创建客户调用程序。

在不能获得服务窄接口类的情况下,XFire允许我们通过WSDL文件生成客户端调用程序,通过指定服务接口的方式调用服务。

1)通过WSDL文件生成客户端调用程序

首先我们通过http://localhost:8080/webservice_helloworld/HelloWorldServicewswsdl我们可以获得WSDL文件HelloWorldServicewsdl,并将其放在src目录下面,接着我们通过程序访问该WSDL文件,并调用需测试的方法。此时测试类WebServiceClientTestjava的内容如下所示:

package test;

import orgcodehausxfireclientClient;

import orgspringframeworkcoreioClassPathResource;

import orgspringframeworkcoreioResource;

import webserviceHelloWorld;

/ //

Copyright2007GuangZhouAmigo

Allrightreserved

HelloWorld的webservice的测试类

@author<a href="mailto:xiexingxing1121@126com">AmigoXie</a>

@version10

Creationdate:2007-9-16-下午05:36:05

/

publicclass WebServiceClientTest {

HelloWorld helloWorld = null;

publicstaticvoid main(String[] args) throws Exception {

WebServiceClientTest test = new WebServiceClientTest();

testtestClient();

}

publicvoid testClient() throws Exception {

String wsdl = "HelloWorldServicewsdl"; //对应的WSDL文件

Resource resource = new ClassPathResource(wsdl);

Client client = new Client(resourcegetInputStream(), null); //根据WSDL创建客户实例

Object[] objArray = new Object[1];

objArray[0] = "阿蜜果";

//调用特定的Web Service方法

Object[] results = clientinvoke("sayHelloWorld", objArray);

Systemoutprintln("result: " + results[0]);

}

}

运行该类,可得到如下输出结果:

result: hello,阿蜜果

可看出运行结果正确。

2)根据服务地址创建客户端调用程序

接着让我们来看一个根据服务地址创建客户端调用程序的例子。我们可以通过测试类来测试Web Service的正确性,下面让我们来看一个简单的测试类,首先我们在src/test目录建立WebServiceClientTestjava文件,并在src目录下建立客户端调用的Spring配置文件clientxml。在clientxml配置文件中我们定义了一个testWebService的bean,该bean访问wsdlDocumentUrl为http://localhost:8080/webservice_helloworld/HelloWorldServicewswsdl的WSDL。该xml文件的详细内容如下:

<xml version="10" encoding="UTF-8">

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

"http://wwwspringframeworkorg/dtd/spring-beansdtd">

<beans>

<bean id="testWebService" class="orgcodehausxfirespringremotingXFireClientFactoryBean">

<property name="serviceClass">

<value>webserviceHelloWorld</value>

</property>

<property name="wsdlDocumentUrl">

<value>http://localhost:8080/webservice_helloworld/HelloWorldServicewswsdl</value>

</property>

</bean>

</beans>

在WebServiceClientTestjava文件中获得HelloWorld,并调用它的sayHelloWorld方法来完成测试,该类的详细内容如下所示:

package test;

import orgspringframeworkcontextApplicationContext;

import orgspringframeworkcontextsupportClassPathXmlApplicationContext;

import webserviceHelloWorld;

/ //

HelloWorld的webservice的测试类

/

publicclass WebServiceClientTest {

HelloWorld helloWorld = null;

publicstaticvoid main(String[] args) {

WebServiceClientTest test = new WebServiceClientTest();

testtestClient();

}

publicvoid testClient() {

ApplicationContext ctx = new ClassPathXmlApplicationContext(

"clientxml");

helloWorld = (HelloWorld) ctxgetBean("testWebService");

Systemoutprintln(helloWorldsayHelloWorld("阿蜜果"));

}

}

在启动webservice_helloworld工程的情况下,运行WebServiceClientTest类,可看到控制台包含如下信息:

hello,阿蜜果

由此可看出调用Web Service成功。

四.总结

与Axis 相比,在实施Web Service时XFire更加简洁高效,并且XFire对Spring提供了强大的支持,可以非常方便地在Spring中使用XFire实施Web Service,因此XFire在短短的时间里成为了受Web Service开发者喜爱的框架。

XFire为客户端提供了多种访问Web Service的方式,如果可以获取客户端的窄接口类,则可以采用窄接口类调用Web Service。如果仅能获取WSDL,XFire也可以采用动态反射的机制调用Web Service。XFire为Eclipse提供了一个可以根据WSDL生成客户端存根代码的插件,相信XFire也将为其它非Java语言提供类似的插 件。

在Axis2中也开始使用Stax来处理XML,还有Xfire不支持WSDL20, 而Axis2支持WSDL20。

还可使用Xfire的后续版本,Apache CXF (相当于 Xfire20)

Hyperic HQ集成了强大的监测和管理功能,它有开源版本,您可以直接使用它用来对web服务器进行监控。

如果您想自己写代码实现,Hyperic HQ提供了一个服务器各种性能指标采集的API,这个API包本身提供了各种平台(linux/MAC/window等)的兼容。

ITjob远标教育

  

步骤:

  1,新建一个普通JAVA类即可。

  2,选择这个类,右键。new--->other,在对话框中选中MyEclipse下的Web Service,点击next

  3,strategy选择 Create webService from Java class (Bottom-up scenario),点击next

  4,点击Browse

  5,选择刚新建的普通JAVA类,点击OK

  6,点击finish

  7,项目目录中就会生成一个新的JAVA类

  8,至此webService完成。

接口 配置文件 文件 客户端 测试
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 用 java 编写一个 基于Web Service的软件

商业源码 钻石

分享到:
上一篇
剑灵 网通一区 里面还分那么多服务器 是不是不通用? 网一人多吗
下一篇
关于内外网同时上,路由器怎么设置

相关推荐

所谓的上网行为审计可以知道多少内容?

所谓的上网行为审计可以知道多少内容?

Windows 无法与此域连接,原因是,域控制器存在故障或不可用,,,,,

Windows 无法与此域连接,原因是,域控制器存在故障或不可用,,,,,

常用的ftp服务器软件有哪些?

常用的ftp服务器软件有哪些?

请问dell poweredge r730有光纤接口吗?

请问dell poweredge r730有光纤接口吗?

0条评论

发表评论 取消回复

要发表评论,您必须先登录。

提供最优质的资源集合

立即查看 了解详情
网站模板库

主题/付费下载/查看/余额管理/自定义积分,集成支付,卡密,推广奖励等。

本站导航
  • 链接标题
友情链接
  • 链接标题
快速搜索
本站由钛宇宙强力驱动
友情链接:
    商业源码网蜀ICP备2023005044号
    网站模板库
    • 登录
    • 注册
    网站模板库
    • 首页
    • web前端工具►
      • HTML/JS转换工具
      • JS/HTML格式化工具
      • 字母/英文大小写转换工具
      • robots.txt文件生成工具
      • Js压缩/格式化工具
      • Css在线压缩工具_代码格式化
    • 关于我们►
      • 免责声明
      • 联系我们
      • 广告服务
      • 服务项目
      • 关于我们
      • 网站轮播
      • 公告
      • 成都优优科技专用
      • 按行业分类
    • web学院►
      • 服务器教程
      • 学习资料►
        • 基础书籍
        • 交互书籍
        • 入门教程
        • 特效分类
      • 案例分享
      • web资讯
    • 网页特效►
      • 图片特效
      • 导航特效
      • 滑动按钮
      • 表单特效
      • 文字特效
      • 弹窗特效
      • 其他特效
    • 织梦模板►
      • 科技/电子/数码/通信
      • 文化/艺术/广告/传媒
      • 装修/设计/家居/家具
      • 基建/施工/地产/物业
      • 餐饮/酒店/旅游/票务
      • 食品/果蔬/饮料/日用
      • 服饰/珠宝/礼品/玩具
      • 摄影/婚庆/家政/生活
      • 运动/健身/体育/器材
      • 学校/教育/培训/科研
      • 美容/保健/医院/医疗
      • 金融/财税/咨询/法律
      • 政府/组织/集团/协会
      • 汽车/物流/交通/搬运
      • 机械/设备/制造/仪器
      • 化工/环保/能源/材料
      • 农业/畜牧/养殖/宠物
      • 其他模版
      • IT/软件/信息/互联网
    • 手机模板►
      • 手机APP模板
      • 微信小程序模板
      • wap
    • 网站模板►
      • joomla模板
      • Drupal模板
      • z-blog模板
      • EyouCms模板
      • Bootstrap模板
      • 帝国cms模板
      • CmsEasy模板
      • MetInfo模板
      • 购物商城模板►
        • Shopify主题
        • PrestaShop主题
      • 后台模板
      • 纯HTML模板
      • ecshop模板
      • phpwind模板
      • pbootcms模板
      • phpcms模板
      • wordpress模板
      • discuz模板
    • 教程►
      • 织梦教程
      • Discuz教程
      • WordPress教程
      • Phpcms教程
      • Phpwind教程
      • ECShop教程
      • Joomla教程
      • Drupal教程
      • zblog教程
      • EyouCMS教程
      • 帝国cms教程
      • MetInfo教程
      • CmsEasy教程

      弹窗标题

      这是一条网站公告,可在后台开启或关闭,可自定义背景颜色,标题,内容,用户首次打开关闭后不再重复弹出,此处可使用html标签...