WebService学习笔记---CXF入门

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、准备

软件环境:

JDK1.8, Eclipse JEE 4.4, Maven-3.2.5, Spring-4, CXF-3.1.5

二、创建项目

  1. 新建一个Maven项目,在pom.xml里添加spring依赖
<dependencyManagement><dependencies><dependency><groupId>io.spring.platform</groupId><artifactId>platform-bom</artifactId><version>1.1.3.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
  1. 添加cxf依赖,或是从apache cxf官网下载已编译的文件,通过BuildPath添加
<dependency><groupId>org.apache.cxf</groupId><artifactId>apache-cxf</artifactId><version>3.1.5</version><type>zip</type> //因为Maven远程仓库只有zip,tar.gz等压缩包,没有对应jar包,所有要指定type
</dependency>

用过BuildPath添加 右键项目---》 Build Path---》 Configure Build Path---》 Add Library---》 在对话框中选择CXF Runtime---》 如果是第一自使用CXF,则需要配置CXF,点击Configure installed runtimes,新增一个CXF---》 添加成功,在Libraries里会多出一个Apache CXF Libary[3.1.5]

三、编写类文件

  1. 新建一个接口类
@WebService
public interface ICXFService{@WebMethodpublic String sayHello(@WebParam(name="username") String username);
}

说明: @WebService:标记表示该接口是一个WebService服务。 @WebMethod:标记表示WebService中的方法。 @WebParam(name="paramName")表示方法中的参数,name属性限制了参数的名称,若没有指定该属性,参数将会被重命名。

  1. 新建一个实现类
public class CXFService implements ICXFService{public String sayHello(String username){return "Hello, "+username;    }
}
  1. 在WEB-INF下新建cxf-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -->
<!-- START SNIPPET: beans -->
<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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><import resource="classpath:META-INF/cxf/cxf.xml" /><jaxws:endpoint id="sayHello" implementor="com.demo.cxfws.service.impl.CXFServiceImpl" address="/sayHello" />
</beans>
<!-- END SNIPPET: beans -->
  1. 在web.xml中添加cxf配置信息
<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><session-config><session-timeout>60</session-timeout>
</session-config>
  1. 在src\main\resources下新建client-beans.xml
<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/jaxwshttp://cxf.apache.org/schema/jaxws.xsd">
<bean id="client" class="com.demo.cxfws.service.ICXFService" factory-bean="clientFactory" factory-method="create" /><bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"><property name="serviceClass" value="com.demo.cxfws.service.ICXFService" /><property name="address" value="http://localhost:8080/cxfws/sayHello" /></bean>
</beans>
  1. 编写测试
public class TestCXF {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"client-beans.xml"});ICXFService service = (ICXFService) context.getBean("client");String str = service.sayHello("zhangsan");System.out.println(str);}
}

四、遇到的问题

Eclipse在创建Maven的时候会创建index.jsp文件。而pom.xml文件里只有junit依赖,所有还需手动添加servlet-api

<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version>
</dependency>

还有一个问题如下Eclipse JAX-RS (REST Web Services) 2.0 requires Java 1.6 or newer

如果遇到了,在pom.xml添加:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins>
</build>

如果还不行,右键项目,点击Properties,在Java Compiler里选择Compiler Level为1.8

项目报错提示没有src\main\java,src\test\resources,src\test\java等文件夹

解决办法:进入Java Build Path下的Source选卡,移除打小红叉的文件夹,然后自己右键项目新建Source Folder

转载于:https://my.oschina.net/yuewawa/blog/649150

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/294762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提供程序未返回 ProviderManifestToken 字符串

我这是在学习MVC3.0时出现的错误&#xff0c;其实呢这个问题主要是因为web.config配置文件访问数据库的时候连接出错造成的 <connectionStrings> <add name"ApplicationServices" connectionString"data source.\SQLEXPRESS;Integrated Sec…

.NET 6新特性试用 | ArgumentNullException卫语句

前言在前面的文章中&#xff08;《可空引用类型》&#xff09;&#xff0c;我们介绍过编译器会帮我们检查空引用&#xff0c;但是仅仅是警告。最好的方式还是在运行时用卫语句进行检查&#xff1a;private void Test(WeatherForecast weatherForecast) {if (weatherForecast n…

JSP之EL表达式详细介绍

一、JSP EL语言定义 E L&#xff08;Expression Language&#xff09; 目的&#xff1a;为了使 JSP写起来更加简单。 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言&#xff0c;它提供了在 JSP 中简化表达式的方法。它是一种简单的语言&#xff0c;基于可用的命名空…

那一年,爱因斯坦输得很惨很惨,被十几个诺奖得主怼了一遍后,退出了群聊……...

全世界只有3.14 % 的人关注了爆炸吧知识科学家撕逼原来这么刺激“遇事不决&#xff0c;量子力学”&#xff0c;作为长期在民间被调侃的学科&#xff0c;量子力学的名声不小&#xff0c;但它究竟有多重要&#xff0c;又是怎么来的&#xff0c;却少有人了解。而说到量子力学&…

带有帐号密码验证的apche服务器文件下载

2019独角兽企业重金招聘Python工程师标准>>> 使用python访问 #!/usr/bin/python #fileencoding:utf-8def testUrl():import urllib2import sysimport reimport base64from urlparse import urlparse#下载路径theurl http://ip/release/LHJH/Server/er_service.waru…

00截断上传绕过_小谈截断上传漏洞

0x00 前言小菜今天在测试网站的时候&#xff0c;发现存在上传点&#xff0c;于是尝试各种姿势&#xff0c;环境为iis7.5&#xff0c;于是乎来一个解析漏洞&#xff0c;发现并不可以&#xff0c;最终百度乎&#xff0c;发现上传有很多种利用方法&#xff0c;所以小菜就去学习了一…

