2009-06-12 4 views
0

Есть ли способ передать объект DetachedCriteria службе jax-ws?DetachedCriteria и jax-ws

(моя проблема заключается в том, что DetachedCriteria не имеет конструктора без аргументов, которая требуется JAX-WS)

ответ

1

Я хотел бы сказать ... пожалуйста, не делайте этого.

Стыдно использовать что-то как развязанное как веб-службы, а затем привязать его к определенной комбинации Java + Hibernate, не говоря уже об этом, и изменения в конфигурации hibernate, скорее всего, будут пульсировать по всем клиентам.

Ты лучше создавать какое-то Query объекта, который имитирует Criteria:

public class Query { 

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

    /* more add/set instructions */ 

} 

, а затем на стороне сервера у вас есть класс, который преобразует Query к Criteria.

+0

Я согласен и не согласен. Развязка прекрасна, если она не требует большой дополнительной работы. Я не думаю, что реализация изменится с Hibernate и java. Зачем создавать другой слой абстракции просто для ничего? «Hibernate - это образ жизни» - так что легко избавиться от него ... – pihentagy

+1

Я хотел сказать, что клиент соединен с Hibernate, что может и не быть тем, что вы хотите. У вас есть веб-сервис, который теоретически является агностиком клиентской платформы, но на практике связан с java и спящим. Возможно, вам лучше использовать что-то вроде RMI, если вы все java. –

0

JAXB основан на аннотациях, поэтому вам необходимо аннотировать DetachedCriteria и все его подклассы, прежде чем вы сможете передать его через интерфейсы JAX-WS (в верхней части требования конструктора no-arg). Это вряд ли возможно :)

Но вы можете сериализовать DetachedCriteria в поток байтов через стандартный механизм сериализации Java и десериализовать его на удаленной стороне. Я согласен, этот подход является неправильным использованием XML.

Смежные вопросы