Java:WSDL Web服务wsimport,我需要重新运行wsimport吗?我更改了Web服务服务器中的@WebService类代码

标签 java web-services wsdl glassfish wsimport

我正在使用 Java 客户端和在 Windows Werver 2012 上运行的 Glassfish 上构建一个 Web 服务和一个 Java Web 服务。

这是我的@WebService 类:

import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

@WebService
public class ProductCatalog {

    public List<String> getProductCategories(){
     List<String> categories = new ArrayList<>();
     categories.add("Books");
     categories.add("Music");
     categories.add("Movies");

     return categories;
   }
}

客户端创建 stub 方法时,我使用java中的wsimport转换来生成来自WS发布的WSDL xml的所需java源文件.

我注意到,如果我将一个 cetgory 添加到列表中:

     //...code
     categories.add("Books");
 categories.add("Music");
 categories.add("Movies");
 categories.add("Pens");
     //...code

我从客户端获取更新后的数组列表:书籍、音乐、电影+“笔”

  • 但是如果我向 che 类添加新方法,该方法对 客户端,怎么来的?
  • 是因为我需要再次在 WSDL 文件上运行 WSIMPORT 并且 重新编译客户端?
  • 如果上述情况属实,有没有办法避免 WSIMPORT 每次发生更改时都会生成类/源文件 服务器端/网络服务代码?

谢谢路德

最佳答案

Web 服务通常用于进程间通信,因此需要强大的契约来操作服务。 WSDL 提供了这种契约(Contract)的一种方式。因此,每次契约(Contract)发生更改时,您都需要更新 WSDL。

但是,仍然存在一个选项,即服务调用不需要 WSDL。它可以使用动态调用( https://access.redhat.com/site/documentation/en-US/JBoss_Enterprise_Application_Platform/6/html/Development_Guide/Develop_a_JAX-WS_Client_Application.html )来实现。有优点也有缺点。根据您的用例,这可能是一个解决方案。

关于Java:WSDL Web服务wsimport,我需要重新运行wsimport吗?我更改了Web服务服务器中的@WebService类代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17719852/

相关文章:

java - 如何在android中获取editText中每一行的文本?

java - 从Struts2.5 Web服务器访问外部项目静态Web资源

java - Spring Data JPA CDI 与多个持久性单元集成

c# - wsdl.exe 结果为 "SOAP 1.1 binding was not found"

wcf - svcutil.exe 没有为 minOccurs=0 生成指定的字段

java - java 代码中超出最大打开游标数异常

.net - WCF 双工服务和 TCP 端口耗尽

JQuery 发送对象时出现问题(OPTIONS 请求而不是 POST)

web-services - 是否有任何公共(public) Web 服务将检查 MTLS 证书并使用 application/json 响应

java - 如何使用自上而下的Web服务?