Apache CXF 中基于 WebSocket 的 SOAP?

     2023-02-16     154

关键词:

【中文标题】Apache CXF 中基于 WebSocket 的 SOAP?【英文标题】:SOAP over WebSockets in Apache CXF? 【发布时间】:2014-04-09 07:04:13 【问题描述】:

CXF 是否支持将 WebSockets 作为传输协议?

我需要支持多路复用的 SOAP 和 WebSocket 协议作为起点看起来很完美。它是一种双向全双工协议。 通过多路复用,我的意思是客户端可以发送消息而无需等待响应,并且响应可能会按照它们发送的不同顺序被发送回来(我将使用消息/对话 ID 来识别请求和响应)

它应该与 JMS 非常相似,其中 CXF 可以以任何顺序异步接收请求和发送响应,例如:

我在邮件列表历史中查找了信息,但我仍然不清楚 CXF 是否支持WebSocket out-of-the box 或者我需要实现自己的transport?

【问题讨论】:

【参考方案1】:

我问的问题仍然有效,但有一个答案让我满意:)

我可以简单地使用 JMS,而不是 java.util.concurrent 队列。然后,根据上下文和可扩展性要求,我可以使用 in-jvm 队列或分布式队列。在这种情况下,CXF 已经支持SOAP over JMS。

需要确保的是每个 WebSocket 连接都有一个队列(或者可以使用JMS Message Selector)。这是因为 WebSocket A 收到的对请求的响应必须使用相同的连接发回。

【讨论】:

【参考方案2】:

您好,我想答案有点晚了,但似乎 CXF 支持 Soap over Websocket。配置它的主要问题是获得正确的网络依赖关系,这在 CXF 网站上没有正确描述。以下帖子中描述了对我有用的依赖项列表:

SOAP over Websocket with Appache CXF and Embedded Jetty

这篇文章包含一个使用 websocket 传输的 CXF soap 端点的工作示例。

我将总结使其工作的必要依赖项:

<dependency>
            <groupId>org.asynchttpclient</groupId>
            <artifactId>async-http-client</artifactId>
            <version>2.0.39</version>
             <exclusions>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-buffer</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-codec-http</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-handler</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-transport-native-epoll</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-transport</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-common</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-codec</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.netty</groupId>
                    <artifactId>netty-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
        <version>4.0.56.Final</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-websocket</artifactId>
        <version>3.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http</artifactId>
        <version>3.3.2</version>
    </dependency>
    <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>3.3.2</version>
    </dependency>

【讨论】:

如何创建,发布和访问基于cxf的服务

...包。生成步骤如下:1)安装cxf,设置环境变量,如:D:/Apache/apache-cxf-2.2.4;同时,PATH后加上“;%CXF_HOME%/bin”(可选)。wsdl2java的用法如下:wsdl2java–p包名–d目录名wsdl路径如:wsdl2java–pdemo.service.client–de:/srchtt://localhost:8080/hello... 查看详情

在 Apache CXF 中内置 HTTP 服务器

】在ApacheCXF中内置HTTP服务器【英文标题】:BuiltinHTTPServerinApacheCXF【发布时间】:2014-01-2120:19:55【问题描述】:ApacheCXF中是否有内置的HTTP服务器,例如Jersey的“HttpServerFactory”?我尝试通读CXF文档,但找不到类似的东西。【问题... 查看详情

Apache CXF - 处理操作中缺少的路径参数

】ApacheCXF-处理操作中缺少的路径参数【英文标题】:ApacheCXF-Handlemissingpathparametersinanoperation【发布时间】:2015-04-0707:23:31【问题描述】:我在我的项目中使用apachecxf来实现Jax-rs。我有一个使用以下地址定义的服务:http://ip:port/mys... 查看详情

apache cxf rest服务中的Spring异常

】apachecxfrest服务中的Spring异常【英文标题】:Springexceptioninapachecxfrestservice【发布时间】:2016-01-2712:17:07【问题描述】:我正在学习如何使用apachecxf构建一个休息服务,并且我遵循了一个教程。但是当我运行代码时出现以下异常... 查看详情

使用 Apache CXF 在 SOAP POST 请求中出错,但 curl 有效

】使用ApacheCXF在SOAPPOST请求中出错,但curl有效【英文标题】:GettingErrorinSOAPPOSTrequestusingApacheCXFbutcurlworks【发布时间】:2015-08-3013:09:16【问题描述】:我遇到了一个非常奇怪的问题。我正在尝试通过HTTPS执行SOAPPOST请求。当我从我... 查看详情

Apache CXF - WS 解决如何从标题中删除/删除回复

