CXF框架实现WebService

本文介绍如何使用 Apache CXF 构建 WebService 服务端及客户端。服务端通过定义接口与实现类来暴露服务,客户端则通过生成的 WSDL 文件调用服务。文章详细展示了 Maven 工程配置、接口定义、服务实现与调用流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apache CXF介绍:http://cxf.apache.org/docs/index.html


一、使用CXF开发Web Service服务端:

每个Web Service组件需要2个部分:接口和实现类:
1、新建maven工程cxfWebService
工程目录结构:
这是pom.xml文件的内容
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.webService</groupId>
  <artifactId>cxfWebService</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>cxfWebService</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <cxf.version>2.2.3</cxf.version>
  </properties>

 
<dependencies>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>${cxf.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>${cxf.version}</version>
    </dependency>
        <!-- Jetty is needed if you're are not using the CXFServlet -->
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version>${cxf.version}</version>
    </dependency>
</dependencies>
</project>
   2、开发一个webservice业务接口,方法使用@WebService修饰。
@WebService 
public interface HelloWorld {
	String sayHi(String name);  
}

3、写一个这个方法的实现类,方法也需要使用@WebService修饰,并指定其中的参数中,如下指定了所需要实现的接口、并指定服务名称。
package com.weir;

import java.util.Date;

import javax.jws.WebService;
@WebService(endpointInterface="com.weir.HelloWorld",serviceName="HelloWorldWs")//指定webservice所实现的接口以及服务名称 
public class HelloWorldImpl implements HelloWorld{

	public String sayHi(String name) {
		// TODO Auto-generated method stub
		return name+"您好!现在时间是:"+new Date();  
	}

}
4、暴露Web Service的函数,运行函数暴露Web Service:
package com.weir;

import javax.xml.ws.Endpoint;

public class ServiceMain {
    public static void main(String args[]){  
		HelloWorld hw = new HelloWorldImpl();
		// 调用Endpoint的publish方法发布Web Service
		String address="http://localhost:8080/helloWorldService";
		Endpoint.publish(address, hw);
		System.out.println("Web Service暴露成功!"); 
    }
}
打开浏览器输入http://localhost:8080/helloWorldService?wsdl,暴露服务成功的情况下可以看到wsdl描述文件

二、开发Web Service客户端:

1、新建java project cxfWebServiceClient
2、使用eclipse的new Web Service Client生成客户端代码
选择刚才的wsdl地址
选择生成的代码位置,我们这边选择新建的工程cxfWebServiceClient
可以看到,我们的工程底下多了这几个文件
3、在客户端写测试代码
package com.weir.test;

import java.rmi.RemoteException;

import com.weir.HelloWorldProxy;

public class TestService {
	public static void main(String args[]){
		HelloWorldProxy helloWorldProxy = new HelloWorldProxy();
		try {
			String s = helloWorldProxy.sayHi("weir");
			System.out.println("调用webservice:"+s);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
运行main函数,成功调用WebService


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值