2010-05-27 2 views
1

새 프로젝트의 경우 JAX-WS RI를 사용하여 Java에서 웹 서비스를 작성하고 웹 서비스 클라이언트의 경우 PHP를 사용하고자합니다. 서버를 시작 및 URL과 WDSL을 검색Java JAX-WS RI (Webservice)에서 PHP SoapClient 사용

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); 
    } 
} 

:

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; 
    } 
} 

및 웹 서버 :이 예를 들어 웹 서비스를 발견 JAX-WS RI에 대한 작은 튜토리얼에서는

"http://localhost:8080/calculator?wsdl"은 완벽하게 작동합니다. 그러나 PHP에서 웹 서비스를 호출하는 것은 실패합니다.

내 아주 간단한 PHP 호출은 다음과 같습니다

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

그러나 I 중 하나 "치명적인 오류 : 초과 60 초 최대 실행 시간 ..."GET 또는 "catch되지 않은 SOAPFault의 예외 : [WSDL ] SOAP-ERROR : WSDL 구문 분석 : 'http://localhost:8080/calculator?wsdl'... '예외에서로드 할 수 없습니다.

나는 다른 웹 서비스로 PHP SoapClient()를 테스트했으며 문제없이 작동합니다. PHP와 함께 JAX-WS RI에 알려진 문제점이 있습니까? 아니면 보지 못한 웹 서비스에 오류가 있습니까?

나는 this bug report을 찾았지만 PHP 5.3.2로 업데이트해도 문제가 해결되지 않았습니다.

아무에게 말해 줄 수 있습니까? 그건 그렇고, 내 자바 버전은 다음 윈도우 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) 

답변

0

이 시간 초과는 PHP를 보이는 경우 것은 제대로 WSDL의 URL을 확인할 수 없습니다. WSDL Url에 file_get_contents()/curl을 시도 했습니까? 어쩌면 localhost 대신에 IP를 호출하고 이것이 어떻게되는지보십시오.

+0

정말 대단합니다. "localhost"또는 "127.0.0.1"이 시간 초과 된 file_get_contents(). 둘 다 성공한 컬. 그리고 "localhost"가 시간 초과되었지만 "127.0.0.1"인 SoapClient()가 성공합니다. 문제가 어디 있는지 (XAMPP Apache 구성 또는 호스트 파일에있을 수 있음) 이해가되지 않지만 지금은 작동 방법을 알고 있습니다. 감사합니다. – 2ndkauboy

관련 문제