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

나는 클라이언트가 최대 절전 모드로 결합되었다고 말하면서, 당신이 원하는 것이 아닐 수도 있습니다. 이론적으로는 클라이언트 플랫폼에 무관심한 웹 서비스가 있지만 실제로는 java 및 hibernate에 바인딩되어 있습니다. 아마도 자바라면 RMI와 같은 것을 사용하는 것이 더 나을 것입니다. –

0

JAXB는 주석 기반이므로 DetachedCriteria 및 모든 하위 클래스에 주석을 달기 전에 JAX-WS 인터페이스 (인수가없는 생성자 요구 사항 맨 위)에 전달해야합니다. 그게 거의 불가능 :)

그러나 표준 자바 직렬화 메커니즘을 통해 DetachedCriteria을 바이트 스트림으로 직렬화하고 원격 측에서 직렬화 해제 할 수 있습니다. 나는이 접근법이 XML의 오용이라고 동의한다.

관련 문제