gpt4 book ai didi

java - 有轻量级的独立 SOAP 服务器吗?或者你将如何实现?

转载 作者:搜寻专家 更新时间:2023-11-01 01:58:44 29 4
gpt4 key购买 nike

这里的挑战是我需要在 Java 中实现一个基于 SOAP 通信的高度并发和动态的系统。它可以被视为一个多代理系统,其中代理是响应 SOAP 请求的软件进程(如守护进程)。在运行时,我的系统可能包含超过一千个这样的代理——每个都绑定(bind)到自己的专用端口,提供完全相同的服务/接口(interface)。因此,将其实现为 Tomcat servlet 或类似服务是一种繁重的方式。

在我的第一次尝试中,我构建了一个简单的 HTTP 服务器并尝试在其上实现 SOAP 消息处理。但我不想重新发明轮子,特别是因为简单对象访问协议(protocol)实际上并不那么简单。不幸的是,大多数 Java 解决方案都基于 Jax-WS,并且需要 tomcat 或其他服务器环境才能运行(据我所知)。

然后我看了一下轴库(很棒)。它甚至带有一个 SimpleAxisServer 模块,它完全符合我的要求。它作为一个非常轻量级的独立 SOAP 服务器运行,部署 SOAP 服务非常容易。但是……问题来了:SimpleAxisServer 仅用于开发和调试目的,否则强烈建议不要使用它。当然,我无视这些提示开始使用该模块制作系统原型(prototype),几天后就遇到了麻烦......

我现在的实际问题是:这个问题没有现成的解决方案吗?我应该查看哪些库/类?

最佳答案

我个人会使用 Apache CXF。 standalone 模式基于 Jetty,根据我的书,Jetty 足够轻,而且 Jetty 本身稳定且性能良好。

import java.util.logging.LogManager;
import javax.xml.ws.Endpoint;

public class MySoapServer {
public static void main(String[] args) {
String serviceAddress = "http://localhost:9099/mysoap";
MyService implementor = new MyServiceImpl();
Endpoint ep = Endpoint.publish(serviceAddress, implementor);
}
}

如果您正在使用 Maven(您确实应该这样做),请将以下内容添加到 pom.xml:

<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>2.4.2</version>
</dependency>

服务本身将使用标准 JAX-WS 注释构建。

首先创建界面。

import javax.jws.WebService;

@WebService
public interface MyService {
public String hello();
}

然后是实现类。

import javax.jws.WebService;

@WebService(serviceName="HelloWorld")
public class MyServiceImpl implements MyService {
public String hello() {
return "Hello World!";
}
}

或者,如果您愿意,您也可以使用 WSDL 优先的方法。

关于java - 有轻量级的独立 SOAP 服务器吗?或者你将如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781407/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com