Apache CXF中的SOAP over WebSockets?

java web-services soap websocket cxf

706 观看

2回复

382 作者的声誉

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

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

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

我查找了邮件列表历史记录中的信息,但是如果CXF支持开箱即用的WebSocket或者我需要实现自己的传输,我仍然不清楚这一点?

作者: pbielicki 的来源 发布者: 2014 年 4 月 9 日

回应 2


0

382 作者的声誉

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

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

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

作者: pbielicki 发布者: 2014 年 4 月 24 日

0

7532 作者的声誉

嗨,有点迟到的答案我猜,但似乎在CXF支持Soap over Websocket。配置它的主要问题是获得正确的网络依赖关系,这在CXF网站上没有正确描述。以下文章描述了对我有用的依赖项列表:

使用Appache CXF和Embedded Jetty的SOAP over Websocket

该帖子包含使用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>
作者: Alexandar Petrov 发布者: 2019 年 6 月 12 日
32x32