如果我正确理解了 Axis2,我可以构建一个 WebService,然后使用任何与 SOAP 兼容的客户端访问它。
我有一个 java 类,其中包含我在 Eclipse 中编写的几个方法,然后使用 WTP 的 Axis2 插件自动构建了一个服务。
这是我班的方法。
public int test(int i){
return i+2;
}
public Car CarTest(int speed){
return new Car("Biltest", speed);
}
public CarFactoryAdapter getCarFactory(){
carFact.getCars().add(new Car("Bmw", 250));
carFact.getCars().add(new Car("seat", 350));
carFact.getCars().add(new Car("saab", 150));
carFact.getCars().add(new Car("volv", 50));
return new CarFactoryAdapter(carFact);
}
当我尝试使用soapUI 并且Axis2-web 界面已经识别了我的服务的方法时,该代码似乎可以工作。但是,当我尝试使用 PHP 内置的 soapClient 接收参数的方法时,我得到一个未知异常。getCarFactory 方法至少按预期工作,但如果我不能发送参数,它似乎有点残废。
非工作方法调用的示例。
ini_set('soap.wsdl_cache_ttl',0);
$client = new SoapClient("http://192.168.128.162:8080/ComplexWebService/services/CarService?wsdl", array('soap_version' => SOAP_1_2, 'trace' => 1));
$ar['i'] = (int)100;
print_r($client->__soapCall("test",$ar));
我需要确保我选择的 SOA 框架能够与许多平台通信,至少会有 PHP 和 Java 客户端,但如果它可以在例如 .NET 中工作就更好了。