Web Service (四) 手动发布Web Service接口-CXF与Spring集成

当我们发布完Web Service接口之后有两种方式可以调用Web service服务,一种是通过动态客户端方式,另一种是引用服务端的接口,引用服务端接口的方式对于客户端同服务器端耦合比较大,而使用WSDL的方式客户端不知道服务端的存在就可以调用服务器的方法。

下面是项目的结构图:

1.Web Service发布项目

2.编写服务端接口类以及实现类,如下,同上一篇自动发布接口,多了一个注解@WebService

package com.test.webservice;

import javax.jws.WebService;

@WebService
public interface IHelloWorld {
	public String sayHello(User user);
	public String sayHello1();
}
package com.test.webservice;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(endpointInterface="com.test.webservice.IHelloWorld",serviceName="helloService123")
public class HelloWorldImpl implements IHelloWorld {

	@Override
	public String sayHello(User user) {
		System.out.println("开始调用Web Service method:sayHello()");
		return user.getUsername()+"lilongsheng";
	}

	@Override
	@WebMethod
	public String sayHello1() {
		System.out.println("开始调用Web Service method:sayHello1()");
		return "lilongsheng1";
	}

}

在实现类上面还可以加上SOAP注解,如

@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)

表示Web Service方法传递数据的类型、编码等设置。

参考:http://dlc-cdn.sun.com/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/javax/jws/soap/SOAPBinding.html

3.Spring配置文件配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jaxws="http://cxf.apache.org/jaxws"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                       http://www.springframework.org/schema/beans/spring-beans.xsd
                       http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

    <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="helloService456" implementor="com.test.webservice.HelloWorldImpl" address="/helloService789"/>

</beans>

4.客户端测试代码

package com.test.webservice;

//import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

public class testClient {
	public static void main(String[] args) {
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
        //创建客户端
        Client client = dcf.createClient("http://192.168.24.82:8080/Web_Service_Spring/ws/helloService789?wsdl");
        Object[] objects;
        try {
        	User user=new User();
        	user.setUsername("longsheng");
            objects = client.invoke("sayHello",user);
            //输出调用结果
            System.out.println(objects[0].toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上面传参为传实体,实体需要实现序列化接口才能先通过网络传输。Web service在系统间以及系统交互上用的很广泛。

时间: 2024-12-28 00:41:19

Web Service (四) 手动发布Web Service接口-CXF与Spring集成的相关文章

带领技术小白入门——基于java的微信公众号开发(包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证)

微信公众号对于每个人来说都不陌生,但是许多人都不清楚是怎么开发的.身为技术小白的我,在闲暇之余研究了一下基于java的微信公众号开发.下面就是我的实现步骤,写的略显粗糙,希望大家多多提议! 一.申请服务器 1.我购买的是阿里云服务器,购买后要设置一下服务器密码,默认用户名是administrator,购买好后如下: 2.申请好后,copy一下此服务器的IP地址(公有),在本地ping一下看看是否可用,j键盘Win+R,输入cmd,输入ping+IP回车,如下即为成功: 二.配置服务器 1.下载远

spring(四) 手动整合web项目(SSH)

清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到. --WH 一.web项目中如何使用spring? 当tomcat启动时,就应该加载spring的配置文件,而不是每次都要手动使用new  ClassPathXmlApplicationContext来加载xml.所以,spring提供了一个ContextLoaderListener.有了它,tomcat启动时,就会加载配置文件. 导入spring.web....jar 1.web.xml中添加监听

struts2学习笔记之十四:使用注解配置Action(不是和spring集成使用)

Struts2支持使用注解配置Action,减少配置文件的配置 Struts2如果要支持注解配置Action,需要插件的支持,导入插件struts2-convention-plugin-2.1.8.1.jar 项目目录树: 1.导入struts2需要的基本包 2.修改web.xml,让struts2拦截Action <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="htt

Web Service (二) CXF自动发布Web Service(No Spring)

Web Service实现目前流行的框架主要有两种,cxf和axis这两个框架,下面是这两个框架的优缺点,我们这个项目中使用的是cxf这个框架,首先看一下没有集成spring的时候是怎么实现远程调用的. Axis与Cxf比较 在SOA领域,我们认为Web Service是SOA体系的构建单元(building block).这两个框架 都是从已有的开源项目发展起来的.这两个框架哪一个更好一些呢? 通过一个比较矩阵来比较Axis2和CXF变得有现实的意义.最主要的区别在以下几个方面: 1.CXF支

tomcat发布web service教程

这几天一直在准备找工作,自学了关于web service的一些基本的内容,也遇到了不少问题.现在就把我自己学到的知识和大家分享一下,由于是初学,所以有什么错误的地方请大家帮忙指正,感激不尽~~!! 1.下载jax-ws依赖包 因tomcat没有jax-ws所需的依赖环境,所以第一步先下载Jax-ws RI,即jax-ws reference implemantation, 地址:http://jax-ws.java.net. 2.安装jax-ws RI到tomcat服务器 先下载ant与tomc

谈谈EJB是如何发布Web Service的

定义 我们经常会听到,xx项目中用到了Web Service.那么,什么是Web Service呢? 首先让我们来了解一下Web Service.Web Service技术,就是能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间,无论它们所使用的语言.平台或内部协议是什么,都可以相互交换数据.Web Service是自描述.自包含的可用网络模块,可以执行具体的业务功能. Web service是一个平台独

新手Axis2 发布Web Service之路

由于公司的需求,需要写几个银行接口写模拟器(Mock Server),此次接口需要发布成一个WEB Service. 一开始,我以为只要负责写接口的业务层就行了,具体的框架或是环境搭建可以不用管.在与开发沟通完之后,因为本人对Web Service发布也不懂,完全属于没有概念的那种,开发愿意帮忙搭建一个. 在此期间呢,我开始写业务层,把3个接口的业务层花了一天的时间写完了,加了一些数据库查询的方法以及数据库新的字段以满足此次的业务需求. 开发也把WEB Service的一个小Demo做好了,利用

Web Service学习-CXF与Spring整合为JavaEE应用发布WebService(三)

CXF与Spring整合,分两个方面给大家介绍: 1,在传统ssh项目基础上添加Web Service 赋值CXF的jar包 在web.xml配置文件中导入CXF的核心控制器:CXFServlet 在Spring配置文件中导入CXF提供Schema,xml配置文件 在Spring配置文件中使用jaxws:endpoint元素来暴露Web Service 如果要添加拦截器,在jaxws:endpoint元素里添加 inInterceptors,outInterceptors子元素 2,远程调用We

在Myeclipse下使用CXF和Spring开发Web Service

[Web Service 李刚视频的学习笔记] 一.使用CXF开发Web Servive服务器端(新建Java Project名字叫WS_Server)//每个Web Service组件都需要2个部分,接口和实现类. 开发一个Web Service业务接口,该接口要用@WebService修饰  ,在src下新建com.hnu.cxf.ws包,包下新建一个叫HelloWorld的业务接口,Helloworld里的代码如下: 1 package com.hnu.cxf.ws; 2 3 import