對於新項目,我們希望使用JAX-WS RI在Java中構建Web服務,並且對於Web服務客戶端,我們希望使用PHP。在Java JAX-WS RI中使用PHP SoapClient(Webservice)
在約JAX-WS RI小教程中,我發現這個例子Web服務:
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;
}
}
和Web服務器:
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);
}
}
啓動服務器,並與URL瀏覽WDSL 「http://localhost:8080/calculator?wsdl」完美運作。但是從PHP調用Web服務失敗。
我很簡單的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/calculator?wsdl'...「異常加載。
我已經測試了PHP SoapClient()與其他Web服務,他們工作沒有任何問題。 JAX-WS RI與PHP結合是否存在已知問題,或者我的Web服務中有錯誤,我沒有看到?我發現this bug report,但即使更新到PHP 5.3.2也沒有解決問題。
有誰能告訴我該怎麼辦?順便說一句,在Windows 7上運行的x64我的Java版本是這樣的:
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)
這真的很瘋狂。帶有「localhost」或「127.0.0.1」的file_get_contents()超時。捲曲成功。和「本地主機」的SoapClient()超時,但與「127.0.0.1」成功。 我不明白問題出在哪裏(可能是我的XAMPP Apache配置或主機文件中的東西),但現在我知道如何讓它工作。 非常感謝! – 2ndkauboy 2010-05-27 21:28:04