如何使用CXF发布HTTPS,且接受所有证书

如何使用CXF发布HTTPS,且接受所有证书,第1张

>

说明:本文章记录的是基于springboot搭建的cxf服务端和soap客户端调用

说明:目前我使用到了四个注解,分别是

@WebService:表明该接口是一个webservice服务接口,注解里的属性值可以设置生成的wsdl文档的命名空间等信息,此处没有遇到相关错误,因此没有进行设置,不过建议还是设置上。

@WebMethod:表明该方法是服务要发布的方法,对应属性也可以设置上

@WebResult:设置方法返回值,此处最开始没有设置导致获取不到返回值,因此务必设置上

@WebParam:设置参数信息,指定参数名字和参数所属命名空间,必须设置,不然可能导致参数不能传递进来

说明:实现类上需要贴上注解,方法不需要

说在前头:这里我只是实验了拦截器的定义,没有什么具体的业务 *** 作,想学习的同学请自行研究

此时启动boot项目就可以访问到wsdl文档

第一个就是请求参数无法传递进去,解决办法是设置@WebParam注解的targetNamespace属性值

这个主要就是报非法属性异常

第二个就是无法获取到返回值,解决办法就是需要添加@WebResult注解并设置对应的属性值

这个主要就是在客户端获取返回值哪里报空指针异常

CXF调用

import orgapachecxfinterceptorLoggingInInterceptor;

import orgapachecxfinterceptorLoggingOutInterceptor;

import orgapachecxfjaxwsJaxWsProxyFactoryBean;

import serviceICalculateService;

public class ClientTest {

public static void main(String[] args) {

// 创建webservice服务工厂

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

// 加入一个接收响应日志的拦截器

factorygetInInterceptors()add(new LoggingInInterceptor());

// 加入一个返回响应日志的拦截器

factorygetOutInterceptors()add(new LoggingOutInterceptor());

factorysetServiceClass(ICalculateServiceclass);

factorysetAddress(">

1 原理

Spring MVC按植物分类学属于Martin Flower〈企业应用模式〉里的静态配置型Front Controler,使用DispatchServlet截获所有do的请求,按照xml文件的配置,调用对应的Command对象的 handleRequest(request,response)函数,同时进行依赖对象的注入。

我们的Controller层,就是实现handleRequest(request,response)函数的普通JavaBean。

2 优势

Spring MVC与struts相比的优势:

一是它的Controller有着从松到紧的类层次结构,用户可以选择实现只有一个HandleRequest()函数的接口,也可以使用它有很多回调函数的SimpleFormController类。

二是不需要Form Bean,也不需要Tapestry那所谓面向对象的页面对象,对于深怕类膨胀,改一个东西要动N个地方的人最适合不过。

三是不需要强XML配置文件,宣告式编程是好的,但如果强制成框架,什么都要在xml里面宣告,写的时候繁琐,看的时候也要代码配置两边看才能明白就比较麻烦了。

那Webwork呢没有实战过,不过因为对MVC框架所求就不多,单用Spring MVC的Controller已经可以满足需求,就不多搞一套Webwork来给团队设坎,还有给日后维护,spring,ww2之间的版本升级添麻烦了。真有什么需要添加的,Spring MVC源代码量很少,很容易掌控和扩展。

3化简

31 直接implement Controller,实现handleRequest()函数

首先,simple form controller非我所好,一点都不simple。所以有时我会直接implement Controller接口。这个接口的唯一函数是供Front Controller调用的handleRequest(request,response)。

如果需要application对象,比如想用applicationgetRealPath()时,就要extends webApplicationObjectSupport。

32每个Controler负责一组相关的action

我是坚决支持一个Controler负责多个action的,一个Controler一个action就像一个function一个类一样无聊。所以我用最传统的方式,用URL参数如msg="insert"把一组相关action交给一个Controler控制。ROR与制作中的Groovy On Rails都是这种模式,Spring也有MultiActionController支持。

以上三者都是把URL参数直接反射为Controller的函数,而Stripes的设计可用annotation标注url action到响应函数的映射。

33xml宣告式编程的取舍

我的取舍很简单,反正Spring没有任何强制,我只在可能需要不重新编译而改变某些东西的时候,才把东西放在xml里动态注入。jsp路径之类的就统统收回到controller里面定义

它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 Spring 的轻量级容器中,以及部署在更高级的服务器上,例如 Jboss、IBM�0�3 WebSphere�0�3 或 BEA WebLogic。

该框架提供了以下功能: Web 服务标准支持:CXF 支持以下 Web 服务标准: Java API for XML Web Services (JAX-WS) SOAP Web 服务描述语言(Web Services Description Language ,WSDL) 消息传输优化机制(Message Transmission Optimization Mechanism,MTOM) WS-Basic Profile WS-Addressing WS-Policy WS-ReliableMessaging WS-Security 前端建模:CXF 提供了前端建模的概念,允许您使用不同的前端 API 来创建 Web 服务。API 允许您使用简单的工厂 Bean 并通过 JAX-WAS 实现来创建 Web 服务。它还允许您创建动态 Web 服务客户端。 工具支持:CXF 提供了用于在 Java Bean、Web 服务和 WSDL 之间进行转换的不同工具。它提供了对 Maven 和 Ant 集成的支持,并无缝地支持 Spring 集成。 RESTful 服务支持:CXF 支持代表性状态传输(Representational State Transfer,RESTful )服务的概念,并支持 Java 平台的 JAX-RS 实现。(本系列的第 2 部分将提供有关 RESTful 服务的更多信息。) 对不同传输和绑定的支持:CXF 支持不同种类的传输,从 XML 到逗号分隔值 (CSV)。除了支持 SOAP 和 >

可以添加一个cxf的日志拦截器,查看请求和响应的soap信息,出现这个异常,soap请求应该是没问题的,问题应该出在响应

可以尝试一下调用其他的方法,如果其他方法没有问题,就证明是这个方法的响应数据有问题,响应的应该是soap格式的数据,但是却响应了其他格式的

这个问题我也遇到了,删除cxf的jar包可以解决,但是我又想用cxf来调用查询,后来我换另外一个需要输入用户id的查询天气的方法就解决了,不需要删除cxf的jar包

以上就是关于如何使用CXF发布HTTPS,且接受所有证书全部的内容,包括:如何使用CXF发布HTTPS,且接受所有证书、6、CXF与spring的整合(WebService的整合)、CXF方式搭建本地webservice服务和soap方式调用踩坑等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10080912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存