apache-cxf 使用

在我的最后几个项目中,我使用了Web服务,在某些地方创建它们并在其他地方使用它们。 我认为标准任务(例如创建客户端,创建Web服务等)非常简单,如果遇到问题,有足够的资源。 但是对于Web服务而言,这是一项琐碎的任务,可能会花费大量时间,并且当您无法正确处理这些简单问题时,您会感到非常沮丧。

记录中

在其中一个项目中,我们使用Apache CXF创建了Web服务,并且一切正常。 只有一个问题Apache CXF使用java.util logger进行日志记录并用于打印各种日志。 我们的应用程序使用Log4J,因此使用Log4J进行Cxf和控制日志记录非常简单。

正如Apache CXF站点上提到的,配置记录器以使用Log4J是一项繁重的任务,这是页面上所说的:

将文件META-INF / cxf / org.apache.cxf.Logger添加到类路径,并确保它包含以下内容: org.apache.cxf.common.logging.Log4jLogger

很简单,您需要将文件添加到META-INF目录,即可完成。 我们有一个生成战争的Maven项目,因此我在为战争而生成的META-INF文件夹中创建了文件,即src / main / webapp / META-INF。

现在,该文件存在,但是日志记录仍然不受控制,CXF仍在使用Java logger。 我花了更多时间来弄清楚我做错了什么。 需要更多的努力才能意识到我已经错过了“在类路径中”的重要指导。 除WEB-INF之外生成的META-INF文件夹不在类路径中,战争的classes文件夹中需要META-INF文件夹。

回顾了这个问题之后,我错过了classpath部分是很愚蠢的,但是我也不明白为什么CXF的家伙为什么选择META-INF文件夹作为他们的配置文件。 META-INF在Java平台上可用于服务和类加载器。 当框架开始使用它进行配置时,它变得非常模棱两可,然后有多个文件夹可以玩,这会使事情变得很不清楚。

肥皂处理机

在另一个地方,我们有一个要求,我们需要拦截传入/传出的肥皂请求,然后对其进行处理。 Apache CXF提供了可用于完成此任务的拦截器 。 您可以有一些入站和出站,它们将按照要求进行操作。 但是我们使用的是Java附带的jaxws实现。 我们不打算将现有客户转移到CXF,因为我们有很多客户,所以我们花了很多时间才弄清楚如何使用jaxws完成此工作。

基本上,根据JAX-WS规范,您可以具有一些可以与客户端一起配置的SoapHandler 。 每当进行SOAP消息交换时,都将调用该处理程序。 在处理程序中,您可以确定这是入站消息还是出站消息,然后执行您的逻辑。 这些是配置处理程序所需的步骤:

创建一个扩展SoapHandler接口的类并实现handle消息方法:

class CustomHandler implements SOAPHandler<SOAPMessageContext>{// TODO: implement other methodspublic boolean handleMessage(SOAPMessageContext context) {// Check for message statusBoolean outboundProperty = (Boolean)context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);if (null == outboundProperty || !outboundProperty) {log.debug("not an outbound message");return true;}}
}

处理程序就像servlet过滤器。 他们是一个链条,被一个一个地称呼。 因此,我们需要创建一个XML文件,可以在其中配置所需的所有处理程序。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<javaee:handler-chainsxmlns:javaee="http://java.sun.com/xml/ns/javaee"xmlns:xsd="http://www.w3.org/2001/XMLSchema"><javaee:handler-chain><javaee:handler><javaee:handler-class>pkg.CustomHandler</javaee:handler-class></javaee:handler></javaee:handler-chain>
</javaee:handler-chains>

配置文件也必须位于类路径中,因为它将导入我们创建的Web服务客户端中。 完成此操作后,我们需要在Web服务客户端上启用此处理程序链。

@WebServiceClient(.....)
@HandlerChain(file="handlerFile.xml")
public class SampleServiceImpl extends Service{
}

处理程序概念来自jaxws规范,可在其所有实现(例如Metro,CXF等)上使用。

参考:在“到目前为止的道路……”中 ,我们的JCG合作伙伴 Rahul Sharma所 提供的Web服务知识 。 博客 。

相关文章 :
  • Apache CXF负载平衡和故障转移
  • Ruby,Python和Java中的Web服务
  • 具有Spring和Maven教程的JAX–WS
  • Spring 3 RESTful Web服务
  • Java教程和Android教程列表

翻译自: https://www.javacodegeeks.com/2011/11/web-service-learnings-with-apache-cxf.html

apache-cxf 使用

apache-cxf 使用_使用Apache CXF进行Web服务学习相关推荐

  1. 使用Apache CXF进行Web服务学习

    在我的最后几个项目中,我使用了Web服务,在某些地方创建它们并在其他地方使用它们. 我觉得创建客户端,创建Web服务等标准任务非常简单,如果遇到问题,有足够的资源. 但是对于Web服务,这是一项琐碎的 ...

  2. apache 反向代理_通过 Apache 与 Nginx 配置 AJP 配置反向代理

    ↑ 点击上面 "时代Java"关注我们, 关注新技术,学习新知识! 前言 目前,随着公有云的出现,一些大型的服务提供商将很多的基础服务以公有云的形式发布出来,而企业则可以使用这些基 ...

  3. rest web服务_在WildFly的REST Web服务中与Jackson的双向关系

    rest web服务 这是使用Jackson的REST Web服务中Java实体之间的双向关系的示例. 假设我们在两个实体Parent和Child之间存在双向关系. 使用MySQL工作台为这两个表生成 ...

  4. html css 前端实现消息提醒数_自学的福音,web前端学习全套视频教程+最新学习思维导图都在这里...

    1.产品经理.这些是负责策划应用程序的一群人.他们会想出很多新鲜的.奇怪的.甚至是不可能实现的应用.一般来说,产品经理都追求丰富的功能. 2.UI设计师.这些人负责应用程序的视觉设计和交互模拟. 3. ...

  5. springboot 获取web服务端口_我是这样使用SpringBoot(WEB服务)

    前面完成了API服务(虽然这个API没什么用).接下去来个WEB服务,在前面项目中加上个页面.这章目标是通过访问一个URL展示一个界面,从服务端传递参数值到界面中展示动态数据.这里还会涉及到webja ...

  6. cxf 服务端soap报文_使用Apache CXF开发SOAP Web服务

    cxf 服务端soap报文 在上一篇文章中,我逐步介绍了使用apache CXF开发简单的RESTFull服务的步骤. 在本文中,我将讨论使用CXF开发SOAP Web服务. 在继续前进之前,让我们先 ...

  7. 使用Apache CXF开发SOAP Web服务

    在上一篇文章中,我逐步介绍了使用apache CXF开发简单的RESTFull服务的步骤. 在本文中,我将讨论使用CXF开发SOAP Web服务. 在继续前进之前,让我们了解构成SOAP Web服务的 ...

  8. Apache CXF实战之二 集成Sping与Web容器

    2019独角兽企业重金招聘Python工程师标准>>> 书接上文,下面看看CXF怎样和spring集成. 1.创建HelloWorld 接口类 [java] view plainco ...

  9. apache cxf java_Java-Apache CXF Web服务问题

    回答您的问题 第一个问题:如果列表为空,则CXF 2.6.1版正确处理了该服务-服务返回空值.只是为了说明我有一个示例服务,其中以这种方式定义了类型: @XmlAccessorType(XmlAcce ...

最新文章

  1. python opengl 入门
  2. 跟vczh看实例学编译原理——三:Tinymoe与无歧义语法分析
  3. [SinGuLaRiTy] 2017 百度之星程序设计大赛 初赛A
  4. win10录屏工具_win10怎么录屏?这才是最长情陪伴你的录屏工具
  5. echarts实现双Y轴之散点和折线图
  6. 今天辞去了联盟的版主职务
  7. matlab求最大公约数和最小公倍数
  8. 华为杯数学建模2020什么时候出结果_第17届华为杯数学建模竞赛来啦
  9. 微星刀锋 无法进入bios_所有键都无法进入bios,微星主板无法进入bios-
  10. java数组排序的方法_Java数组排序方法详解
  11. laypage分页java例子_layPage分页示例
  12. vue播放报警音实现过程
  13. 微信小程序开发官方文档解读
  14. 3d文件格式转换工具
  15. struggle for English college test band 6
  16. 不讲武德的Python反爬神器『fake_useragent』
  17. 《数据结构》第四章串,数组和广义表
  18. 小博无线技术团队使用的编程语言
  19. Life feelings--7--聆听国奖大佬们的分享交流会-干货与总结
  20. 【FineReport】--填报报表

热门文章

  1. 已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和集合B的差集(近由在A中出现而不再B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
  2. 从试卷中悟出的道理……
  3. JAVA集合(笔记)
  4. python 高维数据_Python数据分析入门|利用NumPy高效处理高维数据
  5. tomcat(1)一个简单的web server
  6. 方法参数的值调用+引用调用+深浅拷贝
  7. java oca_OCA第7部分中的Java难题
  8. apache kafka_Apache Kafka消费者再平衡
  9. kafka 发布-订阅模式_使用Apache Kafka作为消息系统的发布-订阅通信中的微服务,并通过集成测试进行了验证...
  10. 纹理和基元_自定义基元和DTO的(反)序列化和验证