4

Java クラスに変換する必要がある WSDL + XSD があります。それは非常に簡単です-wsimport問題なく処理します。ただし、生成されたクラスに注釈を追加できるようにする必要もあり、それらの注釈には XSD に含まれる情報が含まれている必要があります (特に、xsd:maxLengthまたはxsd:lengthプロパティを参照する必要があります)。

なんで?Bindyを使用して、後でフラット ファイルに変換する予定があるためです。参考までに、Annoxを使用して生成されたクラスにカスタム アノテーションを追加できることは知っていますが、私の知る限り、すべてのアノテーションが同一である、すべてのパラメーターが同一である、または各要素にアノテーションを指定する必要があります。個々に、パラメーターの 1 つの値が要素ごとに異なる必要があることを指定する何らかの方法 (xpath など) と共に注釈を一度指定する方法はありません。

つまり、次のようなスキーマ抽出が与えられた場合

<xsd:element name="smapleRequest">
    <xsd:sequence>
         <xsd:element name="ELEMENT_ONE">
             <xsd:simpleType>
                 <xsd:restriction base="xsd:string">
                     <xsd:length value="3" />
                 </xsd:restriction>
             </xsd:simpleType>
         </xsd:element>
         <xsd:element name="ELEMENT_TWO">
             <xsd:simpleType>
                 <xsd:restriction base="xsd:string">
                     <xsd:maxLength value="8" />
                 </xsd:restriction>
             </xsd:simpleType>
         </xsd:element>
    </xsd:sequence>
</xsd:element>

私はこのように見えるクラスを見たいです:

.
.
.
@FixedLengthRecord
public class SampleRequest {

    @XmlElement(name = "ELEMENT_ONE", required = true)
    @DataField(pos = 1, length=3)
    protected String elementOne;


    @XmlElement(name = "ELEMENT_TWO", required = true)
    @DataField(pos = 4, length=8)
    protected String elementTwo;
    .
    .
    .
}

理想的には、XSD からのすべての情報を JAXB バインディング ファイルに複製することなく、これを実行できるようにしたいと考えています。つまり、できますが、Web サービスメソッドごとに数百の要素があり、数十のメソッドが存在する可能性があるため、非常に速く非常に古くなります。その時点で、おそらく別のツールを使用して、COBOL から XSD および JAXB バインディング ファイルを生成する必要があります。

それで、これが可能かどうか誰にもわかりますか?Anox で何か見逃したことがありますか? それとも、ここで求めすぎですか?

4

2 に答える 2

1

いくつかのオプションがあります。XJC プラグインは 1 つのルートであり、Annox は興味深いようです。しかし、私は専門家ではないので、他の人にあなたと一緒に調べてもらいます.

最初のもので行き詰まった場合に検討することをお勧めするもう 1 つのルートは、生成された JAXB ソースをアノテーション処理(以前は apt ツールで、現在は javac ツールの一部) を介して後処理し、XSD にアクセスして追加することです。その場での注釈。それがすべてのケースでうまくいくかどうかはわかりませんが、あなたが示した例では、対応する XML 要素タイプの特性を読み取るための XPath 式を構築するには、JAXB によって生成された注釈で十分なはずです。あなたのニーズが基本的にフィールド長にあると仮定すると、それはほとんどのユースケースと XPath 式であるはずです。

于 2012-05-29T04:37:29.380 に答える