“异常javax.xml.ws.WebServiceException:不支持的端点地址”尝
我正在尝试拨打网络服务:
http://publicbetawebservices.hotel.de/V2_8/FreeHotelSearchWebService.svc?WSDL
我使用wsimport和JDK1.6.0_29生成了代理类.我的wsimport命令行是: wsimport.exe" -keep -B-XautoNameResolution -d E:mapovmapov-devsharedhotel_info http://publicbetawebservices.hotel.de/V2_8/FreeHotelSearchWebService.svc?WSDL 我正在使用以下代码尝试调用该服务: QName qName = new QName("http://webservices.hotel.de/V2_8","FreeHotelSearchWebService"); FreeHotelSearchWebService service = new FreeHotelSearchWebService(new URL("http://publicbetawebservices.hotel.de/V2_8/FreeHotelSearchWebService.svc"),qName); IFreeHotelSearchWebService sws = service.getBasicHttpBindingIFreeHotelSearchWebService(); String version = sws.getWebservicesVersion(); System.out.println("Hotel.info web service version: " + version); 但是我得到以下异常:
在大多数示例中,我看到生成的代码包含一个getPort()方法,但尚未为此类生成.我的代码是错误的还是我需要以不同的方式运行wsimport?我也试过调用FreeHotelWebService构造函数而没有产生相同异常的参数. 解决方法
基于Justin和
Tug’s Blog重新提出一个无可挑剔的问题:
JAX-WS:如何在运行时配置服务端点? 部署Web Service客户端时,通常需要更改在代码生成期间设置的服务的端点.这篇简短的文章解释了如何在运行时在客户端代码中设置更改它. 你有两种方法可以做到这一点: >使用BindingProvider在端口中设置端点; 使用绑定提供程序设置端点URL 第一种方法是使用以下代码更改BindingProvider(Port)的BindingProvider.ENDPOINT_ADDRESS_PROPERTY属性值: try { EmployeeServiceService service = new EmployeeServiceService(); EmployeeService port = service.getEmployeeServicePort(); BindingProvider bp = (BindingProvider)port; bp.getRequestContext().put( BindingProvider.ENDPOINT_ADDRESS_PROPERTY,"http://server1.grallandco.com:8282/HumanRessources/EmployeeServiceService"); Employee emp = port.getEmployee(123); System.out.println("Result = "+ emp); } catch (Exception ex) {... 使用WSDL获取端点URL 另一部分是在创建服务时设置WSDL.该服务将使用位于WSDL端口-SOAP Endpoint-中的值.这只需使用以下代码完成: try { EmployeeServiceService service = new org.demo.service.EmployeeServiceService( new URL( "http://server1.grallandco.com:8282/HumanRessources/" + "EmployeeServiceService?wsdl"),new QName( "http://service.demo.org/","EmployeeServiceService")); EmployeeService port = service.getEmployeeServicePort(); Employee emp = port.getEmployee(123); System.out.println( "Result = "+ emp); } catch (Exception ex) { 请注意,在Glassfish中,与许多Web服务环境一样,WSDL可以根据用于获取WSDL的URL动态生成端点URL.使用此方法,您还可以动态更改Soap端点(如果与生产环境的网络配置兼容). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |