[英]Java: WSDL web service wsimport, do I need to re-run wsimport of I change the @WebService class code in the webservice server
我正在使用Windows Werver 2012上运行的Glassfish在Java客户端和Java Web服务上构建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;
}
}
在客户端创建存根方法时,我使用java中的wsimport转换来生成所需的java源文件,这些源文件来自WS发行的WSDL xml。
我注意到的是,如果我在列表中添加一个类别,则:
//...code
categories.add("Books");
categories.add("Music");
categories.add("Movies");
categories.add("Pens");
//...code
我从客户端获取了更新的数组列表:书,音乐,电影和“笔”
谢谢路德
Web服务通常用于进程间通信,因此需要牢固的合同来操作该服务。 WSDL提供了这种合同的方式。 因此,每次合同发生变更时,您将需要更新的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 )来实现。 有优点也有缺点。 根据您的用例,这可能是一个解决方案。
实现此目的的一种方法是在单独的类中编写业务逻辑并在服务类中调用该方法。将getProductCategories()方法带入其他类并创建该类的实例并调用该方法。业务类中的方法,无需更改wsdl或其他任何内容。但是请勿更改方法签名和参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.