- 浏览: 465676 次
- 性别:
- 来自: 潘多拉
文章分类
最新评论
-
lijunwyf:
代码好像不完整,后端没串起来的感觉
Json-RPC for java首次尝试 -
jerry.chen:
我用这种方式去,貌似没啥效果,楼主!
Xfire开发的webservice客户端超时问题解决 -
漫步邃思:
这个问题常遇到,老是想不起来解决方法,记住了
resin3.1.0无法解析EL表达式问题解决 -
dampce032:
在不删掉integratedSecurity=true;的情况 ...
JDBC 连接SQLServer数据库(Failed to load the sqljdbc_auth.dll) -
kill_e680:
取CPU号和取硬盘号,在linux下可以用吗?
sigar使用:在web中应用sigar取得系统信息
1. 编写实现类
a. 首先建一个接口把对外开放的方法添加进该接口,实际上就是开放此接口让客户端获得
2. 映射web.xml
通过配置web.xml来映射相应的路径,在web.xml添加如下代码
3.services配置文件
创建services文件
在src目录下创建META-INF目录,在该目录下创建一个xfire目录在该目录下创建services.xml
通过配置此文件来公开我们的接口,客户端可以通过此文件的映射可以找到相应的需要公开的接口
获取wsdl文件的地址
什么是wsdl?
参考: http://blog.csdn.net/sunchaohuang/archive/2008/10/14/3076375.aspx
通过web.xml与services.xml对地址的映射我们可以获得如下地址并进行访问后就可
以得到wsdl文件的url了
访问的地址:http://localhost:9099/HelloXfire/services/HelloXfire?wsdl
访问后会得到一个类似xml格式的内容 该文件就是一个wsdl文件
4.编写客户端
客户端获得webservice的url地址后创建对外开放的接口的实体类,然后向相应的方法传递参数,经过服务端相应的处理返回需要的结果
-----------------------------------------------------------------------------------------------
不同项目的webservice调用
一般情况下webservice的调用都是在不同的项目间或者不同的语言中来使用的
如果是不同的语言调用webservice应用:
客户端如果是其他语言,则通过得到服务端生成的wsdl或者或者wsdl文件的地址做相应的操作得到本语言具体的客户端实现类来调用服务端对外开放的方法
如果是不同项目间的调用(java语言为例)在myeclipse下新建一个web service Client选择xfire下一步后选择wsdl的地址: http://localhost:9099/HelloXfire/services/HelloXfire?wsdl
完成后会自动生成相应的客户端类。
在HelloXfireClient类中调取服务端对外开放的接口方法获得相应数据.具体代码如下
-----------------------------------------------------------------------------------------------
如果能够成功运行并正确获得调用的方法返回的值说明webservice成功实现了
a. 首先建一个接口把对外开放的方法添加进该接口,实际上就是开放此接口让客户端获得
package com.test.service; public class HelloXfireImpl implements HelloXfire { public String sayHello(String str) { return str + " this is xfire"; } }
2. 映射web.xml
通过配置web.xml来映射相应的路径,在web.xml添加如下代码
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>XFireServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
3.services配置文件
创建services文件
在src目录下创建META-INF目录,在该目录下创建一个xfire目录在该目录下创建services.xml
通过配置此文件来公开我们的接口,客户端可以通过此文件的映射可以找到相应的需要公开的接口
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <name>HelloXfire</name> <serviceClass>com.test.service.HelloXfire</serviceClass> <implementationClass> com.test.service.HelloXfireImpl </implementationClass> <mce:style><!--wrapped--></mce:style> <style mce_bogus="1">wrapped</style> <use>literal</use> <scope>application</scope> </service></beans>
获取wsdl文件的地址
什么是wsdl?
参考: http://blog.csdn.net/sunchaohuang/archive/2008/10/14/3076375.aspx
通过web.xml与services.xml对地址的映射我们可以获得如下地址并进行访问后就可
以得到wsdl文件的url了
访问的地址:http://localhost:9099/HelloXfire/services/HelloXfire?wsdl
访问后会得到一个类似xml格式的内容 该文件就是一个wsdl文件
4.编写客户端
客户端获得webservice的url地址后创建对外开放的接口的实体类,然后向相应的方法传递参数,经过服务端相应的处理返回需要的结果
package com.test.client; import java.net.MalformedURLException; import org.codehaus.xfire.XFireFactory; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.test.service.HelloXfire; public class HelloXfireClient { /** * @param args */ public static void main(String[] args) { Service srvcModel = new ObjectServiceFactory().create(HelloXfire.class); XFireProxyFactory factory = new XFireProxyFactory(XFireFactory .newInstance().getXFire()); String helloWorldURL = "http://localhost:9099/HelloXfire/services/HelloXfire"; try { HelloXfire srvc = (HelloXfire) factory.create(srvcModel, helloWorldURL); String result = srvc.sayHello("hello "); System.out.print(result); } catch (MalformedURLException e) { e.printStackTrace(); } } }
-----------------------------------------------------------------------------------------------
不同项目的webservice调用
一般情况下webservice的调用都是在不同的项目间或者不同的语言中来使用的
如果是不同的语言调用webservice应用:
客户端如果是其他语言,则通过得到服务端生成的wsdl或者或者wsdl文件的地址做相应的操作得到本语言具体的客户端实现类来调用服务端对外开放的方法
如果是不同项目间的调用(java语言为例)在myeclipse下新建一个web service Client选择xfire下一步后选择wsdl的地址: http://localhost:9099/HelloXfire/services/HelloXfire?wsdl
完成后会自动生成相应的客户端类。
在HelloXfireClient类中调取服务端对外开放的接口方法获得相应数据.具体代码如下
-----------------------------------------------------------------------------------------------
package com.test.service; import java.net.MalformedURLException; import java.util.Collection; import java.util.HashMap; import javax.xml.namespace.QName; import org.codehaus.xfire.XFireRuntimeException; import org.codehaus.xfire.aegis.AegisBindingProvider; import org.codehaus.xfire.annotations.AnnotationServiceFactory; import org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.jaxb2.JaxbTypeRegistry; import org.codehaus.xfire.service.Endpoint; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.soap.AbstractSoapBinding; import org.codehaus.xfire.transport.TransportManager; public class HelloXfireClient { private static XFireProxyFactory proxyFactory = new XFireProxyFactory(); private HashMap endpoints = new HashMap(); private Service service0; public HelloXfireClient() { create0(); Endpoint HelloXfirePortTypeLocalEndpointEP = service0 .addEndpoint(new QName("http://service.test.com", "HelloXfirePortTypeLocalEndpoint"), new QName("http://service.test.com", "HelloXfirePortTypeLocalBinding"), "xfire.local://HelloXfire"); endpoints.put(new QName("http://service.test.com", "HelloXfirePortTypeLocalEndpoint"), HelloXfirePortTypeLocalEndpointEP); Endpoint HelloXfireHttpPortEP = service0 .addEndpoint(new QName("http://service.test.com", "HelloXfireHttpPort"), new QName("http://service.test.com", "HelloXfireHttpBinding"), "http://localhost:9099/HelloXfire/services/HelloXfire"); endpoints.put(new QName("http://service.test.com", "HelloXfireHttpPort"), HelloXfireHttpPortEP); } public Object getEndpoint(Endpoint endpoint) { try { return proxyFactory.create((endpoint).getBinding(), (endpoint).getUrl()); } catch (MalformedURLException e) { throw new XFireRuntimeException("Invalid URL", e); } } public Object getEndpoint(QName name) { Endpoint endpoint = ((Endpoint) endpoints.get((name))); if ((endpoint) == null) { throw new IllegalStateException("No such endpoint!"); } return getEndpoint((endpoint)); } public Collection getEndpoints() { return endpoints.values(); } private void create0() { TransportManager tm = (org.codehaus.xfire.XFireFactory.newInstance().getXFire().getTransportManager()); HashMap props = new HashMap(); props.put("annotations.allow.interface", true); AnnotationServiceFactory asf = new AnnotationServiceFactory(new Jsr181WebAnnotations(), tm, new AegisBindingProvider(new JaxbTypeRegistry())); asf.setBindingCreationEnabled(false); service0 = asf.create((com.test.service.HelloXfirePortType.class), props); { AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0, new QName("http://service.test.com", "HelloXfirePortTypeLocalBinding"), "urn:xfire:transport:local"); } { AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0, new QName("http://service.test.com", "HelloXfireHttpBinding"), "http://schemas.xmlsoap.org/soap/http"); } } public HelloXfirePortType getHelloXfirePortTypeLocalEndpoint() { return ((HelloXfirePortType)(this).getEndpoint(new QName("http://service.test.com", "HelloXfirePortTypeLocalEndpoint"))); } public HelloXfirePortType getHelloXfirePortTypeLocalEndpoint(String url) { HelloXfirePortType var = getHelloXfirePortTypeLocalEndpoint(); org.codehaus.xfire.client.Client.getInstance(var).setUrl(url); return var; } public HelloXfirePortType getHelloXfireHttpPort() { return ((HelloXfirePortType)(this).getEndpoint(new QName("http://service.test.com", "HelloXfireHttpPort"))); } public HelloXfirePortType getHelloXfireHttpPort(String url) { HelloXfirePortType var = getHelloXfireHttpPort(); org.codehaus.xfire.client.Client.getInstance(var).setUrl(url); return var; } public static void main(String[] args) { HelloXfireClient client = new HelloXfireClient(); //create a default service endpoint HelloXfirePortType service = client.getHelloXfireHttpPort(); String string= service.sayHello("hello"); System.out.println(string); //TODO: Add custom client code here // //service.yourServiceOperationHere(); System.out.println("test client completed"); System.exit(0); } }
如果能够成功运行并正确获得调用的方法返回的值说明webservice成功实现了
发表评论
-
eclipse
2012-01-19 10:19 979eclipse操作常识:eclipse进行项目开发时往往会遇 ... -
sigar使用:在web中应用sigar取得系统信息
2012-01-18 14:19 3334[转] import java.io.IOExce ... -
解决struts1.x表单重复提交问题
2012-01-17 10:40 2374每次填写完表单后单击提交后,struts中action执行相关 ... -
在树初始化时,加一个load图片
2012-01-16 09:45 1860做个浮动图层放在 zTree 上面, 然后利用 asnycS ... -
利用JS做到隐藏div和显示div
2012-01-16 09:05 108791div的visibility可以控制div的显示和隐藏,但是隐 ... -
虚拟机使用NAT不能上网
2012-01-05 08:41 3019虚拟机上网问题 许多虚拟机的初学者,都会询问这样一个问题:在 ... -
[转]用eclipse pdt 配置php开发,调试环境
2011-12-30 16:15 1532本文档是windows操作系统下php开发环境的配置。 1 ... -
RESIN 连接池数据库密码加密方法
2011-12-28 15:34 1638[转] Resin 连接池写在resin.conf里 ... -
好的技术博客
2011-12-28 15:18 881http://www.findjar.com/index.x ... -
利用jawin完成调用window中dll的调用
2011-12-28 15:14 2130[转] Java/Win32互动项目( Jawin)是 ... -
WebService的测试
2011-12-20 09:26 1489在浏览器中输入地址:http://localhost ... -
我的SQLSERVER 分页存储过程
2011-12-13 08:54 3210/** * procedure name : kk_f ... -
Myeclipse中将Web项目发布时重命名
2011-12-12 09:58 1165选中项目->反键->Properties ... -
Sql xtype 类型
2011-11-30 09:39 1257sysobjects 表 在数据库内创建的每个对象(约束、默认 ... -
使用SQL语句清空数据库所有表的数据[转]
2011-11-30 09:14 806近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的 ... -
js实现焦点进入文本框内关闭输入法
2011-11-30 08:56 3569要用到的东西: imeMode:xxx 有四个参数 act ... -
数据库设计三大范式应用实例剖析[转]
2011-11-29 17:25 802数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数 ... -
Ajax.Request方法
2011-11-29 13:47 1286Prototype 的 Ajax.Request 对象绑定了浏 ... -
临时表(Template Table)[转]
2011-11-25 17:41 16061、MS SQLSERVER SQL ... -
测试sql语句性能
2011-11-25 17:22 1054[size=medium]有时候我们经常为我们的sql语句执行 ...
相关推荐
java调用webservice接口案例,精简,service调用webservice接口案例;不用生成一堆代码,逻辑清晰
在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...
2. **创建WebService客户端**:使用WSDL(Web Service Description Language)文件,你可以自动生成Java客户端代码。Eclipse和MyEclipse都有工具可以做到这一点。WSDL文件描述了Web服务的接口、操作、消息格式等。 ...
Java调用C#的WebService是跨平台间通信的一种常见方式,尤其在企业级应用中,可能需要集成不同语言开发的服务。本示例介绍如何在Java环境中利用Xfire库来调用C#编写的WebService服务。 首先,理解WebService的核心...
【标题】"myeclipse下java调用webservice项目例子"涉及到的是在Java开发环境中,使用MyEclipse IDE来创建并调用Web服务的过程。MyEclipse是Eclipse的一个扩展,特别适合Java企业级应用的开发,包括Web服务。本项目...
下面,我们将通过一个简单的例子,展示如何使用 XFire 调用 webService 接口。 服务端(为客户端提供 webservice 接口) 在服务端,我们需要创建一个 web 服务项目,使用 XFire 框架,并配置好 web.xml 文件。然后...
【Java调用WebService客户端详解】 在Java开发中,有时我们需要从客户端调用远程的WebService服务以获取或传递数据。本文将详细介绍如何使用Java进行WebService客户端的调用,并提供HttpGet、HttpPost、HttpSoap...
本文将深入探讨如何使用Java调用WebService接口,以实例分析有参方法Add的使用技巧。 首先,我们需要了解WebService的基础知识。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的Web应用程序,它能够通过HTTP...
Java调用WebService是一种常见的在不同系统间进行数据交互的方式,主要基于XML和SOAP(Simple Object Access Protocol)协议。本说明将详细阐述如何在Java环境中,特别是使用Eclipse IDE,来调用并操作WebService。 ...
用camel-cxf调用webservice和发布一个webservice接口例子,首先启动QueryServiceMain主函数启动webservice接口,然后启动测试类TestWebservice。例子主要是实现java代码实现camel调用webservice接口
总的来说,Java调用Web Service服务是一个相对简单的过程,主要依赖于JAX-WS提供的工具和接口。通过理解这些基本概念和技术,你可以轻松地将各种Web Service集成到你的Java应用程序中,实现跨系统的数据共享和业务...
4. **SOAP绑定**:处理SOAP消息的编码和解码,将Java方法调用与SOAP消息交换关联起来。 5. **部署**:将服务部署到应用服务器,使得客户端可以通过网络访问。 二、创建Java Web Service步骤 创建一个Java Web服务...
在这个特定的例子中,"java_Webservice调研"可能包含对Java Web服务的调查研究,包括服务的功能、使用场景、性能分析等。它也可能包含了如何在VC2005中实际调用这些服务的示例代码或教程。在实际应用中,开发者应当...
【VB6调用WebService】是将经典的Visual Basic 6(VB6)编程环境与现代Web服务集成的技术。VB6虽然是一个较旧的开发工具,但它仍然在某些领域中被广泛使用,而调用WebService的能力使其能连接到更广泛的网络资源和...
2. **Java调用Web服务的方式** - **JAX-WS(Java API for XML Web Services)**:是Java平台的标准,用于创建和消费Web服务。它提供了从Java类到WSDL的自动绑定,简化了开发过程。 - **Axis2**:Apache基金会的一...
在Java中,使用JAX-WS库可以方便地调用SOAP Web服务。以下是一个简单的例子: ```java // 创建服务端点接口的引用 HelloService service = new HelloService(); HelloPortType port = service.getHelloPort(); // ...
Java调用WebService接口是开发中常见的一种跨平台通信方式,主要通过SOAP(Simple Object Access Protocol)协议进行数据交换。在本篇文章中,我们将探讨如何在Java中调用WebService接口,特别是基于WSDL(Web ...
总之,Java调用Web Service接口主要涉及理解Web Service的基础概念,掌握WSDL、SOAP和UDDI,以及选择合适的Java工具和框架。在实际开发中,应根据项目需求和团队熟悉的技术栈选择最合适的方案。通过以上步骤,开发者...
### Java访问C#开发的Webservice详解 #### 一、引言 在现代软件开发过程中,尤其是对于大型项目而言,采用分布式系统架构已经成为一种常态。分布式应用能够将复杂的业务逻辑分解并部署到不同的服务器上,从而提高...
本实例将重点讲解如何利用AJAX进行异步调用WebService,为用户提供无缝的交互体验。 一、AJAX基础 1. AJAX的核心是XMLHttpRequest对象,它提供了与服务器通信的能力,可以在后台与服务器进行数据交换。 2. AJAX通过...