웹 서비스 (CXF로 완료)에서 반환 할 수있는 2500 가지 가능한 Java 클래스가있는 응용 프로그램이 있습니다.
문제는 2500 클래스의 JAXB 컨텍스트를 만드는 데 오랜 시간과 많은 메모리가 필요하지만 대부분의 시나리오에서는 실제로 200 클래스 만 필요하다는 것입니다. 내가 원하는 것은 클래스가 필요할 때까지 모든 코드 생성 작업을 지연시켜 필요한 클래스에만 지연 처리를 수행하는 것을 알고있는 JAXB 컨텍스트입니다.
현재 구현은 지원하지 않지만 확장하고 싶습니다.
누군가가 가능한 후크 또는 좋은 출발점을 알고 있다면 좋을 것입니다.
또 다른 요점은 엔진이 어느정도 확장 될 수 있는지, moxy 또는 metro입니다. 다음과 같이 사전에 감사합니다,
애브너 EclipseLink JAXB (MOXy)와JAXB 클래스의 지연 처리
2
A
답변
1
당신은 기본 메타 데이터를 초기화 지연을 사용하려면 SESSION_EVENT_LISTENER
속성을 사용할 수 있습니다 :
import java.util.*;
import javax.xml.bind.JAXBContext;
import org.eclipse.persistence.descriptors.ClassDescriptor;
import org.eclipse.persistence.jaxb.JAXBContextProperties;
import org.eclipse.persistence.oxm.XMLDescriptor;
import org.eclipse.persistence.sessions.*;
public class Demo {
public static void main(String[] args) throws Exception {
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(JAXBContextProperties.SESSION_EVENT_LISTENER, new SessionEventAdapter() {
@Override
public void preLogin(SessionEvent event) {
for(Map.Entry<Class, ClassDescriptor> entry : event.getSession().getProject().getDescriptors().entrySet()) {
XMLDescriptor a;
((XMLDescriptor) entry.getValue()).setLazilyInitialized(true);
}
}
});
JAXBContext jc = JAXBContext.newInstance(new Class[] {Root.class}, properties);
}
}
JAXB 프로 참조 구현이 비슷한 속성을 가지고있는 내가 할 수있는 ' 지금 찾으십시오. 답변 당신이 자신의 메일 링리스트에 질문을 게시 할 수없는 하나의 게시물 경우 :
+1
Blaise. 서버 실행 사이에 전체 JAXB 컨텍스트 데이터를 캐시하고 싶기 때문에 클래스를 전혀 스캔 할 필요가 없습니다. 그런 기능을 Moxy를 위해 개발할 수 있습니까? (나는 그것을 할 생각이지만, 시작하기 전에 가능하다는 것을 알고 싶었습니다.) @Blise Doughan –
관련 문제
- 1. JAXB 처리
- 2. JPA Hibernate JAXB 지연 초기화
- 3. 동일한 클래스의 Jaxb 협회
- 4. JAXB unmarshaller의 BOM 처리
- 5. 동일한 클래스의 다른 패키지와 JAXB
- 6. 하위 클래스의 nullPointerException을 던지는 Jaxb
- 7. JAXB 생성 클래스의 컴파일 오류
- 8. JAXB 추상 클래스의 마샬링 arraylist
- 9. 불꽃 총 지연 대 스트리밍 처리 시간 처리 지연
- 10. JAXB 부울 처리 기이하고 JSF
- 11. 지연 코드 처리
- 12. GUI 입력까지 지연 처리
- 13. XNA + lidgren의 지연 처리
- 14. 파이썬에서 지연 처리
- 15. JAXB
- 16. Java에서 프로그램 실행 지연 처리
- 17. 지연 특정 요소의 MathJax 처리
- 18. 아약스의 처리 시간을 지연 시키십시오.
- 19. MessageInterceptor의 일부 지연 처리 메시지
- 20. 선택 옵션 채우기 지연 처리
- 21. 공황 및 지연 기능 처리
- 22. 지연 열거 형 지원 처리
- 23. 부모 클래스의 요소를 JAXB 주석이있는 파생 클래스의 특성으로 변경하려면 어떻게해야합니까?
- 24. JAXB 2의 ObjectFactory 클래스의 핵심은 무엇입니까?
- 25. 추상 클래스의 추상리스트의 Jaxb 비 정렬 화
- 26. jaxb xjc의 중첩 클래스의 이름을 바꾸는 방법
- 27. JAXB
- 28. 클래스의 예외 처리
- 29. ES6 클래스의 컨텍스트 처리
- 30. 다른 클래스의 이벤트 처리
나의 무지 미안하지만 당신은 정적 클래스를 생성하는 (이클립스 웹 서비스 클라이언트 마법사를 사용하여 같은) 또는 dinamically (예 : http://cxf.apache.org/docs/dynamic-clients.html)? – Leo
모든 2500 클래스가 정적으로 (손으로 쓰는) @Leo –