2009-06-12 4 views
0

Gibt es eine Möglichkeit, ein DetachedCriteria-Objekt an einen jax-ws-Dienst zu übergeben?DetachedCriteria und jax-ws

(mein Problem ist, dass DetachedCriteria keinen nicht-arg Konstruktor, die von JAX-WS erforderlich)

Antwort

1

Ich würde sagen ... Bitte nicht tun.

Es ist eine Schande, etwas so entkoppelt wie Web-Services zu verwenden und es dann an eine bestimmte Java + Hibernate-Kombination zu binden, ganz zu schweigen davon und Änderungen an Ihrer Hibernate-Konfig werden wahrscheinlich durch alle Clients.

Du ist besser von irgendeiner Art von Query Objekt zu erzeugen, die die Criteria nachahmt:

public class Query { 

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

    /* more add/set instructions */ 

} 

und dann auf der Server-Seite Sie eine Klasse, die die Query zu einem Criteria umwandelt.

+0

Ich stimme zu und stimme nicht zu. Entkopplung ist in Ordnung, solange es nicht viel zusätzliche Arbeit erfordert. Ich glaube nicht, dass sich die Implementierung von Hibernate und Java ändern wird. Warum einfach eine andere Abstraktionsschicht erstellen? "Hibernate ist ein Weg des Lebens" - so ist es nicht leicht, es loszuwerden ... – pihentagy

+1

Ich wollte sagen, dass der Client auf Hibernate gekoppelt ist, was nicht das sein kann, was Sie wollen. Sie haben einen Web-Service, der in der Theorie eine Client-Plattform-Agnostik ist, aber in der Praxis an Java und Hibernate gebunden ist. Vielleicht ist es besser, etwas wie RMI zu verwenden, wenn Sie alle Java sind. –

0

JAXB ist annotationsbasiert, daher müssen Sie DetachedCriteria und alle seine Unterklassen annotieren, bevor Sie es über JAX-WS-Schnittstellen übergeben können (auf der Oberseite der Anforderung von no-arg-Konstruktor). Das ist kaum machbar :)

Aber Sie können DetachedCriteria in den Strom von Bytes über Standard-Java-Serialisierungsmechanismus serialisieren und auf der Remote-Seite deserialisieren. Ich stimme zu, dass dieser Ansatz eine falsche Verwendung von XML ist.

Verwandte Themen