0

我正在尝试在 JAX-WS 中实现次要版本,如下所示:

@WebService(targetNamespace="http://mycompany.com/api/Service/v1_0")
public interface ServiceRev0 {
    public void initialMethod();
}

@WebService(targetNamespace="http://mycompany.com/api/Service/v1_1")
public interface ServiceRev1 {
    public void newMethod();
}

public class Service implements ServiceRev0, ServiceRev1 {
    ...
}

Endpoint.publish("api", new Service());

不幸的是,CXF 似乎只能“看到”第一个接口及其相关方法。是否可以做我想做的事,还是应该采取另一种方法?

4

3 回答 3

0

逻辑上似乎是错误的,当您添加 @WebService 注释时,如果它在一个类上,则意味着它是一个 Web 服务实现,如果在一个接口上,则意味着定义一个 Web 服务接口。

您的上述定义导致两个不同的 WSDL 具有不同的操作,最好定义两个不同的 Web 服务接口并提供适当的实现。

于 2010-03-10T21:02:13.470 回答
0

Hmmm. That looks much like the Deadly Diamond of Death problem channelled through CXF! I know this is old, but I would try explicitly declaring the concrete methods as in the second and third answer from this question, and try again.

(I hope I'm not evil for commenting on such an old item!)

于 2012-04-24T01:12:58.477 回答
0

我在使用 cxf 3 时遇到了同样的问题。
解决方案/解决方法是创建第三个接口来扩展需要公开的接口。

@WebService(targetNamespace="http://mycompany.com/api/Service/v2")
public interface ServiceRev extends ServiceRev1, ServiceRev2
{
}

暴露:

public class ServiceRevImpl implements ServiceRev
{
....
}
于 2014-12-11T08:15:58.377 回答