私はWCF (および C#) の経験が豊富です。しかし、私のプロジェクトでは、サービスを Java で作成する必要があります (Java の経験はありません)。次のようなサービスメソッドを書きたい:
//Java code!
List<BaseEntity> filter(String dbName, String tableName, String where);
署名から、このメソッドが、データベースの呼び出されたテーブルからフィルター処理されたエンティティ (行) のリストを返すことになっていること、および行をフィルター処理する条件であることはほぼ明らかです。ここでの前提は、DB 内のテーブルを表すすべてのクラスが基本クラスから派生しているため、メソッドから任意のテーブルのリストを返すことができるということです。tableName
dbName
where
BaseEntity
filter
私の質問は、
- Java のどのフレームワークで、この種のサービス メソッドを記述できますか?
- 特に、派生クラス オブジェクトを返すことができるように、戻り値の型をベース クラスにすることはできますか?
ServiceKnownTypeAttribute (またはKnownTypeAttribute )を使用して WCF でこれが可能であることはわかっています。
//C# code
[ServiceKnownType(typeof(User))] //User is derived from BaseEntity
[ServiceKnownType(typeof(Vendor))] //Vendor is derived from BaseEntity
[ServiceKnownType(typeof(Customer))] //Customer is derived from BaseEntity
List<BaseEntity> Filter(string dbName, string tableName, string where);
現在、このメソッドは : 型のエンティティを返すことができますがUser
、メソッドの上にリストされVendor
てCustomer
いない他のクラスは返すことができません。
それがどのJavaフレームワークでも可能かどうか疑問に思っています(おそらく異なる構文/アプローチを使用しています)。解決策がある場合は、それが WSDL と互換性があるかどうかも知りたいです (クライアントは C++、Python、または Java の任意の言語で記述できるため、解決策は WSDL と互換性がある必要があると思います)。