2011-12-07 2 views
0

私は小さなWebサービスを開発していて、わかりません。私のサービス・エンドポイント・インタフェースの一部ザッツJAX-WS SEIで使用されているクラスのコンストラクタがありません

@WebService 
public interface ScriptStarterInterface { 
    String getResult(@WebParam(name="newFile") FileContainer newFile); 
} 

それのimplemantationはあまりにも、あります。 ;私は、サーバーをstartededとき)
は今、次の例外が発生しました:

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions 
some.package.FileContainer does not have a no-arg default constructor. 

私はFileContainerに引数なしのコンストラクタを追加し、今ではすべてが正常に動作します。私が理解できないことは次のとおりです:なぜこのコンストラクタを提供する必要がありますか?

私が見つけたすべてのオラクルページは、私が1つを提供しなければならないと言っているが、決して理由はない。 :

答えて

1

JAXBは、メソッドを使用してオブジェクトのインスタンスを作成するため、引数を指定することはできません(JAXBは、その例外のパッケージ名)適切なjava.lang.reflect.Constructorインスタンスを取得してそこに適切な引数を渡すことでオブジェクトインスタンスを作成することは可能ですが、それははるかに複雑で、通常非常に洗練されたフレームワーク(例えばSpring)のために予約されています。コードでは単純なAPIを使用しているため、引数なしのコンストラクタが必要です。これは、オブジェクトをプログラムで作成する必要があるほとんどのケースで十分です(JAXBでは複雑なケースは工場オブジェクトを登録することによって処理されます。引数なしのコンストラクタを持ちますが、作成できるのはオブジェクトがより複雑になります)。

関連する問題