apt vs wsgen vs wsimport .Confusion什么时候使用什么以及为什么不使用另一个

问题描述 投票:7回答:1

我一直在尝试编写一个Web服务(JAX-WS),并且我已经完成了从2006年到2013年的一些教程。其中大多数是关于某些IDE的。那些谈论手动创建/部署Web服务的人都使用ant脚本。到这里一切都很好。

在我检查ant脚本的那一刻,混乱就开始了。一些旧的教程使用APT任务来编译SEI,然后wsgen用于生成工件。较新的只使用wsgen(尽管APT在ant脚本中被定义为taskdef)。此外,正如我一直在阅读有关JAVA 7文档的内容,它表示您不需要使用wsgen,因为javac本身会执行所有编译和工件请求。 for WS是在运行时动态生成的。

我尝试在SEI上使用javac命令并将其部署在tomcat上,但它没有用。

任何人都可以澄清我需要在JAVA SE 7版本中使用哪些命令来部署Web服务。

另外,我想知道每个命令生成什么以及何时使用哪些命令。

根据我的知识,开发和部署不需要wsimport,但只需要构建WS-client。它是否正确?如果没有,请提供指示,以明确我的理解。

提前致谢

此外,如果我重复我的自我,那么对不起,因为我是StackOverflow的新手并且对此不太熟悉。 :)

web-services jax-ws wsimport apt wsgen
1个回答
11
投票

要使用Java-WS规范创建Web Service,您需要多个工件。 “apt”,“wsgen”和“wsimport”的目的是使该过程自动化。

有两种方法可以创建Web服务:自下而上(第一个代码,然后是WSDL)和自上而下(第一个WSDL,然后是代码)。

自下而上的方法:

  • apt:使用源代码,生成WSDL(和工件)
  • wsgen:使用编译的代码,生成WSDL(和工件)

自顶向下

  • wsimport:使用WSDL,为服务/客户端实现生成java代码。

使用apt的优点是拥有源代码脚本将能够获取参数名称并在WSDL上使用它们。

Web服务部署

对于生产,您需要一个可以负责安全性,可扩展性和资源管理的Web容器,但是,出于测试目的,您可以使用Java SE上的内置Web服务器部署Web服务:

@WebService public class MyService{

    public static void main(String args[]){   
        MyService service = new MyService();   
        String url = "service/";   
        Endpoint ep = new Endpoint(url, service); 
    }


    @WebMethod 
    public String getInfo(){   
        return "Service info"; 
    }
}

这段代码将生成WSDL并在localhost / service上发布服务。

© www.soinside.com 2019 - 2024. All rights reserved.