9

我一直在尝试编写一个 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 的新手并且对此不太熟悉。:)

4

1 回答 1

15

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

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

自下而上的方法:

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

自顶向下

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

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

网络服务部署

对于生产,您需要一个负责安全性、可伸缩性和资源管理的 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 上发布服务。

于 2014-04-06T14:53:04.777 回答