WebService之CXF实现
程序员文章站
2022-07-15 15:28:17
...
1. WebService之CXF简介
CXF官网:http://cxf.apache.org/
2. 使用CXF开发应用
2.1) 使用CXF开发WebService服务器端接口
2.2) 使用CXF开发WebService客户端
CXF二进制包下载地址:http://cxf.apache.org/download.html
CXF官网:http://cxf.apache.org/
WebService一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互。 CXF是java领域主流的WebService实现框架。
2. 使用CXF开发应用
新建项目WS_Server New -> maven project -> Create a simple project Group Id:com.andrew.webservice Artfact Id:WS_Server Version:0.0.1-SNAPSHOT Packaging:jar
2.1) 使用CXF开发WebService服务器端接口
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.andrew.webservice</groupId> <artifactId>WS_Server</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.1.5</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.5</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.1.5</version> </dependency> </dependencies> </project> HelloWorld.java package com.andrew.webservice; import javax.jws.WebService; @WebService public interface HelloWorld { public String say(String str); } HelloWorldImpl.java package com.andrew.webservice.impl; import javax.jws.WebService; import com.andrew.webservice.HelloWorld; @WebService public class HelloWorldImpl implements HelloWorld { public String say(String str) { return "Hello " + str; } } Server.java package com.andrew.server; import javax.xml.ws.Endpoint; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import com.andrew.webservice.HelloWorld; import com.andrew.webservice.impl.HelloWorldImpl; public class Server { public static void main(String[] args) { System.out.println("web service start"); HelloWorld implementor = new HelloWorldImpl(); String address = "http://192.168.18.2/helloWorld"; // 1. 使用JDK实现 // Endpoint.publish(address, implementor); // 2. 使用CXF实现 JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); factoryBean.setAddress(address); // 设置暴露地址 factoryBean.setServiceClass(HelloWorld.class); // 接口类 factoryBean.setServiceBean(implementor); // 设置实现类 factoryBean.create(); System.out.println("web service started"); } } 执行结果: web service start log… web service started 页面调用: http://192.168.18.2/helloWorld?wsdl
wsdl是WebServicesDescriptionLanguage的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。 WSDL是WebService的描述语言,用于描述WebService的服务,接口绑定等,为用户提供详细的接口说明书。 wsdl:types就是定义了一些变量 wsdl:message相当于定义方法 wsdl:portType相当与调用与返回 客户端通过这个url请求,获得wsdl规范的xml文档片段信息,通过SOAP(SimpleObjectAccessProtocol)即简单对象访问协议,来实现客户端,服务器端消息交互,SOAP使用XML消息调用远程方法;交互的媒介就是xml,具体交互内容根据wsdl文档描述来。
2.2) 使用CXF开发WebService客户端
CXF二进制包下载地址:http://cxf.apache.org/download.html
使用wsdl2java工具 E:\Program Files\apache-cxf-3.1.5\bin\wadl2java 配置环境变量: Path:E:\Program Files\apache-cxf-3.1.5\bin
新建项目WS_Client New -> maven project -> Create a simple project Group Id:com.andrew.webservice Artfact Id:WS_Client Version:0.0.1-SNAPSHOT Packaging:jar 生成需要的webservice客户端代码 生成代码的路径E:\studyWEBSERVICECXF\WS_Client\src\main\java 1) cmd 2) cd E:\studyWEBSERVICECXF\WS_Client\src\main\java 3) wsdl2java http://192.168.18.2/helloWorld?wsdl 会在WS_Client下生成代码 4) 启动WS_Server
Client.java package com.andrew.client; import com.andrew.webservice.HelloWorld; import com.andrew.webservice.HelloWorldService; public class Client { public static void main(String[] args) { HelloWorldService service = new HelloWorldService(); HelloWorld helloWorld = service.getHelloWorldPort(); System.out.println(helloWorld.say("andrew")); } } Hello andrew
上一篇:
{"flag":"true"}
下一篇: 条件注释判断浏览器版本