2009-06-12 3 views
0

DetachedCriteriaオブジェクトをjax-wsサービスに渡す方法はありますか?DetachedCriteriaとjax-ws

(私の問題はDetachedCriteriaをはJAX-WSによって必要とされる引数なしのコンストラクタを持っていないということです)

答えて

1

私が言う...それをしないでください。

ウェブサービスとして分離されたものを使用して、それを特定のJava + Hibernateの組み合わせに結びつけるのは残念です。そして、あなたの休止状態の設定への変更はすべてのクライアントに波及する可能性があります。

あなたがCriteriaを模倣Queryオブジェクトのいくつかの並べ替えを作成する方がよいでしょう:

public class Query { 

    public void setTargetClass(...) {} 
    public void addPropertyEquals(...) {} 

    /* more add/set instructions */ 

} 

し、サーバー側で、あなたがCriteriaQueryに変換するクラスを持っています。

+0

私は同意し、同意しません。デカップリングはそれほど余分な作業を必要としない限り、問題ありません。実装がHibernateとjavaから変わるとは思わない。何のためにも、別の抽象レイヤーを作成するのはなぜですか? "休止状態は生き方です" - それで、それを取り除くのは簡単ではありません... – pihentagy

+1

私は、クライアントがHibernateに結合されていると言っていました。理論的にはクライアントプラットフォームにとらわれないWebサービスがありますが、実際にはjavaとhibernateにバインドされています。もしあなたがJavaならではのRMIのようなものを使うのが良いでしょう。 –

0

JAXBはアノテーションベースですので、とそのすべてのサブクラスに注釈を付けてから、JAX-WSインターフェイス(引数なしコンストラクタの要件の最上位)に渡す必要があります。これはほとんどできません:)

しかし、DetachedCriteriaを標準のJavaシリアル化メカニズムを使用してバイトストリームにシリアル化し、リモート側で逆シリアル化できます。私は同意する、このアプローチは、XMLの誤った使用です。

関連する問題