我正在使用 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/