2

我有一个关于部署 Web 服务的简单问题。目前我有两个端点,见下文:

Endpoint.publish("http://localhost:8000/eCalcWS/eCalc", new eCalc());

Endpoint.publish("http://localhost:8001/eCalcWS/eCalc_service", new eCalc_service());

是否可以在同一个地址上拥有两个 Web 服务?我该怎么做?

4

1 回答 1

2

不幸的是,你不能按照你想要的方式。
设计是每个端点都与 Web 服务实现者相关联。
规格

Endpoint 类可用于创建和发布 Web 服务端点。端点由充当 Web 服务实现的对象(这里称为实现者)加上一些配置信息组成,例如绑定

并发表(我的重点):

发布(字符串地址,对象实现者)为给定的实现者
创建并发布一个端点。默认情况下,根据提供的地址(必须是 URL)的 URL 方案选择绑定。如果找到合适的绑定,则创建端点然后发布,就像调用了 Endpoint.publish(String address) 方法一样。然后将创建的 Endpoint 作为方法的值返回。

我记得我很久以前也遇到过这个问题,这真的很糟糕,因为我需要将 2-3 个不同的实现与不同的 URL 关联起来,这是不可能的(得到地址已经绑定错误)。
如果我记得的话,我解决这个问题的方法是创建自己的调度程序。
我发布了一个端点,它接受多个端点的 Web 服务请求,并将请求分派给相应的实现。我直接处理 SOAP 消息。
但这对我来说是可能的,因为 xml 消息非常简单而且很少。
如果您的 Web 服务实现不平凡并且具有复杂的消息并期望有很多客户端,那么我建议您在不同的端点上发布,因为端点实际上只是部署了一个简单的引擎盖下的 http 服务器。

于 2012-11-05T20:52:51.010 回答