gpt4 book ai didi

java - 为 Web 服务生成 Wsdl/客户端 stub

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:25 26 4
gpt4 key购买 nike

我一直在阅读有关使用 Java、Eclipse 等进行 Web 服务编程的内容,我发现了一个特定的示例,其中该人通过执行以下操作创建了 Web 服务和客户端:

  1. 定义 Web 服务 Java 类(接口(interface) + impl)
  2. 使用 Endpoint.publish部署 Web 服务
  3. 从 Web 服务的 URL 中获取 wsdl(例如 localhost://greeting?wsdl)
  4. 使用wsimport生成 stub
  5. 使用生成的 stub 创建客户端类

是否有另一种方法可以生成 wsdl 而无需发布 Web 服务并下载它?也许有一个 Maven 插件可以自动生成 wsdl 和客户端 stub ?

更新:我不会创建一个新问题,而是会利用这个问题。

我通过定义接口(interface)创建了我的 Web 服务:

@WebService
public interface HelloWorldWs {
@WebMethod
public String sayHello(String name);
}

和一个 impl 类:

@WebService(endpointInterface = "com.me.helloworldws.HelloWorldWs")
public class HelloWorldWsImpl implements HelloWorldWs {
@Override
@WebMethod
public String sayHello(String name) {
return "Hello World Ws, " + name;
}
}

当我运行 wsgen 时,出现以下错误:

The @javax.jws.WebMethod annotation cannot be used in with @javax.jws.WebService.endpointInterface element.

Eclipse 似乎对此还不错。

知道为什么吗?

注意,我最初没有注释,但是当我尝试调用我的网络服务时,出现以下错误:

com.me.helloworldws.HelloWorldWsImpl is not an interface

最佳答案

JSR 224 3.1节中说:

An SEI is a Java interface that meets all of the following criteria:

  • Any of its methods MAY carry a javax.jws.WebMethod annotation (see 7.11.2).
  • javax.jws.WebMethod if used, MUST NOT have the exclude element set to true.

如果实现类包含javax.jws.WebMethod,那么您就不能放置@WebMethod(exclude=true),而且根据规范,这是不可能的。

取决于 Eclipse 的自定义版本,对此显示警告。例如Rational Application Developer for Websphere 显示:

JSR-181, 3.1: WebMethod cannot be used with the endpointInterface 
property of WebService

关于java - 为 Web 服务生成 Wsdl/客户端 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14404059/

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