Java 如何在JAX-WS调用中指定url并避免初始网络连接?

Java 如何在JAX-WS调用中指定url并避免初始网络连接?,java,jax-ws,Java,Jax Ws,我将JAX-WS标准的东西与wsimport一起使用http://localhost/Order.wsdl生成客户端存根类 live web服务位于不同的主机上,因此我需要在调用服务时提供url。到目前为止,我的方法是这样的(下面的类是从wsimport生成的): 第一:这是指定url的正确方法吗 第二:似乎第1行中的构造函数实际上对新URL进行了网络调用!这导致了一个异常(由于未配置https),因此我永远无法进入下一行 背景:我正在实现中概述的双向ssl身份验证。这意味着我需要在服务调用之前

我将JAX-WS标准的东西与
wsimport一起使用http://localhost/Order.wsdl
生成客户端存根类

live web服务位于不同的主机上,因此我需要在调用服务时提供url。到目前为止,我的方法是这样的(下面的类是从wsimport生成的):

第一:这是指定url的正确方法吗

第二:似乎第1行中的构造函数实际上对新URL进行了网络调用!这导致了一个异常(由于未配置https),因此我永远无法进入下一行

背景:我正在实现中概述的双向ssl身份验证。这意味着我需要在服务调用之前在
端口
中配置ssl内容。在正确配置ssl层之前,我无法让构造函数进行任何连接,原因很明显

更新:

显然,在使用jax ws标准时,url指向WSDL,而不是端点。这把我绊倒了。直接从文件加载WSDL解决了这个问题

设置端点url的方式如下:

BindingProvider b = (BindingProvider) port;        
b.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointUrl);

一种解决方案是让构建过程安排由
wsimport
处理的WSDL文件成为应用程序的类路径资源。有很多种方法可以做到这一点,但是让我们假设您采用一种JAR-per-service方法。因此,您可以通过
wsimport
运行
Order.wsdl
,并获取结果类,如
OrderService
OrderServicePort
,然后将它们填充到
OrderService.jar
中。您可以做的另一件事是将
Order.wsdl
的副本填充到位于
META-INF/wsdl/Order.wsdl
的同一个JAR中。假设JAR文件是应用程序类路径的一部分,您可以通过以下操作获取WSDL的URL:

URL wsdlLocation = Thread.currentThread().getContextClassLoader().getResource("META-INF/wsdl/Order.wsdl");
URL wsdlLocation = Thread.currentThread().getContextClassLoader().getResource("META-INF/wsdl/Order.wsdl");