繁体   English   中英

生成Web服务的Wsdl /客户端存根

[英]Generate Wsdl/Client Stubs For Web Service

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

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

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

更新 :我不会提一个新问题,而只是just带这个问题。

我通过定义接口创建了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似乎还可以。

知道为什么吗?

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

com.me.helloworldws.HelloWorldWsImpl is not an interface

JSR 224在3.1节中说:

SEI是满足以下所有条件的Java接口:

  • 它的任何方法都可以带有javax.jws.WebMethod注释(参见7.11.2)。
  • 如果使用javax.jws.WebMethod ,则必须将exclude元素设置为true

如果实现类包括javax.jws.WebMethod ,则根据规范,您不能放置@WebMethod(exclude=true)而这不可能。

取决于Eclipse的定制版本,为此显示了警告。 例如,用于Websphere的Rational Application Developer显示:

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

通常,在使用一个高级IDE编程/构建项目时,您应该能够在自动生成的东西之间找到它-IDE应该会生成它。 只是仔细检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM