Использование PHP SoapClient с Java JAX-WS RI (Webservice)

Для нового проекта мы хотим создать веб-службу на Java с использованием JAX-WS RI, а для клиента веб-службы мы хотим использовать PHP.

В небольшом учебнике JAX-WS RI я нашел этот пример веб-службы:

package webservice; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style; @WebService @SOAPBinding(style = Style.RPC) public class Calculator { public long addValues(int val1, int val2) { return val1 + val2; } } 

и для веб-сервера:

 package webservice; import javax.xml.ws.Endpoint; import webservice.Calculator; public class CalculatorServer { public static void main(String args[]) { Calculator server = new Calculator(); Endpoint endpoint = Endpoint.publish("http://localhost:8080/calculator", server); } } 

Запуск сервера и просмотр WDSL с URL-адресом « http: // localhost: 8080 / calculator? Wsdl » отлично работает. Но вызов веб-службы из PHP завершается с ошибкой.

Мой очень простой вызов PHP выглядит так:

 $client = new SoapClient('http://localhost:8080/calculator?wsdl', array('trace' => 1)); echo 'Sum: '.$client->addValues(4, 5); 

Но затем я либо получаю «Неустранимая ошибка: максимальное время выполнения на 60 секунд превышено …», либо «Исключение неполадки SoapFault: [WSDL] SOAP-ERROR: Разбор WSDL: Не удалось загрузить из« http: // localhost: 8080 / калькулятор? Wsdl '… "исключение.

Я тестировал PHP SoapClient () с другими веб-службами, и они работают без каких-либо проблем. Есть ли известная проблема с JAX-WS RI в сочетании с PHP, или есть ошибка в моей веб-службе, которую я не видел?

Я нашел этот отчет об ошибке , но даже обновление до PHP 5.3.2 не решило проблему.

Может ли кто-нибудь сказать мне, что делать? И, кстати, моя версия Java, работающая на Windows 7 x64, выглядит следующим образом:

 java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode) 

Если время истечет, похоже, что php не может правильно разрешить URL WSDL. Вы пробовали файл_get_contents () / curl в URL WSDL? Возможно, попробуйте назвать IP вместо localhost и посмотреть, как это происходит.