2011-09-07 8 views
1

wsimport를 사용하여 생성 된 WSDL 및 클라이언트 코드가 매우 큽니다. jaxws에서 필요한 클라이언트 클래스를로드하는 대신 10 초 ~ 10 초 가량 소요되는 모든 클래스를로드하는 방법/설정을 원합니다. 또한 다른 10 개의 스레드를 사용하여 여러 개의 포트를 만드는 경우 사용되는 메모리가 1.5G까지 쉽게 올라가고 메모리 오류가 발생합니다.jaxws 클라이언트를 지연로드하는 방법

클라이언트 스텁 객체를 느리게로드 할 수 있다면 큰 도움이 될 것입니다.

답변

0

문제는 예상대로 해결할 수 없습니다. 어쨌든 Java는 클래스를 게으른 방식으로로드합니다. JAX-WS와 다르게 작동하지 않으며 특정 경우에 이상하게 작동하지 않습니다. JAX-WS에는 무언가를 변경하고 문제를 해결할 설정이 없습니다.

당신의 실제 문제는 방법, 매개 변수, 결점 등이 무수히 많은 거대한 웹 서비스입니다. 비록 당신의 힙 사용과 메모리 부족 조건이 나머지 부분에 기인한다고 생각하는 경향이 있습니다. JAX-WS 클라이언트가 아닌 애플리케이션에 적용됩니다.

나는 당신의 솔루션이 하나의 웹 서비스를 여러 웹 서비스로 분해하거나 기능 또는 다른 개념으로 분할하는 방향이라고 생각합니다. 그런 다음 정말로 필요한 서비스 (및 고객) 만 사용하게됩니다.

+0

감사합니다. 여기에 문제는 클래스로드에 관한 것이 아니라 각 스레드에 대해 완전히로드되는 portType이 큰 힙을 추가한다는 것입니다. 예, 버그 서비스이고, axis2를 사용할 때 portType 객체를로드 할 때만이 문제가 발생하지 않았습니다. 이제 JAXWS 클라이언트에서 모든 객체를 미리로드하지 않는 방법을 찾고 있습니다. – kiri

+0

이것은 JAX-WS 서비스 프록시가 구조화 된 방식입니다. 너무 많은 상호 연결된 클래스입니다. JAX-WS와 Axis의 클래스 수를 비교하면 어떨까요? – vagelis

+0

클래스 수는 두 가지 모두 같을 수 있지만 걱정할 필요가 있습니다. 주된 관심사는 필요한 다중 포트 유형 (스레드 안전하지 않음)이며 10 개의 스레드에 대해 1GB의 힙을 많이 차지합니다. 따라서 50 개의 쓰레드를 실행하려면 ~ 5GB 힙이 필요합니다. – kiri

관련 문제