内部系统之间数据传输使用RMI方式比较方便,但外部系统之间由于系统兼容性原因,使用WebService是较流行的方式。这两天特意整理了一下WebService发布、调用的方式,把实例贴出来。
1.服务端配置:使用CXF + Spring方式。
配置web.xml,添加cxfservler,
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
原因是webservice服务是运行在web容器中的,接收外部的http请求。所以配置一个servler,这里由cxf进行包装。
2.编写具体发布服务逻辑,并使用Spring进行配置
@WebService
public interface ISpeakService {
public String speak(String userName, Date date);
@WebService(endpointInterface = "com.sfexpress.ISpeakService")
public class SpeakServiceImpl implements ISpeakService {
public String speak(String userName, Date date){
return "Hello " + userName + ", today is " + date.toString();
}
}
}
配置spring beans.xml文件,发布服务端的逻辑,并配置外接访问地址为:/SpeakService
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:endpoint id="speakService"
implementor="com.sfexpress.SpeakServiceImpl"
address="/SpeakService" />
3.导出服务端生成的wsdl文件,访问http://localhost:8180/SpeakService?wsdl,把网页内容保存成speak.wsdl文件。wsdl是接口描述文件,通过XML进行定义,客户端需要把wsdl文件提前解析为java文件,这样在客户端就可以像rmi方式一样调用。
转换工具使用apache-cxf-2.6.16, 具体命令:wsdl2java -p com -d D:\data\sss d:\data\sss\speak.wsdl 取出生成的ISpeakService.java类。
4.新建java工程并创建一个客户端调用主类。
拷贝刚才生成的ISpeakService.java至客户端工程。
主类中按下面方式调用即可。
public static void main(String[] args) throws DatatypeConfigurationException {
// 创建WebService客户端代理工厂
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// 注册WebService接口
factory.setServiceClass(ISpeakService.class);
// 设置WebService地址
factory.setAddress("http://localhost:8180/SpeakService?wsdl");
XMLGregorianCalendar date = DatatypeFactory.newInstance().newXMLGregorianCalendar();
date.setYear(2014);
date.setMonth(11);
date.setDay(12);
ISpeakService greetingService = (ISpeakService) factory.create();
System.out.println("message context is:"
+ greetingService.speak("beck", date));
}
分享到:
相关推荐
springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口
在服务端 对外开放接口服务,然后在客户端 调用服务端的方法, 实现客户端(一个javaweb项目)对服务端(javaweb项目)方法的调用, 实际上就是发送和接收消息,实现两个系统间消息的传递 jar包都在lib项目里 具体...
VS2005 VC开发的一个WebService例子 两个工程 一个详细文档 代码编译通过 运行正确 VC ATL创建的一个服务端只实现Add函数 VC 基于对话框的MFC程序调用创建的WebService 文档详细说明到每一步
基于AXIS1.4实现的webservice客户端和服务端的搭建例子。里面包括完整的服务端demo和客户端demo并附有文档教程
webservice的客户端和服务端实例,引用Apache的官方源码
基于C#开发的webservice服务端和调用端,比较全.语言比较易懂.
这个工程详细的介绍了webService服务客户端如何调用简单和复杂的webService,其中就包括传递的参数是对象类型,返回数据是数组类型,还有最简单的基本类型。压缩包里还配置说明,清晰的说明webService的整个过程,对...
开发工具VS2013,.NET4.5. 首先创建一个最基本的web service服务端,再创建一个客户端测试,详细源代码。
在JDK1.6版本以后,在<JAVA_HOME>/bin目录下有一个wsimport.exe工具,该工具可以根据wsdl文件自动生成webservice接口调用的java客户端代码,十分方便。而自己仅需要写一个测试类。 使用过程如下: 1. 获取...
服务端采用jdk原生态的生成,客户端为了不需要采用命令行生成采用了axis2的document方法,可调用,代码中既有客户端又有服务端,亲测可用
springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用
Java 调用webservice cxf客户端调用demo和服务端,包含jar包,服务端发布后直接用客户端调用
Webservice服务端的开发和客户端调用
1、webservice服务端可直接运行,并有本地测试客户端实例,也可直接运行。(已多次测试) 2、android上传照片客户端实例,为一个thread,...本客户端在上述webservice服务端可对应调用接口,可直接调用。(已多次测试)
貌似前面上传的少一个文件,请下载这个版本,请用myeclipse导入两个java项目,本人所用的是myeclipse6.0写的,应该跟版本没有关系,请将serviceclient里面配置文件路径更改,调用webservice的返回是字符串,可以在...
使用jax-ws方式实现webservice的服务端及客户端调用的源码,和说明闻文档
NULL 博文链接:https://leon1509.iteye.com/blog/1541387
java客户端程序调用webservice接口
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然!跨操作系统平台则是指服务端程序和...