0
我創建的文件上傳Web服務:SchemaValidation帶來ClassCastException異常和OutOfMemoryError異常在MTOM上傳文件
@SchemaValidation
@WebService(endpointInterface = "com.ws.server.ExchangeEndpoint")
public class ExchangeEndpoint {
@Override
public String uploadDocument(long residentId, String fileName, String mimeType, DataHandler data) {
try {
StreamingDataHandler dh = (StreamingDataHandler) data; //it cast exception
這裏是接口:
@WebService
@StreamingAttachment(parseEagerly = true, memoryThreshold = 4194304L)
@MTOM
public interface ExchangeEndpoint {
@WebMethod String uploadDocument(@XmlElement(name = "residentId",required = true) long residentId,
@XmlElement(name = "fileName",required = true) String fileName,
@XmlElement(name = "mimeType",required = true) String mimeType,
@XmlElement(name = "data",required = true) @XmlMimeType("application/octet-stream") DataHandler data);
都丟ClassCastException異常例外:
java.lang.ClassCastException: javax.activation.DataHandler cannot be cast to com.sun.xml.ws.developer.StreamingDataHandler
但是,當我刪除@SchemaValidation註釋所有作品f INE!
那麼爲什麼@SchemaValidation會破壞DataHandler對象?
當我嘗試上傳文件的大> 300MB我得到的OutOfMemoryError:
java.lang.OutOfMemoryError: Java heap space at org.jvnet.staxex.ByteArrayOutputStreamEx.readFrom(ByteArrayOutputStreamEx.java:75) at org.jvnet.staxex.Base64Data.get(Base64Data.java:331)
而且也沒有所有@SchemaValidation工作正常!
嘗試增加分配給java機器的內存,看看你是否能夠驗證更大的附件。 – Xargos