】ApacheCXF-WS解决如何从标题中删除/删除回复【英文标题】:ApacheCXF-WSaddressinghowtoremove/deleteReplyTofromHeaders【发布时间】:2016-04-0205:14:01【问题描述】:我正在尝试使用ApacheCXF2.7.18实现WS-Addressing。我可以设置一些标题,如To、Action... 查看详情

Grails-cxf 中基于 SSL 的 Web 服务?

】Grails-cxf中基于SSL的Web服务?【英文标题】:WebserviceoverSSLinGrails-cxf?【发布时间】:2011-11-2700:29:53【问题描述】:我需要通过HTTPS提供特定的CXFWeb服务(我还有其他几个需要通过普通HTTP工作的服务)。在SecurityConfig.groovy,我设... 查看详情

CORS 预检在 Firefox 中失败,但在 Chrome for Apache CXF 中有效

】CORS预检在Firefox中失败,但在ChromeforApacheCXF中有效【英文标题】:CORSpreflightfailsinFirefoxbutworksinChromeforApacheCXF【发布时间】:2017-01-2214:30:41【问题描述】:我正在向JavaWeb应用程序添加对CORS请求的支持,但由于某种未知原因,Fire... 查看详情

cxf+spring+eclipse简明示例

...交互时,一种良好的方式便是调用WebService,本示例基于Apache组织的CXF,为了方便起见特将服务端和客户端写在同一个工程下,实际项目中是不可能的,但是客户端却依赖于服务端的WebService接口,那么可以通过导出jar的方式。环... 查看详情

php websocket 服务器会在 apache 中运行吗?

】phpwebsocket服务器会在apache中运行吗?【英文标题】:willphpwebsocketserverruninapache?【发布时间】:2016-09-1903:28:52【问题描述】:我参考了本教程并设法在我的本地主机中运行了简单的聊天应用程序。https://www.sanwebe.com/2013/05/chat-usin... 查看详情

cxf+spring+tomcat案例

多系统(异构系统)进行交互时,一种良好的方式便是调用WebService,本示例基于Apache组织的CXF环境:EclipseJDK6Tomcat6CXF2.6.1Spring3示例项目结构图:  IHelloService.javapackage bing.server;import javax.jws.WebService;/** *< 查看详情

Apache CXF 和 WS-A 属性

】ApacheCXF和WS-A属性【英文标题】:ApacheCXFandWS-Aproperties【发布时间】:2011-12-0705:55:17【问题描述】:谁能告诉我如何解决我收到的这个警告消息?警告2011年10月13日15:23:46,024ContextUtils-WS-Addressing-未能从上下文中检索消息寻址属性... 查看详情

java示例代码_阻止Apache CXF发送响应消息

java示例代码_阻止Apache CXF发送响应消息 查看详情

cxf服务端启动报错java.lang.nosuchfielderror:qualified急!望解答!

java.lang.NoSuchFieldError:QUALIFIEDatorg.apache.cxf.service.model.SchemaInfo.setSchema(SchemaInfo.java:146)atorg.apache.cxf.wsdl11.SchemaUtil.extractSchema(SchemaUtil.java:136)atorg.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:73)atorg.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.j... 查看详情

使用 Apache CXF 调用 SOAP API 时发生 ClassCastException

】使用ApacheCXF调用SOAPAPI时发生ClassCastException【英文标题】:ClassCastExceptionwhilecallingSOAPAPIusingApacheCXF【发布时间】:2014-02-1914:53:56【问题描述】:我正在使用Maven、Java1.6、ApacheCXF。在某些类ApacheCXF中调用SoapAPI时,我遇到了一些Clas... 查看详情

在 pom.xml 中使用 Apache CXF Codegen 插件时出错。尝试更新 maven 时执行标记中出错。如何解决这个问题?

】在pom.xml中使用ApacheCXFCodegen插件时出错。尝试更新maven时执行标记中出错。如何解决这个问题?【英文标题】:ErrorwhileusingApacheCXFCodegenPlugininpom.xml.Errorinexecutiontagwhiletryingtoupdatethemaven.Howtoresolvethis?【发布时间】:2021-04-2409:40:55... 查看详情

Android 中基于 Websocket 的 MQTT

】Android中基于Websocket的MQTT【英文标题】:MQTTOverWebsocketsinAndroid【发布时间】:2017-11-2922:45:29【问题描述】:我正在使用PahoAndroidServiceforMQTToverwebsockets。https://www.hivemq.com/blog/mqtt-client-library-enyclopedia-paho-android-service我的问题 查看详情

cxf入门:创建一个基于ws-security标准的安全验证(cxf回调函数使用)

注意:以下客户端调用代码中获取服务端ws实例,都是通过CXF入门:远程接口调用方式实现 以下是服务端配置========================================================一,web.xml配置,具体不在详述<?xml version="1.0" encoding="UTF-8"?> ... 查看详情