初次接触webservice开发,在部署上遇到了不少问题,现整理如下:
webservice 简单来说就是使自己的应用程序成为web程序。
开始一直很迷茫webservice与javaweb有什么区别,至写本文档时仍让感觉不很清晰,希望看到的大侠能给以解答。好了废话不说了,以下是正文!
一、服务器端开发
1.下载xfire:
http://xfire.codehaus.org/Download,下载其最新的二进制版本,对xfire有兴趣,英语牛逼的可以下载源代码版,本人下载的是1.2.6版。
2.利用eclipse+xfire开发webservice服务端
2.1在eclipse中new一个Dynamic Web Project,假定项目名为xfireDemo,假设content的名,命名空间为xfire
2.2解压下载的xfire zip包,将xfire-1.2.6目录下的xfire-all-1.2.6.jar和xfire-1.2.6\lib下的所有jar文件拷贝到xfireDemo项目中的webcontent\web-inf\lib目录下,并将其导入项目的buildpath中。
2.3修改webcontent\web-inf\web.xml配置文件的内容,下面是修改后的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_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>newXfire</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<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>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
web.xml配置文件中的servlet映射表明,所有匹配“/services/*”的请求全部交给
org.codehaus.xfire.transport.http.XFireConfigurableServlet
来处理。
2.4编写需要发布为webservice的java类,本例以最简单的一个加法类MathService.java为例:
package com.hengbao.servlet;
/**
* @author 作者 guwh
* @version 创建时间:2012-2-23 下午2:39:38
* 类说明
*/
public class MathService {
public int Add(int a ,int b){
return a+b ;
}
}
2.5在webcontent\meta-inf目录下新建xfire文件夹,然后在xfire文件夹下添加一个xfire使用的service.xml文件,该配置文件的内容反映了要将那些java类发布为webservice服务。本例中的service.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>MathService</name>
<namespace>http://com.hengbao.servlet/MathService</namespace>
<serviceClass>com.hengbao.servlet.MathService</serviceClass>
</service>
</beans>
xfire会借助spring来解析service.xml文件。从中提取要分布为webservice配置的信息。
2.6在webcontent\web-inf目录下新建classes文件夹,然后将webcontent下的meta-inf文件全部剪贴到(move)此classes文件夹下。
否则会报:
“org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [META-INF/xfire/services.xml]; nested exception is java.io.FileNotFoundException: class path resource [META-INF/xfire/services.xml] cannot be opened because it does not exist”。
的错误。
2.7将本项目发布到tomcat下,其中tomcat,在浏览器中输入:http://localhost:8080/xfire/services/MathService?wsdl会得到正确的web服务描述文档。
至此,webservice的服务器端代码开发完毕。
二、客户端开发:
据说客户端开发的方案有很多种,在此本人采用eclipse+xfire插件的方式开发。
1.xfire-eclispe插件安装:
打开eclispe--help--install new software,add Name:(自己填,如xfire);Location:填入网址:http://dist.codehaus.org/xfire/update/ 详细插件安装过程见:http://xfire.codehaus.org/Eclipse+Plugin
2.插件安装成功后:
在eclipse中新建一个Java Project,假设项目名为:xfireTest。
3.在本项目中,new一个XFire--Code generation from WSDL document,点击next,在WSDL URL or path中输入服务器端wsdl的访问网址:本例为http://localhost:8080/xfire/services/MathService?wsdl ,在Output directory中填入:/xfireTest/src,在Package中写入你自己定义的包名:本例中写的是com.hengbao.cilent,点击finish完成。则eclipse会自动生成一个java类和其他的一写文件。本例中生成的java类是在com.hengbao.cilent包下的
MathServiceClient.java
MathServiceImpl.java
MathServicePortType.java
和servlet.hengbao.com.mathservice包下的
Add.java
AddResponse.java
ObjectFactory.java
package-info.java
4.在
MathServiceClient.java
类中新增一下main代码,以进行测试,代码如下:
public class MathServiceClient {
........
//新增main测试代码
public static void main(String[] args) {
//new一个客户端
MathServiceClient client = new MathServiceClient();
//创建服务
MathServicePortType service = client.getMathServiceHttpPort();
//调用服务
System.out.println(service.add(4, 5));
}
}
其中webservice服务器端,然后运行程序后,在控制台输出“9”,这边明调用web服务成功。
如果在运行客户端程序时,报:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/methods/RequestEntity
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:108)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy8.hello(Unknown Source)
at life.com.hello.Client.<init>(Client.java:11)
at life.com.hello.Client.main(Client.java:15)
的错误,则表明缺少jar包commons-httpclient-3.0.jar,添加jar后还报:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException
at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220)
at org.apache.commons.httpclient.methods.ExpectContinueMethod.<init>(ExpectContinueMethod.java:93)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.<init>(EntityEnclosingMethod.java:119)
at org.apache.commons.httpclient.methods.PostMethod.<init>(PostMethod.java:106)
at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.open(CommonsHttpMessageSender.java:135)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:121)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy8.hello(Unknown Source)
at life.com.hello.Client.<init>(Client.java:11)
at life.com.hello.Client.main(Client.java:15)
的错误,表明缺少commons-codec-1.3.jar,添加jar包后运行成功,输入“9”。
至此,xifre的webservice应用的服务器端与客户端开发部署完毕。
分享到:
相关推荐
提升效率类软件。安装后通过单击 空格 按键,快速预览文件、目录等内容。 QuickLook.Plugin.FolderViewer.qlplugin 用于预览 文件夹子目录 QuickLook.Plugin.HelixViewer用于浏览stl、obj、3ds、lwo、ply格式的三维...
在Eclipse3.7.0中进行汉化是一项非常实用的需求,对于中文用户来说,能够以熟悉的语言界面进行开发工作无疑会提升开发体验。汉化包的使用方法相对简单,主要涉及以下步骤: 1. **下载汉化包**:首先,你需要从可靠...
【Android\eclipse3.7.0汉化包】是一个针对Eclipse IDE的汉化资源,专为Android开发者设计,适用于Eclipse 3.7.0版本。这个汉化包是为了解决那些习惯使用中文界面的开发者在使用英文版Eclipse时的语言障碍,提升开发...
标题中的"python3.6.2+3.7.0+3.7.2.zip"表明这是一个包含三个不同版本的Python解释器的压缩文件,分别是Python 3.6.2、3.7.0和3.7.2。这些版本代表了Python在不同时间点的稳定发行版,每个版本都有其特定的新特性、...
`JasperReports` 是一个用Java编写的报表库,它允许开发人员在Java应用程序、Web应用程序或者Servlet容器中生成报表。在3.7.0版本,`JasperReports` 支持多种数据源,包括数据库连接、CSV文件、XML数据等,同时提供...
Eclipse 3.7.0 中文语言包是一款专为Eclipse IDE设计的本地化插件,用于将软件界面从英文转换为简体中文,方便中国用户进行开发工作。Eclipse是一个广泛使用的开源集成开发环境(IDE),尤其在Java开发领域具有很高...
总的来说,"rabbitmq-server-3.7.0+otp_win64_20.2"是一个包含RabbitMQ服务器和 OTP环境的完整安装包,适合在Windows系统上快速搭建RabbitMQ环境。通过理解和熟练掌握RabbitMQ的基本概念和操作,我们可以利用这个...
Eclipse 3.7.0是其一个重要的版本,它提供了丰富的功能和改进,使得开发者能够更加高效地进行软件开发工作。这个版本在当时是相当新的,因此汉化包的出现对于中国用户来说是非常有价值的,因为它使得中文用户可以更...
本教程将深入探讨如何使用XFire开发Web服务,并在Android应用中通过KSOAP2进行调用。 首先,我们需要了解XFire的基础知识。XFire(现已被Apache CXF项目合并)是一个轻量级的Web服务框架,它支持SOAP、RESTful和XML...
下载完这两个东东之后呢,我们需要把他们放到特定的地方 ...Eclipse->Window->Preferences->Java->JadClipse 设置path to decompiler为jad.exe的全路径, 在Directory for temporary files中指定 这个是临时文件
《深入理解OSGi:以org.eclipse.osgi_3.7.0.v20110613及其源码为例》 OSGi(Open Services Gateway Initiative)是一种Java模块化系统,它为开发人员提供了动态模块化的解决方案,使得Java应用程序能够更好地管理和...
Eclipse 3.7 Birt 汉化包是一个针对Eclipse集成开发环境(IDE)中的Business Intelligence and Reporting Tools(BIRT)插件进行本地化的软件包。BIRT是一款开源的报告生成工具,允许开发者创建复杂的报表并嵌入到...
综上所述,Eclipse 3.2作为一款重要的开发工具,其功能强大且广泛应用于各种编程语言的开发。尽管在某些情况下可能会用到注册码来激活某些高级功能,但获取此类注册码的最佳途径是通过官方渠道。这样做不仅能够确保...
在本文中,我们将深入探讨如何使用提供的汉化语言包,将Eclipse 3.5.0、3.6.0和3.7.0版本转换为中文界面,以方便中国用户更舒适地进行开发工作。 首先,我们要了解的是,Eclipse的界面默认为英文,这对于一些不熟悉...
标题"BabelLanguagePack-eclipse-zh_3.7.0.v20110723043401"表明这是一个针对Eclipse集成开发环境的中文语言包,版本为3.7.0,发布日期为2011年7月23日。这个包的主要目的是将Eclipse的用户界面从英文翻译成中文,以...
【标题】"org.eclipse.osgi-3.7.0" 是一个特定版本的Eclipse OSGi框架,这个版本是3.7.0,发布日期为2011年6月13日。OSGi(Open Service Gateway Initiative)是一种模块化系统和Java服务平台,它允许在Java应用程序...
截止到2019/06/10日最新版本的osg和osgEarth开发库,新鲜出炉的VS2015/VS2017/VS2019-x64位版本的开发库,包含osg3.6.3和osgEarth2.10.1,以及使用Qt5.12.3编译的osgQt库,若需要使用其他版本的Qt,则需要从包内删除...
FileZilla Server是一款免费开源的FTP服务器端架设程序,使用它你可以轻松的在本地电脑或服务器上架设属于你的FTP服务器,与好友互相分享各种资源,FileZilla 官方提供有Windows版、Mac版与Linux版的客户端,这些...
后端技术: SpringBoot_2.1.3.RELEASE + Mybatis-plus_3.1.2 + Shiro_1.4.0 + Jwt_3.7.0 + Swagger-ui + Redis 前端技术: Ant-design-vue + Vue + Webpack 其他技术: Druid(数据库连接池)、Logback(日志工具...
一款基于Eclipse SWT技术上的双向Java Gui设计软件。具备SWT设计以及Swing设计两个主要功能。该软件会被作为一个插件镶嵌入Eclipse以及其他一些兼容的IDEs中 note:WindowBuilder Pro is a market-leading GUI ...