Web Services使我们能够在网络上建立分布式系统,应用程序组件可以通过任何平台、任何语言和任何方式访问。无论应用程序如何开发,使用了什么语言,以及运行在什么操作系统平台上,只要它作为Web Service,并且为协同解决问题而设计,那么你的应用程序,以任何语言开发或在任何平台上,都可以利用它的服务。简而言之,就是说,你可以跨平台,你可以实用别人的数据,你可以调用现成的方法,你可以得到更多的便捷,在现实的开发中。
使用webservice之前,我们且不管你是否使用了现有的框架,或者你使用的是哪个框架,我们最好先了解它的规则和构成,比如,你想写个网页,那你得先晓得<html><title><head><body>它们是要有结束的,这是基本的前提。而使用webservice的前提则没那么多,第一,你该晓得,它是以xml形式作为默认的传递格式;第二,和http协议类似,它默认是以soap(Simple Object Access Protocol)协议,封装和交换信息的;第三,WSDL(Web
Services Deion Language,Web Services描述语言),它是对webservice的一种详细描述,里面包含协议啊,服务地址啊,方法列表啊,参数啊等等之类的。它返回的xml是给我们处理的,而这个wsdl则是交给机器,交给客户端程序处理的。
ok,说完上面的,大体有个印象和看法了,我们开始webservice的最佳体验。这里,我首先用xfire框架来实现在javaweb项目中的webservice的开发和调用[非javaweb的项目步骤较容易,这里就不讲了],这个xfire也是我第一次接触webservice时所使用的开源框架,所以我打算好好写写[谁让我这么念旧呢(⊙o⊙)…]。axis,axis2,cxf之类的框架至于我打算后面再看能不能写写.....
第一步,新建一个接口,IBankingService.java,这个接口即是你将模拟对外发布的接口,代码如下:
-
packagecom.mybank.xfire.example;
-
-
publicinterfaceIBankingService{
-
-
publicStringtransferFunds(
-
StringfromAccount,StringtoAccount,doubleamount,Stringcurrency);
-
-
}
第二步,实现这个接口,并实现里面的方法,方便后面看效果,代码如下:
-
packagecom.mybank.xfire.example;
-
-
importjava.text.NumberFormat;
-
importjava.text.DecimalFormat;
-
-
-
-
publicBankingServiceimplementsIBankingService{
-
-
-
publicBankingService(){
-
}
-
-
-
publicStringtransferFunds(
-
StringfromAccount,StringtoAccount,doubleamount,Stringcurrency){
-
-
StringstatusMessage="";
-
-
-
-
try{
-
NumberFormatformatter=newDecimalFormat("###,###,###,###.00");
-
statusMessage="COMPLETED:"+currency+""+formatter.format(amount)+
-
"wassuccessfullytransferredfromA/C#"+fromAccount+"toA/C#"+toAccount;
-
}catch(Exceptione){
-
statusMessage="BankingService.transferFunds():EXCEPTION:"+e.toString();
-
}
-
returnstatusMessage;
-
}
-
-
}
第三步,修改web.xml,加入关于xfire的相关配置,代码如下:
-
<servlet>
-
<servlet-name>XFireServlet</servlet-name>
-
<display-name>XFireServlet</display-name>
-
<servlet->org.codehaus.xfire.transport.http.XfireConfigurableServlet
-
</servlet->
-
</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-inf文件夹新建xfire文件夹,在xfire文件夹下,新建services.xml,这个xml能规范你的接口的详细信息,是否公开,作用域等等,实际开发中,配置可能会相当复杂,具体详解请大家去参考官方文档,这里我们弄简单的,代码如下:
-
<beansxmlns="http://xfire.codehaus.org/config/1.0">
-
<service>
-
<name>Banking</name>
-
<namespace>mybank</namespace>
-
<service>com.mybank.xfire.example.IBankingService</service>
-
<implementation>com.mybank.xfire.example.BankingService</implementation>
-
</service>
-
</beans>
第五步,当然就是对外,发布我们这个webservice了,发布后它将成为一个wsdl供外部调用,这里我贴一下lib下所需要的jar文件:
• activation-1.0.2.jar
• commons-codec-1.3.jar
• commons-httpclient-3.0.jar
• commons-logging-1.0.4.jar
• jaxen-1.1-beta-8.jar
• jdom-1.0.jar
• log4j-1.2.x.jar
• mail-1.3.3_01.jar
• spring-1.2.x.jar
• stax-api-1.0.jar
• wsdl4j-1.5.2.jar
• wstx-asl-2.9.jar
• xbean-2.1.0.jar
• xbean-spring-2.2.jar
• xfire-all-1.0.jar
• XmlSchema-1.0.jar
服务器启动后,我们在地址栏键入,http://localhost:8080/ws_xfire/services/Banking?wsdl,浏览器页面出现一堆xml,且可展开,说明发布成功;假使报错,请根据错误以及以上步骤,检查改正。
第六步,对外接口发布之后,我们模拟在本地客户端去调用它发布的方法,以此完结这篇文章。我们来实现调用的方法,代码如下:
-
-
-
-
publicStringcallWebService(
-
StringfromAccount,StringtoAccount,doubleamount,Stringcurrency)
-
throwsMalformedURLException,Exception{
-
-
-
ServiceserviceModel=newObjectServiceFactory().create(IBankingService.);
-
log.debug("callSoapServiceLocal():gotservicemodel.");
-
-
-
XFirexfire=XFireFactory.newInstance().getXFire();
-
XFireProxyFactoryfactory=newXFireProxyFactory(xfire);
-
-
StringserviceUrl="http://localhost:8080/websvc/services/Banking";
-
-
IBankingServiceclient=null;
-
try{
-
client=(IBankingService)factory.create(serviceModel,serviceUrl);
-
}catch(MalformedURLExceptione){
-
log.error("WsClient.callWebService():EXCEPTION:"+e.toString());
-
}
-
-
-
StringserviceResponse="";
-
try{
-
serviceResponse=client.transferFunds(fromAccount,toAccount,amount,currency);
-
}catch(Exceptione){
-
log.error("WsClient.callWebService():EXCEPTION:"+e.toString());
-
serviceResponse=e.toString();
-
}
-
log.debug("WsClient.callWebService():status="+serviceResponse);
-
-
-
returnserviceResponse;
-
}
当然,这个方法可以放在你的servlet的doGet()/doPost()里面,也能放到你的main()函数里面,反正都是测试看效果的,我这里因为是个web项目,所以我配置了一个servlet,请求如下,http://localhost:8080/ws_xfire/ws。为了尝试不同的输入,你可以试试另外一种,完整的输入方式,http://localhost:8080/ws_xfire/ws??from=11-2345&to=77-9876&amt=250.00&cur=EUR.
最后我们总结下,它的开发流程:
基本的Web Services开发步骤清单
这个清单总结了将一个Java方法发布为Web Service所必须的步骤:
1、 检查Java类的方法和默认构造函数确保为public
2、 增加XFire servlet相关条目到web.xml中
3、 创建services.xml,把它放到WEB-INF/es/META-INF/xfire目录下
4、 增加XFire和第三方包到你的Web应用的WEB-INF/lib文件夹中
这就是所有需要的步骤,是的,没那么容易也没那么的难。[接下来,我去想想axis和cxf的,看能不能也写写 = _=]
分享到:
相关推荐
"Java 使用 XFire 调用 webService 接口" ...我们了解了服务端和客户端的开发步骤,并了解了使用 XFire 调用 webService 接口的优点。通过本文,我们可以更好地理解和应用 XFire 框架,提高 Web 服务的开发和集成效率。
此程序demo详细描述的从发布接口到调用接口的全部过程,详细描述了Xfire调用webservice参数无法传递的问题。
xfire调用webservice xfire是一款基于Java的开源WebService框架,它提供了一个简单、灵活和高效的方式来开发和部署WebService。xfire可以与多种类型的WebService结合使用,如SOAP、REST、XML-RPC等。xfire还提供了...
java用XFire开发调用webService例子知识.pdf
此程序demo详细描述的从发布接口到调用接口的全部过程,详细描述了Xfire调用webservice参数无法传递的问题。
这个自己写的xFire发布WebService,包含发布和调用,可以用在企业中,而且所用的jar也比较少,不会出现很多jar的问题,一共才9个jar,[commons-codec-1.3.jar,commons-httpclient-3.0.jar,commons-logging-1.0.4.jar,...
xfire开发webservice与调用 用起来比axis简单,容易上手。没有axis那么复杂。性能也比axis好。附件里面包含教程文档及实例代码
Xfire客户端调用webservice接口所需 jar包,亲测可用。
java xfire调用webservice 调用本地自己写的webService 调用网站webxml.com.cn的webservice
Java使用XFire调用WebService接口.docx
使用xfire开发webservice的客户端需要的完整jar包,直接导入开放就可以用了。使用Xfire构建JAVA的webService全过程(从服务端到客户端)
最近项目中遇到需要去掉老系统的webservice服务中的insert方法,找了很久,发现这样最简单,实测有效!!!
NULL 博文链接:https://zhangzhaoaaa.iteye.com/blog/1706367
xfire开发webservice以及Android利用ksoap2访问webservice。包括源码和jar包
XFire是Java实现WebService的一个框架,可以完成webservice服务的发布以及对发布接口的调用的全部jar包
java用XFire调用webservice例子.docxjava用XFire调用webservice例子.docx
webservice ixfir 客户端端开发 对象传递使webservice开发更加简单快捷
Java使用XFire调用WebService接口.docx
JS调用webService实例,其中有详细使用文档! myEclipse部署上客户端和服务器端即可直接测试! 使用技术: JS,webService,JS调用webService,xfire,数字证书