2014-04-06 38 views
6

我一直在尝试编写一个Web服务(JAX-WS),并且我经历了一系列从2006年到2013年的教程那些。他们中的大多数都是关于某个IDE的。那些谈论手动创建/部署Web服务的人使用ant脚本。直到这里一切都很好。apt vs wsgen vs wsimport。关于什么时候使用什么以及为什么不使用其他

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

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

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

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

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

由于提前

另外,如果我再重复我自己难过,因为我是新来的StackOverflow,而不是非常熟悉。 :)

回答

9

要使用Java-WS规范创建Web服务,您需要几个工件。 “apt”,“wsgen”和“wsimport”的目的是自动执行此过程。

创建Web服务有两种方法:自下而上(先编码,然后WSDL)和自上而下(先WSDL然后编码)。

自下而上的方法:

  • 易于:采用源代码,生成WSDL(和工件)
  • WSGEN:采用编译代码,生成WSDL(和工件)

自上而下

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

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

Web服务部署

对于生产,你需要它可以是负责安全,scalablity和资源管理的Web容器,但是,出于测试目的,你可以使用部署Web服务内置Java SE上的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上发布服务。

+0

谢谢......这给了我一个编写符合JAX-WS规范的Web服务的基本思路。 现在w.r.t apt和wsgen,我需要使用任何明确/ ?? bcz我能够部署Myservice类没有任何这些,它确实工作正常... –

+0

不,你不知道。 “这段代码将生成WSDL并在本地主机/服务上发布服务”。 Endpoint类将为您执行wsgen。 如果你觉得这个答案有帮助,请选择“这个答案是有用的”,甚至更好,“接受”答案。 – FewDexter

相关问题