2010-03-22 52 views
3

我在嘗試驗證傳入的SOAP消息到我在JBoss AS(v.5.1.0)上運行的服務時遇到了一些困難。Web服務請求忽略基本的WSDL XML元素限制

在我的代碼,我已經明確地設定爲所需的一些領域,如:

public class MyClass { 
    @XmlElement(required=true, nillable=false) 
    private List<myOtherObjects> myList; 
} 

這個要求還體現在WSDL(注意缺少的minOccurs的=「0」):

<xs:element maxOccurs="unbounded" name="myList" type="tns:myOtherObjects" /> 

但是,當我做一個測試soap消息,其myList設置爲空或空時,這些限制被完全忽略,迫使我在服務的應用程序邏輯內手動驗證。

我在互聯網上做了一些搜索,發現在WebLogic上,默認情況下,驗證似乎沒有啓用,儘管它可以通過修改weblogic-webservices.xml文件來啓用。 (http://forums.oracle.com/forums/thread.jspa?threadID=783972&tstart=115

我想知道是否有類似的東西,我必須與JBoss AS在soap消息到達服務之前啓用自動驗證。任何幫助將不勝感激。

奧利弗

+0

值得指出的是'required'和'nillable'不使用的驗證程序。您需要告訴JBoss WebServices根據架構進行驗證,默認情況下不會這樣做。不過,我不知道該怎麼做。 – skaffman 2010-03-22 22:37:11

+0

嗨,謝謝你的回覆!我搜索了更多,似乎我可以使用@SchemaValidation來完成我想要做的事情,但我仍然在確定它將如何工作......如果任何人都可以給我一些這方面的指示,大。 – Oliver 2010-03-23 14:27:14

+0

好的。我通過向服務類添加註釋@SchemaValidation(enabled = true)來驗證工作。它看起來是這樣的: @WebService @SchemaValidation(啓用=真) 公共類MyServices { @WebMethod(動作= 「echoAction」) 公共字符串回聲(@WebParam(NAME = 「字」)串字)拋出 異常{ – Oliver 2010-03-23 18:09:47

回答

0

在您的端口類型:

@SchemaValidation(handler = YourSchemaValidationErrorHandler.class) 
@WebService 
@Stateless 
public class ......... { 

}