我有一个web服务的WSDL文件。我使用的JAX-WS /的wsimport生成客户端界面的Web服务。我不知道提前web服务将在主机上的,我几乎可以保证它不会被 HTTP ://本地主机:8080 。如何我在运行时指定的主机URL,例如从命令行参数?

在生成的构造MyService(URL wsdlLocation, QName serviceName)似乎并不像我想要什么,但也许它是什么?也许Service.getPort(...)的变体之一?

谢谢!

有帮助吗?

解决方案

在构造函数应该能正常运行您的需要,当你创建的MyService,通过它你想即的 HTTP:// someurl:?someport /服务WSDL

其他提示

如果您在靠近生成的构造函数生成的源一看,你应该能够找出它要放什么东西从默认的构造函数,应该是这个样子:

public OrdersService() {
    super(WSDL_LOCATION, new QName("http://namespace.org/order/v1", "OrdersService"));
}

您应该能够找到在静态字段WSDL_LOCATION的Def进一步在类的。

在生成的代码(例如:说“HelloWorldWebServiceImplService”)。在看到顶部的静块,这将具有参照WSDL URL或WSDL文件是下META-INF

 /*
static {
    URL url = null;
    try {
        url = new URL("http://loclahost/HelloWorld/HelloWorldWebServiceImpl?wsdl");
    } catch (MalformedURLException e) {
        java.util.logging.Logger.getLogger(HelloWorldWebServiceImplService.class.getName())
            .log(java.util.logging.Level.INFO, 
                 "Can not initialize the default wsdl from {0}", "http://loclahost/HelloWorld/HelloWorldWebServiceImpl?wsdl");
    }
    WSDL_LOCATION = url;
}
*/

在您发表评论这个,你还需要注释掉默认construtor不用说intialize静态WSDL_LOCATION = NULL; (为null) 所以,你不会有两个构造如下图所示。

public final static URL WSDL_LOCATION = null;
public HelloWorldWebServiceImplService(URL wsdlLocation) {
    super(wsdlLocation, SERVICE);
}

public HelloWorldWebServiceImplService(URL wsdlLocation, QName serviceName) {
    super(wsdlLocation, serviceName);
}

<强>调用web服务:立即在实例化此对象传递该web服务的URL作为参数如所示的客户端呼叫

   //You can read mywebserviceURL from property file as String.
    String mywebserviceURL = "http://myqamachine.com/HelloWorld/HelloWorldWebServiceImpl?wsdl"
    URL WsURL = new URL(mywebserviceURL);
    HelloWorldWebServiceImplService webService = new HelloWorldWebServiceImplService(WsURL);

所以在这里,你可以动态地指向Web服务的URL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top