1
我有一個@Webservice
需要對輸入進行XSD驗證。 我的WSDL XSD中都需要inputTime
和userInput
的PingInput
。如何判斷SchemaValidation致命錯誤是否正常,仍然可以獲取驗證錯誤的詳細信息?
我裝飾我的web服務與@SchemaValidation
與自定義SchemaValidationErrorHandler
如下。
因爲我的SchemaValidationErrorHandler
方法只做了packet.invocationProperties.put
並且不會引發異常,所以我期望在調用ping時仍然應該進入我的ping方法。
我需要做什麼來啓用此行爲?
的Webservice:
@WebService
@Stateless
@SchemaValidation(handler = SchemaValidationErrorHandler.class)
class MyWebservice {
public PingResponse ping(PingInput input) throws PingFault{
//never gets here when there is a XSD error
Object errorException = messageContext.get(SchemaValidationErrorHandler.ERROR);
...
}
}
SchemaValidationErrorHandler:
import org.xml.sax.SAXParseException;
import com.sun.xml.ws.developer.ValidationErrorHandler;
public class SchemaValidationErrorHandler extends ValidationErrorHandler {
public static final String WARNING = "Warning";
public static final String ERROR = "Error";
public static final String FATAL_ERROR = "Fatal";
public void warning(SAXParseException exception) {
packet.invocationProperties.put(WARNING, exception);
}
public void error(SAXParseException exception) {
packet.invocationProperties.put(ERROR, exception);
}
public void fatalError(SAXParseException exception) {
packet.invocationProperties.put(FATAL_ERROR, exception);
}
輸入:
class PingInput {
long inputTime;//required
String userInput;//required
}
似乎這涉及到我正在使用的jaxws-rt。 2.2.10就像魅力一樣 – rjdkolb