.NET SOAP Webサービス用のWSDLに基づいてApache Axisを使用して多くのクラスを生成しました。生成されたWebメソッドのメソッドは、org.apache.axis.message.MessageElement[]
の値を持つResult
クラスを返します。代わりに、Webメソッドが返すXMLに完全に対応するResult
クラスが必要です。私は私のウェブのいずれかの方法で返されたXMLのためのXSDに基づいたカップルのJavaクラスを作成するためにJAXを使用し、それら生成されたクラスは、注釈を付けていると、私のXMLに一致する性質を持っている:Axisクラスが非常に汎用的で、XML結果のために生成されたJAXクラスを統合したい
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"content"
})
@XmlRootElement(name = "fields")
public class Fields {
@XmlValue
protected String content;
@XmlAttribute(required = true)
@XmlSchemaType(name = "anySimpleType")
protected String parameters;
public String getContent() {
return content;
}
public void setContent(String value) {
this.content = value;
}
public String getParameters() {
return parameters;
}
public void setParameters(String value) {
this.parameters = value;
}
}
私は上記のFields
のようなJAXクラスをApache Axisが生成したResult
クラスに統合しようとしています。私はこれについてどうやって行くのか分かりません。基づいて、私は何とか私のResult
クラスのコンストラクタ(その唯一のパラメータ)に入ってくるMessageElement[]
を取り、Fields
インスタンスを読み込むことができ
public static org.apache.axis.encoding.Serializer getSerializer(
java.lang.String mechType, java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return new org.apache.axis.encoding.ser.BeanSerializer(_javaType,
_xmlType, typeDesc);
}
public static org.apache.axis.encoding.Deserializer getDeserializer(
java.lang.String mechType, java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return new org.apache.axis.encoding.ser.BeanDeserializer(_javaType,
_xmlType, typeDesc);
}
:Apache Axisの-生成されたクラスは役に立つかもしれない以下のメソッドを持っていますどのようにFields
に@XmlRootElement
などの注釈がついていますか?または、私の.NET WSDLに基づいてApache Axisクラスを生成するときに何かがうまくいかないため、生成されたResult
クラスが非常に一般的なクラスになるでしょうか?
編集:マイケルさんのコメントは私がWSDLをチェックし、それがwsdl:types
でこのビットを持って作られた:
MyResult
の見たすべての言及をだ、と
complexType
/
sequence
/
any
はかなり一般的な見えること
<s:element name="MyResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="MyResult">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
。たぶん私は.NET Webサービスでさらに何かをし、次にAxisでJavaクラスを生成する必要があります。
WSDLはありますか? AXISの世代で使用したことはほとんどありませんが、契約で定義されているものに従ってWSDLを作成します.WSDLに問題のオブジェクトが含まれていると、そこに存在するはずです。 – Michael