如何为java发布wsdl

时间:2013-01-22 03:54:44

标签: java web-services

我有以下java类,并为它发布了一个wsdl,我的问题是,无论如何有不同的webservice类并发布一个单独的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){
        ....
    }
}

3 个答案:

答案 0 :(得分:1)

确切地说,这应该是您应该设计应用程序的方式。你应该有一个统一的java文件,应该公开。应给予客户多个终点。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

自JDK 1.6生成de WSDL文件以来的工具wsgen仅需一个 服务端点接口 SEI

wsgen [options] <SEI>

你可以读到:

  

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

  

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

另一方面,WSDL 1.1支持在单个WSDL文件中提供多个服务,但这些服务共享类型。在这种情况下,它更倾向于将所有服务整合在一起。