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)
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)
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.
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.
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
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. –