在同一地址上发布两个Web服务

时间:2012-11-05 20:33:02

标签: java web-services jax-ws

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

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

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

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

1 个答案:

答案 0 :(得分:2)

不幸的是,你不能以你想要的方式 设计是每个端点都与Web服务实现者相关联 来自spec

  

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

和发表(我的重点):

  

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

我记得我在很长一段时间内也遇到过这个问题非常糟糕,因为我需要将2-3个不同的实现与不同的URL相关联,这是不可能的(得到地址已经绑定错误)。
如果我记得,我解决这个问题的方法就是创建自己的调度员 我发布了一个端点,该端点接受多个端点的Web服务请求,并将请求分派给相应的实现。我直接在SOAP消息上工作 但是对我来说这是可能的,因为xml消息非常简单而且很少 对于您,我建议在不同的端点发布,如果您的Web服务实现非常重要并且具有复杂的消息并期望很多客户端,因为端点实际上只是部署了简单 http服务器。