xfire开发并调用webservice[亲测有效]

您所在的位置:网站首页 pycharm如何调用函数 xfire开发并调用webservice[亲测有效]

xfire开发并调用webservice[亲测有效]

2023-04-24 06:29| 来源: 网络整理| 查看: 265

xfire开发并调用webservice[亲测有效] 思创斯忠实用户-ss • 2023年4月14日 19:15 • 未分类

xfire开发并调用webservice[亲测有效]WebServices使我们能够在网络上建立分布式系统,应用程序组件可以通过任何平台、任何语言和任何方式访问。无论应用程序如何开发,使用了什么语言,以及运行在什么操作系统平台上,只要它作为WebService,并且为协同解决问题而设计,那么你的应用程序,以任何语言开发或在任何平台上,都可以利用它的服务。简而言之,就是说,你可以跨平台,你可以实用别人的数据,你可以调用现成的方法,你可以得到更多的…

大家好,我是你的好朋友思创斯。今天说一说xfire开发并调用webservice[亲测有效],希望您对编程的造诣更进一步.

Web Services使我们能够在网络上建立分布式系统,应用程序组件可以通过任何平台、任何语言和任何方式访问。无论应用程序如何开发,使用了什么语言,以及运行在什么操作系统平台上,只要它作为Web Service,并且为协同解决问题而设计,那么你的应用程序,以任何语言开发或在任何平台上,都可以利用它的服务。简而言之,就是说,你可以跨平台,你可以实用别人的数据,你可以调用现成的方法,你可以得到更多的便捷,在现实的开发中。

使用webservice之前,我们且不管你是否使用了现有的框架,或者你使用的是哪个框架,我们最好先了解它的规则和构成,比如,你想写个网页,那你得先晓得它们是要有结束的,这是基本的前提。而使用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,这个接口即是你将模拟对外发布的接口,代码如下:

Java代码1.package com.mybank.xfire.example;2.3.public interface IBankingService {4.5. public String transferFunds(6. String fromAccount, String toAccount, double amount, String currency);7.8.}package com.mybank.xfire.example;

public interface IBankingService {

public String transferFunds( String fromAccount, String toAccount, double amount, String currency);

}

第二步,实现这个接口,并实现里面的方法,方便后面看效果,代码如下:

Java代码1.package com.mybank.xfire.example;2.3.import java.text.NumberFormat;4.import java.text.DecimalFormat;5.6./** XFire WebServices sample implementation .7.*/8.public BankingService implements IBankingService {9.10.11. public BankingService(){12. }13.14.15. public String transferFunds(16. String fromAccount, String toAccount, double amount, String currency){17.18. String statusMessage = “”;19.20. //Call business objects and other components to get the job done.21. //Then create a status message and return.22. try {23. NumberFormat formatter = new DecimalFormat(“###,###,###,###.00”);24. statusMessage = “COMPLETED: ” + currency + ” ” + formatter.format(amount)+25. ” was successfully transferred from A/C# ” + fromAccount + ” to A/C# ” + toAccount;26. } catch (Exception e){27. statusMessage = “BankingService.transferFunds(): EXCEPTION: ” + e.toString();28. }29. return statusMessage;30. }31.32.}package com.mybank.xfire.example;

import java.text.NumberFormat;import java.text.DecimalFormat;

/** XFire WebServices sample implementation .*/public BankingService implements IBankingService {

public BankingService(){ }

public String transferFunds( String fromAccount, String toAccount, double amount, String currency){

String statusMessage = “”;

//Call business objects and other components to get the job done. //Then create a status message and return. 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; }

}

第三步,修改web.xml,加入关于xfire的相关配置,代码如下:

Xml代码1.2. XFireServlet3. XFire Servlet4. org.codehaus.xfire.transport.http.XfireConfigurableServlet5. 6. 7.8. 9. XFireServlet10. /servlet/XFireServlet/*11. 12.13. 14. XFireServlet15. /services/*16. XFireServlet XFire Servlet org.codehaus.xfire.transport.http.XfireConfigurableServlet

XFireServlet /servlet/XFireServlet/*

XFireServlet /services/*

第四步,在web-inf文件夹新建xfire文件夹,在xfire文件夹下,新建services.xml,这个xml能规范你的接口的详细信息,是否公开,作用域等等,实际开发中,配置可能会相当复杂,具体详解请大家去参考官方文档,这里我们弄简单的,代码如下:

Xml代码1.2. 3. Banking4. mybank5. com.mybank.xfire.example.IBankingService6. com.mybank.xfire.example.BankingService7. 8. Banking mybank com.mybank.xfire.example.IBankingService com.mybank.xfire.example.BankingService

第五步,当然就是对外,发布我们这个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,且可展开,说明发布成功;假使报错,请根据错误以及以上步骤,检查改正。

第六步,对外接口发布之后,我们模拟在本地客户端去调用它发布的方法,以此完结这篇文章。我们来实现调用的方法,代码如下:

Java代码1./* Call the Web service2. *3. */4. public String callWebService(5. String fromAccount, String toAccount, double amount, String currency)6. throws MalformedURLException, Exception {7.8. //Create a metadata of the service9. Service serviceModel = new ObjectServiceFactory().create(IBankingService.);10. log.debug(“callSoapServiceLocal(): got service model.” );11.12. //Create a proxy for the deployed service13. XFire xfire = XFireFactory.newInstance().getXFire();14. XFireProxyFactory factory = new XFireProxyFactory(xfire);15.16. String serviceUrl = “http://localhost:8080/websvc/services/Banking”;17.18. IBankingService client = null;19. try {20. client = (IBankingService) factory.create(serviceModel, serviceUrl);21. } catch (MalformedURLException e) {22. log.error(“WsClient.callWebService(): EXCEPTION: ” + e.toString());23. }24.25. //Invoke the service26. String serviceResponse = “”;27. try {28. serviceResponse = client.transferFunds(fromAccount, toAccount, amount, currency);29. } catch (Exception e){30. log.error(“WsClient.callWebService(): EXCEPTION: ” + e.toString());31. serviceResponse = e.toString();32. }33. log.debug(“WsClient.callWebService(): status=” + serviceResponse);34.35. //Return the response36. return serviceResponse;37. }/* Call the Web service * */ public String callWebService( String fromAccount, String toAccount, double amount, String currency) throws MalformedURLException, Exception {

//Create a metadata of the service Service serviceModel = new ObjectServiceFactory().create(IBankingService.); log.debug(“callSoapServiceLocal(): got service model.” );

//Create a proxy for the deployed service XFire xfire = XFireFactory.newInstance().getXFire(); XFireProxyFactory factory = new XFireProxyFactory(xfire);

String serviceUrl = “http://localhost:8080/websvc/services/Banking”;

IBankingService client = null; try { client = (IBankingService) factory.create(serviceModel, serviceUrl); } catch (MalformedURLException e) { log.error(“WsClient.callWebService(): EXCEPTION: ” + e.toString()); }

//Invoke the service String serviceResponse = “”; try { serviceResponse = client.transferFunds(fromAccount, toAccount, amount, currency); } catch (Exception e){ log.error(“WsClient.callWebService(): EXCEPTION: ” + e.toString()); serviceResponse = e.toString(); } log.debug(“WsClient.callWebService(): status=” + serviceResponse);

//Return the response return serviceResponse; }

当然,这个方法可以放在你的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文件夹中

这就是所有需要的步骤,是的,没那么容易也没那么的难。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由思创斯整理,转载请注明出处:https://ispacesoft.com/130244.html

赞 (0) 思创斯忠实用户-ss思创斯忠实用户-ss 0 0 生成海报


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3