1

Adobe Flex Builder WSDL クラスの自動生成機能が奇妙なファイルを生成します。

例えば:

http://ws.cdyne.com/WeatherWS/Weather.asmx?wsdl

インポート後、次のファイルが生成されます。

ArrayOfForecast.as
ArrayOfWeatherDescription.as
ArrayOfWeatherDescription0.as
BaseWeather.as
BaseWeatherSchema.as
Forecast.as
ForecastReturn.as
ForecastReturn0.as
GetCityForecastByZIPResultEvent.as
GetCityForecastByZIP_request.as
GetCityWeatherByZIPResultEvent.as
GetCityWeatherByZIP_request.as
GetWeatherInformationResultEvent.as
GetWeatherInformation_request.as
IWeather.as
POP.as
Temp.as
Weather.as
WeatherDescription.as
WeatherReturn.as
WeatherReturn0.as

最後のファイルにあるこれらの ZERO は何のためのものですか?

これは、3 つのオペレーションを持つサービスの例でした。私の実際の wsdl には、さらに多くのメソッドと型があります。

更新しました

同時に、Java はよりクリーンなクラスのセットを生成します。

Forecast.java
ForecastReturn.java
POP.java
Temp.java
WeatherDescription.java
Weather.java
WeatherLocator.java
WeatherReturn.java
WeatherSoap12Stub.java
WeatherSoap.java
WeatherSoapProxy.java
WeatherSoapStub.java

このような小さなサービスでは目立ちませんが、より多くの操作と型を持つ大規模なサービスでは、何百ものクラスが生成されます。Adobe Flex チームが適切な方法で wsdl クラスの自動生成を行っていることに疑問を持っています。

更新-2

WeatherReturn.as:

 public class WeatherReturn
 {
  /**
   * Constructor, initializes the type class
   */
  public function WeatherReturn() {}

  public var Success:Boolean;
  public var ResponseText:String;
  public var State:String;
  public var City:String;
  public var WeatherStationCity:String;
  public var WeatherID:Number;
  public var Description:String;
  public var Temperature:String;
  public var RelativeHumidity:String;
  public var Wind:String;
  public var Pressure:String;
  public var Visibility:String;
  public var WindChill:String;
  public var Remarks:String;
 }

WeatherReturn0.as:

 public class WeatherReturn0
 {
  /**
   * Constructor, initializes the type class
   */
  public function WeatherReturn0() {}

  public var WeatherReturn:com.cdyne.WeatherReturn;
 }

WeatherReturn.java:

public class WeatherReturn  implements java.io.Serializable {
    private boolean success;
    private java.lang.String responseText;
    private java.lang.String state;
    private java.lang.String city;
    private java.lang.String weatherStationCity;
    private short weatherID;
    private java.lang.String description;
    private java.lang.String temperature;
    private java.lang.String relativeHumidity;
    private java.lang.String wind;
    private java.lang.String pressure;
    private java.lang.String visibility;
    private java.lang.String windChill;
    private java.lang.String remarks;

// Skipped constructors and getter/setter

    private java.lang.Object __equalsCalc = null;
    public synchronized boolean equals(java.lang.Object obj)

    private boolean __hashCodeCalc = false;
    public synchronized int hashCode()

    // Type metadata
    private static org.apache.axis.description.TypeDesc typeDesc =  new org.apache.axis.description.TypeDesc(WeatherReturn.class, true);

    static {
        typeDesc.setXmlType(new javax.xml.namespace.QName("http://ws.cdyne.com/WeatherWS/", "WeatherReturn"));
        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("success");
        elemField.setXmlName(new javax.xml.namespace.QName("http://ws.cdyne.com/WeatherWS/", "Success"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean"));
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
        elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("responseText");
 // More typedesc here ...
    }

    public static org.apache.axis.description.TypeDesc getTypeDesc() {
    public static org.apache.axis.encoding.Serializer getSerializer(
    public static org.apache.axis.encoding.Deserializer getDeserializer(
}

Java の例のメソッド シグネチャのみを残し、getter/setter をスキップしました。

4

0 に答える 0