分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

使用CXF开发WebService服务器端接口

发布时间:2023-09-06 02:21责任编辑:顾先生关键词:Web

CXF作为java领域主流的WebService实现框架,Java程序员有必要掌握它。

CXF主页:http://cxf.apache.org/

简介:百度百科

今天的话,主要是用CXF来开发下WebService服务器端接口,明天写下开发客户端接口;

这里用Maven。

首先建一个Maven的j2se项目;

项目的jre用1.8,因为1.8有webservice的默认实现。不要用1.5 不然下面你用我的代码会有问题,用1.5的话,还需要另外加jar包,这里为了大家省事,要换成1.8;

根据规范,我们先建一个接口类:HelloWorld

package com.wishwzp.webservice;import javax.jws.WebService;@WebServicepublic interface HelloWorld { ???public String say(String str);}

再建一个具体的实现类:HelloWorldImpl

package com.wishwzp.webservice.impl;import javax.jws.WebService;import com.wishwzp.webservice.HelloWorld;@WebServicepublic class HelloWorldImpl implements HelloWorld{ ???public String say(String str) { ???????return "hello" + str; ???}}

最后建一个发布服务的主类:Server

package com.wishwzp.webservice;import javax.xml.ws.Endpoint;import com.wishwzp.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.0.110/helloWorld"; ?????????Endpoint.publish(address, implementor); ?// JDK实现 ??暴露webservice接口 ???????System.out.println("web service started"); ?????}}

这里的Endpoint是Jdk自身实现的WebService。所以到这里我们不需要用到CXF的任何东西。

这里的address,写上自己的本机IP

我们运行下Server类:

运行效果如下:

我们在浏览器里访问:http://192.168.0.110/helloWorld?wsdl

效果:

说明已经成功调用了webservice接口;

这里的wsdl 是 Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。WSDL是Web Service的描述语言,用于描述Web Service的服务,接口绑定等,为用户提供详细的接口说明书。

请求后得到的是一个xml规范文档。是一套规范,后面会具体介绍,任何语言平台技术都可以解析。

下面我们介绍使用CXF来实现webservice接口:

我们先在pom.xml中加入:

<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>

这里要额外加入jetty,作为webservice发布的服务器。jetty是一个内嵌的web服务器;

我们把Server改下。换成CXF实现:

package com.wishwzp.webservice;import javax.xml.ws.Endpoint;import org.apache.cxf.jaxws.JaxWsServerFactoryBean;import com.wishwzp.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.0.110/helloWorld"; ?????????//Endpoint.publish(address, implementor); ?// JDK实现 ??暴露webservice接口 ???????JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); ???????factoryBean.setAddress(address); // 设置暴露地址 ???????factoryBean.setServiceClass(HelloWorld.class); // 接口类 ???????factoryBean.setServiceBean(implementor); // 设置实现类 ???????factoryBean.create(); ?????????????System.out.println("web service started"); ?????????System.out.println("web service started"); ?????}}

运行效果和刚才一样,这里就不再重复;

使用CXF开发WebService服务器端接口

原文地址:https://www.cnblogs.com/wishwzp/p/9910544.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved