2010-03-22 82 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 ......... { 

}