- 浏览: 458032 次
- 性别:
- 来自: 潘多拉
文章分类
最新评论
-
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 943eclipse操作常识:eclipse进行项目开发时往往会遇 ... -
sigar使用:在web中应用sigar取得系统信息
2012-01-18 14:19 3256[转] import java.io.IOExce ... -
解决struts1.x表单重复提交问题
2012-01-17 10:40 2339每次填写完表单后单击提交后,struts中action执行相关 ... -
在树初始化时,加一个load图片
2012-01-16 09:45 1823做个浮动图层放在 zTree 上面, 然后利用 asnycS ... -
利用JS做到隐藏div和显示div
2012-01-16 09:05 108725div的visibility可以控制div的显示和隐藏,但是隐 ... -
虚拟机使用NAT不能上网
2012-01-05 08:41 2980虚拟机上网问题 许多虚拟机的初学者,都会询问这样一个问题:在 ... -
[转]用eclipse pdt 配置php开发,调试环境
2011-12-30 16:15 1479本文档是windows操作系统下php开发环境的配置。 1 ... -
RESIN 连接池数据库密码加密方法
2011-12-28 15:34 1600[转] Resin 连接池写在resin.conf里 ... -
好的技术博客
2011-12-28 15:18 849http://www.findjar.com/index.x ... -
利用jawin完成调用window中dll的调用
2011-12-28 15:14 2085[转] Java/Win32互动项目( Jawin)是 ... -
WebService的测试
2011-12-20 09:26 1453在浏览器中输入地址:http://localhost ... -
我的SQLSERVER 分页存储过程
2011-12-13 08:54 3163/** * procedure name : kk_f ... -
Myeclipse中将Web项目发布时重命名
2011-12-12 09:58 1138选中项目->反键->Properties ... -
Sql xtype 类型
2011-11-30 09:39 1221sysobjects 表 在数据库内创建的每个对象(约束、默认 ... -
使用SQL语句清空数据库所有表的数据[转]
2011-11-30 09:14 774近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的 ... -
js实现焦点进入文本框内关闭输入法
2011-11-30 08:56 3541要用到的东西: imeMode:xxx 有四个参数 act ... -
数据库设计三大范式应用实例剖析[转]
2011-11-29 17:25 770数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数 ... -
Ajax.Request方法
2011-11-29 13:47 1255Prototype 的 Ajax.Request 对象绑定了浏 ... -
临时表(Template Table)[转]
2011-11-25 17:41 15651、MS SQLSERVER SQL ... -
测试sql语句性能
2011-11-25 17:22 1016[size=medium]有时候我们经常为我们的sql语句执行 ...
相关推荐
java调用webservice接口案例,精简,service调用webservice接口案例;不用生成一堆代码,逻辑清晰
java调用WebService的调用代码例子
在Java中使用Xfire调用C#的WebService例子
SOAP调用webservice例子,一个用SOAP调用webservice的例子
java用XFire调用webservice例子.docxjava用XFire调用webservice例子.docx
用camel-cxf调用webservice和发布一个webservice接口例子,首先启动QueryServiceMain主函数启动webservice接口,然后启动测试类TestWebservice。例子主要是实现java代码实现camel调用webservice接口
压缩包里包含了在myeclipse下的创建的webservice测试工程。里面有具体的客户端调用代码,以及需要的axis所有包。
Java调用发布的Webservice服务 代码简单,用起来方便,只需要一个架包即可 源码的例子是调用一个天气预报发布的服务
VC2005调用java的WebService的例子
java 调用webservice(sp)的例子
java用XFire开发调用webService例子知识.pdf
java写webservice 及调用webserice的例子
使用Java+Axis2调用Web Services 网络接口,代码中列举4个例子可以查看,有详细注释提供参考。
java调用webservice的例子,axis + ksoap2。 一个.java文件 + 引用的jar包。 在Android开发中使用时须另开子线程进行。
maven构建项目需要导入 <groupId>org.apache.axis2 <artifactId>axis2 <version>1.6.2 <groupId>org.apache.axis2 <artifactId>axis2-adb ...如不是maven则需要手工导入包
vb6也能调用.net或Java开发的WebService,经调试可行!
里面还有三个pdf文件,是介绍webservice是什么以及如何使用webservice的方法和例子。
webservice接口调用实例,经个人验证可用
网上的调用例子太多了,有的要用cmd来解析webserive,有的没有包,有的代码报错。学习及测试花了4天,终于完成了。 1直接把项目放到 myeclipse的工作区间加载就行。然后將axis-1_4包下的lib文件夹里的包 都加載到...
一个java编写基于Axis1.4的webservice接口,包括服务端接口和调用端接口。