IBM WebSphere 7 및 8 내의 JAXWS 구현은 비누 핸들러 및 대형 MTOM 부착물과 관련하여 몇 가지 문제가있는 것으로 보입니다. SOAPMessageContext 객체에서 getMessage()가 호출 될 때 모든 첨부 파일 바이너리 내용을 포함한 전체 메시지가 메모리로 읽혀지는 것으로 보입니다. 이로 인해 JVM에서 사용 가능한 메모리가 부족해질 수 있습니다. 들어오는 요청 첨부은 JVM에서 사용 가능한 메모리의 양보다 큰 경우 상기 코드에서 JAXWS 비누 핸들러 대형 MTOM 부착물
@Override
public boolean handleMessage(SOAPMessageContext context) {
SOAPMessage soapMsg = context.getMessage();
...
}
는 context.getMessage()는 메모리 예외에서 초래할 수있다.
이 원치 않는 기능을 트리거하지 않고 SoapHeader 요소에 액세스하려면 어떻게해야합니까? SOAPMessageContext 클래스에는 getHeaders (...) 메소드가 있지만 정확히 어떻게 사용하는지 모르겠습니다. JAXBContext를 위해 무엇을 전달해야하는지 구체적으로 알지 못합니다. 아무도 예제 나 설명을 제공 할 수 있습니까?
는 여기에 또 다른 관련 유래 기사입니다 : JAX-WS SoapHandler with large messages: OutOfMemoryError
Apache CXF 런타임을 사용하여이 작업을 수행하는 방법과 관련하여이 동일한 스택 스레드에 대해 별도의 답변을 게시했습니다. – Kabron