tuscany-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Thoma <m.th...@b2m-software.de>
Subject using webservices transparent
Date Fri, 05 Jun 2009 11:42:36 GMT

I am trying to integrate an external web service(represented by WSDL) in a SCA component within
the Tuscany platform (Version 1.3.1). The web services is specified as reference in the component
composite, as well as annotated in implementation code(see below). The example that I implemented
was similar to the xml-bigbank example in the tuscany 1.3.1 version. With the examples (see
code below), I got different results. But I want to use a transplant solution provided by
the tuscany framework, where I don't have to use generated stub code(e.g. from axis2 wsdl2java)
in the implementation(client) code.    

As a first step  I developed a external test webservice operated on axis2 server(outside the
tuscany framework).

To use this web service in the tuscany platform, I declared this interface, which represents
external web service(inside tuscany framework):

	public interface TestService{
		Result foo(Request r);

with Result and Request as normal POJO classes.

The binding in client.composite:
	<reference name="testService">
		<binding.ws wsdlElement="http://targetnamespace/#wsdl.port(TestService/TestServiceSoap)"

the corresponding wsdl
	<?xml version="1.0" encoding="utf-8"?>
		<wsdl:definitions targetNamespace="http://targetnamespace/"
		<wsdl:import namespace="http://targetnamespace/"
			location="http://localhost/testservice?wsdl" />

the TestClient (implementation of remotable interface):

	protected TestService testService;
	Request r = new Request();
	Result rs = testService.foo(r);

and everything works fine (no axis,axis2, etc. stuff in client code) ;-)

Now I tried to integrate a foreign external webservice 

(URI: http://www.webservicex.net/WeatherForecast.asmx?wsdl):

The interface:
	public interface WeatherService  {
    	GetWeatherByPlaceNameResult GetWeatherByPlaceName(String placeName) throws java.rmi.RemoteException;

and again with GetWeatherByPlaceNameResult as POJO class.

The binding 
      <reference name="weather">
    	    <binding.ws wsdlElement="http://www.webservicex.net#wsdl.port(WeatherForecast/WeatherForecastSoap)"

the corresponding wsdl
	<?xml version="1.0" encoding="utf-8"?>

		<wsdl:definitions targetNamespace="http://www.webservicex.net"
		<wsdl:import namespace="http://www.webservicex.net"
			location="http://www.webservicex.net/WeatherForecast.asmx?wsdl" />
and the TestClient:

	protected WeatherService weather;
	GetWeatherByPlaceNameResult result = weather.GetWeatherByPlaceName("New York");

but this time the POJO is always empty !

If I changed the interface WeatherService to

	public interface WeatherService  {
	     OMElement GetWeatherByPlaceName(String placeName) throws java.rmi.RemoteException;
I got the data but this is not transparent anymore!

Any ideas why the GetWeatherByPlaceNameResult object is always empty ?

Mit freundlichem Gruß / Kind regards

Martin Thoma

View raw message