使用keytool查看Android APK签名

文章目录 一、找到JDK位置二、使用方法2.1 打开windows命令行工具2.2 查看签名 三、如何给APK做系统签名呢? 一、找到JDK位置 安卓AS之后&#xff0c;可选择继续安装JDK&#xff0c;如本文使用amazon版本默认位置&#xff1a;C:\Users\66176.jdks\corretto-1.8.0_342可通过自…

exchange服务器维护模式命令,Exchange服务器系列课程之七--维护邮件服务器(二)

继续上次的讨论&#xff0c;上次讨论了邮件服务器的一些监控和排错手段&#xff0c;今天我们继续来讨论邮件服务器的维护。今天主要来讨论一下邮件服务器的备份与还原。为什么要备份我就不多说了&#xff0c;备份的方法也非常简单&#xff0c;通过备份工具直接备份就可以了。这…

任务管理器在右下角的图标不显示

任务管理器在右下角的图标不显示 2012年11月7日18:22:23 症状如下图所示&#xff0c;不管是打开任务管理器还是最小化它&#xff0c;右下角均没有它的图标。 网上查到的说法均不靠谱。后来我CtrlAltDel调出任务管理器&#xff0c;找到任务管理器对应进程“taskmgr.exe”&#x…

总结 一下UML 类图的关系

1&#xff0c;实线三角 表示 泛化 是一种继承关系,它指定了子类如何特化父类的所有特征和行为 2&#xff0c;虚线三角 表示 实现 是一种类与接口的关系&#xff0c;表示类是接口所有特征和行为的实现 3&#xff0c;空心菱形 表示 聚合 是整体与部分的关系 4&#xff0c; 实心…

MAUI中构建跨平台原生控件实现

简介MAUI中使用Handler体系来处理不同平台的原生控件实现, 即对应的, 如果我们想要创建控件, 只需要创建基于不同平台的Handler即可。那么下面主要教大家如何通过创建Handler(事件处理程序)来构建自己的控件。开始下面, 将通过创建一个进度条控件案例, 来演示如何在MAUI项目中创…

Android之android studio如何获取证书指纹 (SHA1)

android studio如何获取证书指纹 (SHA1) 为什么要用SHA1 我们做百度地图或是高德地图的时候。注册app信息要求填写数字签名 我们可以通过外部命令行获取&#xff0c;也可以通过eclipse获取 &#xff0c;现在主流是android studio下面是通过Android studio获取的方法 第一步&am…

排位重要还是媳妇儿重要?

1 刚打到的车&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 还是排位要紧&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 大叔为求省事在家自行焚烧床垫▼4 好家伙&#xff0c;这回答直呼&#xff1a;想不到吧&#xff01;&#xff08;素材来源网络&…

新天龙八部服务器维护了吗,《新天龙八部》3月11日全服更新维护公告

亲爱的玩家&#xff0c;大家好&#xff1a;为保证游戏运行的稳定性&#xff0c;提升整体服务质量&#xff0c;《新天龙八部》游戏全部服务器(除测试服务器外)将于2021年3月11日7&#xff1a;00—9&#xff1a;00进行更新维护&#xff0c;维护后版本号升级为3.67.9108。如果在预…

锁屏快捷键_全面屏 iPhone 锁屏快捷键美化,让你的 iPhone 更特别

苹果从iPhone X以后的手机都是全面屏(即刘海屏)&#xff0c;在你的全面屏手机锁屏状态在&#xff0c;屏幕下方有两个快捷按钮&#xff0c;左边的是「手电筒」&#xff0c;右边的是「相机」&#xff0c;在锁屏状态下这两个功能是圆形的&#xff0c;今天堂堂分享一个无需越狱即可…

URLEncode编码和URLDecode解码

1 String text1 java.net.URLEncoder.encode("中国" ,"utf-8" ); 2 String text2 java.net.URLDecoder.decode(text1,"utf-8"); (1).URLEncoder需要注意&#xff1a;这个方法编码了符号&#xff0c;“\” ,“&”,“”,和“&#xff1…

MAUI 移植 Xamarin.Forms 自定义渲染器

简介众所周知, .NET MAUI使用的是Handler处理程序, 而Xamarin使用的则是Render渲染器模式。尽管MAUI中使用了新的渲染模式, 但是仍然Xamarin中的支持Render渲染器, 这意味着如果你的项目是从Xamarin移植到MAUI当中, 大部分代码能够可以重用, 本篇文章介绍如何将Xamarin 渲染器(…

当下流行的分布式文件系统大阅兵

本文对目前数种分布式文件系统进行简单的介绍。当前比较流行的分布式文件系统包括&#xff1a;Lustre、Hadoop、MogileFS、FreeNAS、FastDFS、NFS、OpenAFS、MooseFS、pNFS、以及GoogleFS。Lustre&#xff08;www.lustre.org&#xff09;lustre是一个大规模的、安全可靠的&…

栈和队列之LinekedList(双端队列)

介绍: ( deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。 双端队列是限定插入和删除操作在表的两端进行的线性表。这两端分别称做端点1和端点2(如下图(a)所示)。也可像栈一样,…

python全局变量操作详解_Python全局变量操作详解

接触Python时间不长&#xff0c;对有些知识点&#xff0c;掌握的不是很扎实&#xff0c;我个人比较崇尚不管学习什么东西&#xff0c;首先一定回去把基础打的非常扎实了&#xff0c;再往高处走。今天遇到了Python中的全局变量的相关操作&#xff0c;遇到了问题&#xff0c;所以…