动机
我正在构建一个命令行实用程序,它允许用户从远程计算机操作服务器上的用户帐户。为此,服务器提供SOAP WS API。
问题
如果我使用wsimport工具从WSDL文件生成客户端代码,则应用程序将固定为单个服务器安装(服务器的IP地址在多个位置的代码中得到修复)。
我需要应用程序允许用户使用任何服务器安装。应该只在应用程序启动时询问它们目标服务器的IP地址。
实现这一目标的最佳/正确方法是什么?
答案 0 :(得分:4)
生成wsdl代理后。这是一个带注释的文件 @WebServiceClient。
我为以下网址生成代理(wsdl位置)
http://192.168.1.185:10530/service?wsdl
在类的构造函数中,您可以传递由setter字符串或文件设置的所需url或从数据库读取的任何数据。
使用注释@WebServiceClient查找文件(包含getBasicHttpBinding方法) 然后添加以下内容在使用此设置所需的url并调用getBasichttpBinding ....
之前private static String serviceUrl = "";
public static void setUrl(String url){
serviceUrl = url;
}
public ServiceClient(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
public ServiceClient() {
super(serviceUrl, new QName("http://tempuri.org/", "Service"));
}