【问题标题】:How to publish wsdl for java如何为 java 发布 wsdl
【发布时间】:2013-01-22 03:54:43
【问题描述】:

我有以下 java 类并为它发布了一个 wsdl,我的问题是,是否有不同的 web 服务类并发布一个 wsdl?我的意思是另一个带有许多方法的单独类,或者我必须有一个 webservice 类作为应用程序的主类来保留所有 webmethod 方法并从中生成 wsdl?

package com.Services;


import javax.jws.WebService;
import javax.jws.WebMethod;

@WebService(name = "Hellos", targetNamespace = "http://localhost:8081/Mywebservice2/services/Hellos")
public class Hellos {


    @WebMethod
    public Customer[] mycustomers() {
    .....

    }

    @WebMethod
    public String Receiver(String name){
        ....
    }
}

【问题讨论】:

    标签: java web-services


    【解决方案1】:

    没错,这应该是您设计应用程序的方式。您应该有一个合并的 java 文件并且应该公开。应该给客户多个端点。

    【讨论】:

    • 你的意思是我应该有一个java文件和很多方法?
    • @JackMoore 是的!这就是要遵循的方法。否则客户会颠覆你:)
    【解决方案2】:

    WSDL 对应于您的服务,实际上每个公共方法对应于一个服务。您可以编写许多类和方法,但如果方法是私有的,它们将不会成为您的 wsdl 的一部分。

    如果您使用任何 IDE 插件,那么它会在服务创建期间询问您希望向外部世界公开哪些公共方法。因此,在一个 java 项目中,您可以拥有任意数量的类或方法。最后,当您将项目转换为 Web 服务时,您可以决定哪些方法可以用作端点/服务,然后这些方法将成为您的 WSDL 的一部分。

    【讨论】:

    【解决方案3】:

    自 JDK 1.6 以来用于生成 de WSDL 文件的工具 wsgen 只需要 一个 Service Endpoint InterfaceSEI

    wsgen [options] <SEI>
    

    你可以读到:

    wsgen 工具生成 JAX-WS Web 服务中使用的 JAX-WS 可移植工件。该工具读取 Web 服务端点实现类 (SEI) 并生成 Web 服务部署和调用所需的所有工件

    还有:

    请注意,您不必在开发时生成 WSDL,因为 JAXWS 运行时会在您部署服务时自动为您生成 WSDL。

    另一方面,WSDL 1.1 支持在单个 WSDL 文件中包含多个服务,但这些服务共享类型。在这种情况下,最好将所有内容放在一个服务中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      相关资源
      最近更新 更多